Avatar billede subro Nybegynder
19. maj 2005 - 14:09 Der er 11 kommentarer

Uløst validerings spørgsmål

Hej med jer,
Jeg har et problem som går mig meget på, da jeg ikke kan finde ud af løse det selv, eller kan få hjælp til det.
Jeg har et system hvor man kan sende noget data til en database, hvilket jo er meget normalt. Nu vil jeg gerne have lagt noget server-site validering på, så der ikke kan sendes "ulovlige" tegn: {}[]<>. Jeg ved bare ikke hvordan denne validering skal laves, eller hvor den skal ligges. Her er min 2 sider:

Side 1 hvor data bliver tastet ind i input fields og text fields (disse er ikke med i dette eksempel!)

<body leftmargin="0" topmargin="0">
<table class="border" width="779" align="center" border="0">
  <tr>
    <td width="705" align="center">
   
      <form name="data" method="POST" action="vis_data.php">
      <table width="760" border="0" class="p">
        <tr>
          <td width="206" valign="top">Nummer</td>
          <td width="200">
          <input name="refnr1" type="text" size="61" maxlength="11"><br>
          <input name="refnr2" type="text" size="61" maxlength="11"><br>
          <input name="refnr3" type="text" size="61" maxlength="11"></td>
        </tr>
        <tr>
          <td>
          <?php
            if($_POST['Submit'] == "Submit") {
          if(!preg_match('/[][<>{}]/', $input)){
                  // ok
                  // send forms indhold
          }else{
                echo "FEJL: Der findes ulovlige tegn i teksten. Følgende tegn må ikke bruges: [ ] < > { }"
          }
        }
        ?>
        </td>
          </tr>
          <tr>
            <td><input type="submit" name="senddata" class="knap" value="Videre" style="cursor:pointer"></td>
          </tr>
        </table>
            </form>
 
    </td>
  </tr>
</table>
</body>
</html>

Side 2 hvor data bliver udskrevet så brugeren kan se at alt data er med:

<?php
session_start();
?>
<?php
//Alle sessions bliver her reg.
if (isset($_POST["senddata"])){
session_register('refnr1');
$_SESSION['refnr1'] = $_POST["refnr1"];
$refnr1=$_SESSION['refnr1'];

session_register('refnr2');
$_SESSION['refnr2'] = $_POST["refnr2"];
$refnr2=$_SESSION['refnr2'];

session_register('refnr3');
$_SESSION['refnr3'] = $_POST["refnr3"];
$refnr3=$_SESSION['refnr3'];
}
?>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<LINK REL=StyleSheet HREF="stylesheet.css" TYPE="text/css" MEDIA=screen>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
</head>

<body leftmargin="0" topmargin="0">
<table class="border" width="779" align="center" border="0">
  <tr>
    <td width="705" align="center">
   
      <table width="760" border="0" class="p">
        <tr>
      <td colspan="2"><?php
      //All sessions are being updated
      $refnr1=$_SESSION['refnr1'];
      $refnr2=$_SESSION['refnr2'];
      $refnr3=$_SESSION['refnr3'];
      //The data is displayed.
      ?>
      <b>--Søg eksisterende job--</b><br>
          <b><i>Jeg søger job med stillingsnr.:</i></b><br>
      <?php echo $refnr1;?><br>
      <?php echo $refnr2;?><br>
      <?php echo $refnr3;?>
      </td>
        </tr>
    <tr>
          <td colspan="4" valign="top"></td>
        </tr>
        <tr>
          <td colspan="2"><hr></td>
        </tr>
        <tr>
          <td width="68"><input type="button" class="knap" OnClick="history.go(-1);" value="Ret CV" style="cursor:pointer"></td>
      <td width="682" valign="top">Tryk på denne knap for at rette i dit CV</td>
        </tr>
        <tr>
          <td><form action="indsaet.php" method="POST">
          <input type="submit" class="knap" name="sendcv" value="Gem CV" style="cursor:pointer">
          </form></td>
      <td valign="top">Tryk på denne knap for at gemme dit CV</p>
      <?php
      //Checks if querystring is sent back from "indsaat_opretdata.php" to check if the data is inserted correctly into the Database
      if(isset($_GET["test"])){
      echo "<script>"; //Sends the user to the "opret_done page", if data has been sent to the database without errors.
      echo "location.href='confirm.php'";
      echo "</script>";
      } else {
      echo "";
      }
      ?>
      </td>
        </tr>
      </table>
   
    </td>
  </tr>
</table>
</body>
</html>

Er der ikke nogen som kan hjælpe mig, så jeg kan få lukket dette spørgsmål??
Avatar billede Syska Mester
19. maj 2005 - 14:26 #1
hvad er det som mangler? ser da ud til at du har det hele med eller er det bare mig der ikke forstår hvad det er du mangler :-S

Hvis det er html tags de ikke må bruge kan du jo fjerne dem med http://dk.php.net/manual/en/function.strip-tags.php

eller skriv lidt mere om dit problem, synes ikke det er specielt tydeligt
Avatar billede subro Nybegynder
19. maj 2005 - 14:55 #2
Hæ hæ... OK! Det skal være sådan, at brugerne ikke kan skrive følgende tegn i input/text felterne: {}[]<>. Hvis brugeren har skrevet et af disse tegn og trykker på send knappen, skal handlingen annuleres og der skal echo's: Du har skrevet et ulovligt tegn i følgende felt (felt navn)!
Det er for at modvirke at der kan blive sendt snusk til databasen!!
Avatar billede busschou Praktikant
19. maj 2005 - 16:51 #3
hmm vil addslashes ikke gør så der ikke kommer problemer??
http://dk.php.net/addslashes
Avatar billede subro Nybegynder
19. maj 2005 - 16:58 #4
Det kunne da egentlig godt være! Det har jeg ikke lige tænkt over!!! Det kigger jeg da lige lidt på!!
Avatar billede subro Nybegynder
19. maj 2005 - 17:01 #5
Hvor er det addslashes(); skal tilføjes?? Er det hvor mine sessions bliver opdateret på  side 2?
Avatar billede coderdk Praktikant
19. maj 2005 - 17:05 #6
if ( preg_match( '/[\{\}\[\]<>]/', $dintekst ) )
{
  echo 'Der er ulovlige tegn i din tekst.';
}
Avatar billede busschou Praktikant
20. maj 2005 - 00:26 #7
subro >> Jeg vil mene du bør bruge addslashes så snart du henter input fra brugeren.
Jeg er så i tvivl om hvordan mysql reagerer på dette, men jeg vil tro at den ikke går i kludder
Min pointe skulle være at der jo ikke er nogen grund til at benægte tegn hvis folk ønsker bruge dem, når man kan tage højde for det :o)
Avatar billede coderdk Praktikant
20. maj 2005 - 01:02 #8
Der er masser af gode grunde til at nægte folk brugen af visse tegn. Hvad nu hvis det var et brugernavn, som også skulle bruges til en mailadresse? :)
Avatar billede busschou Praktikant
20. maj 2005 - 06:40 #9
coderdk >> Der er masser af gode grunde - hvis der er masser af gode grunde
og Der er ingen gode grunde - hvis der ikke er nogen gode grunde :o)
Hvad nu hvis det blot er et brugernavn/kodeord som ikke skal bruges til andet end logge ind med? Så er der gode grunde til at tillade samtlige tegn for størst mulige antal kombinationer.
Der kan være masser af "hvad nu hvis"´er
Nævnte det blot grundet kommentaren om :
"Det er for at modvirke at der kan blive sendt snusk til databasen!!"
Avatar billede subro Nybegynder
20. maj 2005 - 09:44 #10
Jeg har løst problemet med at bruge htmlspecialchar();, da mine brugere gerne må bruge de specielle tegn som findes, de skal bare ikke opfører sig som kode hvis de blive brugt... hvis I kan følge mig!?!
Avatar billede busschou Praktikant
20. maj 2005 - 09:57 #11
Jeg kan godt følge dig :o) men ved ikke om jeg skal svare
Så det gør jeg..så afviser du blot hvis det er :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester