Überprüfen, ob die URL manipuliert wurde

  • Ich versuche sicherzustellen, dass der Parameter einer GET-Methode von Seite 2 (die das Ergebnis anzeigt) nicht von anderen in der URL (den Variablen hinter dem Fragezeichen) geändert wird, indem Sie die Benutzer sicher stellen Klicken Sie auf die Schaltfläche "Senden" auf Seite 1 (die das Formular enthält).

    Der Professor bittet uns, isset() zu verwenden, um diese Anforderung zu implementieren

    Hier die Anmeldeseite: (page1.php)

     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional   ...> <html
     xmlns="http://www.w3.org/1999/xhtml"> <head>   <title>Login
     Page</title> </head>
    
     <body> 
     

          <label>User ID:</label>
         <input type="text" name="uid">
         <br />
         <input type="submit" value="SubmitCredentials" name="SubmitCredentials"/>
          <br />
         </form> </body> </html>
     

    Und dies ist die zweite Seite: (page2.php)

     <?php
        // get the data from the form
        $uid = $_GET['uid'];
    
        if(!isset($_GET['SubmitCredentials'])){
            include('error.html');
            exit(); 
          }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional
        ...>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>HELLO</title>
    </head>
    <body>
            <label>Hello,</label>
            <span><?php echo $uid; ?></span><br />
    
    </body>
    </html>
     

    Die Anweisung if scheint jedoch nicht zu funktionieren. Es soll die Seite an error.html weiterleiten, wenn ich die Variable uid in der URL ändere (z. B. wenn ich die URL in http://localhost/1/page2.php?uid=admin ändere), dies aber nicht ist. Wie kann ich das Problem beheben?

    PS: Ein relevantes Tutorial, das ich in Google & gt; & gt; & gt; http://www.homeandlearn.co.uk/php/php4p7.html

    22 November 2011
    user1058806
3 answers
  • Versuchen Sie:

     if (! isset ($ _ GET ['SubmitCredentials'])) {
     header ('Location: error.html'); 
    } 
     
     
    22 November 2011
    Sudhir Bastakoti
  • Isset ist auf Arrays nicht sicher. Vergleichen Sie stattdessen den Operator ===:

     if(!($_GET['SubmitCredentials'] === 'SubmitCredentials')) {
      include('error.html');
      exit(); 
    }
     
    22 November 2011
    FeeJai
  • Seite 1:

     <form method="GET" action="...">
        <input>
        <input>
        <input>
    </form>
     

    URL einreichen:

     http://localhost/1/page2.php?SubmitCredentials=SubmitCredentials&uid=admin&i_like_php=yes&...
     
    22 November 2011
    Peter