Avatar billede subro Nybegynder
17. maj 2005 - 09:33 Der er 8 kommentarer og
1 løsning

Validering i PHP

Hej,
Jeg har en side med en masse sessions hvilke er blevet sendt fra en tidligere side via form fields (her har jeg kun taget 3 af dem med).
Nu vil jeg gerne validere at der ikke er nogle forbudte tegn i disse sessions: < > { } [ ], inden jeg sender dem til databasen. Jeg er bare i tvivl om hvordan jeg laver denne validering.
Her er min side:

<?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_opretcv.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 nogle der har mod på at hjælpe mig??
Avatar billede subro Nybegynder
17. maj 2005 - 09:34 #1
Det skal selvfølgelig være serversite validering (PHP)!
Avatar billede ksoren Nybegynder
17. maj 2005 - 10:00 #2
følgende burde gøre det..

if(!preg_match('/[][<>{}]/', $input)){
    // ok
}else{
    // fejl i input
}
Avatar billede subro Nybegynder
17. maj 2005 - 10:03 #3
Hvor i koden ville du smide dette?? Det skal jo være sådan at hvis der er nogle ulovlige tegn, skal brugeren også have det at vide, dvs. der skal echo's noget fejltekst.
Avatar billede Slettet bruger
17. maj 2005 - 10:09 #4
Du kan gøre det fra den side hvor forminformationen sendes.

if($_POST['Submit'] == "Submit") {
  if(!preg_match('/[][<>{}]/', $input)){
      // ok
      // send forms indhold
  }else{
      // fejl i input
  }
}
Avatar billede subro Nybegynder
17. maj 2005 - 10:20 #5
Lige nu har jeg en form som siger: <form name="form1" method="POST" action="vis_data.php">. Hvordan får jeg sendt den form fra valideringen? Altså dér hvor du skriver //ok send forms indhold?
Avatar billede subro Nybegynder
17. maj 2005 - 12:23 #6
Her den side som data sendes fra, altså den side med form fields:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<LINK REL=StyleSheet HREF="stylesheet.css" TYPE="text/css" MEDIA=screen>
</head>

<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>

<table width="100%">
<tr>
  <td align="center" class="copyright">Copyright &copy; 2005 InSource Gruppen</td>
</tr>
</table>
</body>
</html>

Jeg har ikke taget alle mine fields med (jeg har også en del textareas som også skal indgå i den validering!)
Jeg har prøvet at implementere det som pacroon postede. Men det hænger ikke helt sammen, for hvordan får jeg sendt dataen?? Lige nu gør valideringen jo ingenting!
Avatar billede subro Nybegynder
17. maj 2005 - 18:50 #7
Er der slet ingen der har nogle foreslag???
Avatar billede Slettet bruger
17. maj 2005 - 19:31 #8
Så kan du gøre det på flere måder.

Enten kan du vælge at lave valideringen på den side som formen er på, eller også må du gøre det i vis_data.php.
Avatar billede subro Nybegynder
19. maj 2005 - 14:08 #9
Hmm.
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