2016-08-04 4 views
1

Ich habe einige Probleme mit diesem Code. Ich verbinde mich mit einer SQL-Datenbank und es verbindet, aber die Post-Funktion scheint nicht zu funktionieren. Wenn ich ein Element überprüfe und mir die Netzwerkverbindungen anschaue, poste es eine Sache, aber nicht die anderen zwei Dinge. Wenn mir jemand helfen könnte, wäre das großartig.Post Funktion funktioniert nicht wie erwartet mit Datenbank

Danke,

Ben

<?php 

$connection = mysql_connect("localhost", "root", "password") or die("There is no connection to the server"); 
mysql_select_db("tutorial", $connection) or die("Couldn't connect to database"); 

if ($_POST['login']){ 
    if ($_POST['username'] && $_POST['password']){ 
     $username = mysql_real_escape_string($_POST['username']); 
     $password = mysql_real_escape_string(hash("sha512", $_POST['password'])); 
     $user = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `Username`='$username'")); 
     if ($user == '0'){ 
      die("That username does not exist. <a href='index.php'>&larr; Back</a>"); 
      echo "<h1> Test </h1>"; 
     } 
     if ($user['Password'] != $password) { 
      die("Incorrect password! <a href='index.php'>&larr; Back</a>"); 
      echo "<h1> Test </h1>"; 
     } 
     $salt = hash("sha512", rand() . rand() . rand()); 
     setcookie("c_user", hash("sha512", $username), time() + 24 * 60 * 60, "/"); 
     setcookie("c_salt", $salt, time() + 24 * 60 * 60, "/"); 
     $userID = $user['ID']; 
     mysql_query("UPDATE `users` SET `Salt`='$salt' WHERE `ID`='$userID'"); 
     die("You are now logged in as $username"); 
    } 
} 

echo " 
    <body style='font=family: verdana, sans-serif;'> 
     <div> 
      <h1>Login to Access Coins</h1> 
      <br /> 
      <form action='' method='post'> 
       <table> 
        <tr> 
         <td> 
          <b> Username </b> 
         </td> 
         <td> 
         <input type='text' name='username' style='padding: 6px;' /> 
         </td> 
        </tr> 
        <tr> 
         <td> 
          <b>Password</b> 
         </td> 
         <td> 
          <input type='password' name='password' style='padding: 6px;' /> 
         </td> 
        </tr> 
        <tr> 
         <td> 
          <input type='submit' value='Login' /> 
         </td> 
        </tr> 
       </table> 
      </form> 
      <br /> 
      <h6> 
       Need an account? <a href='register.php'>Click Here 
      </h6> 
     </div> 
    </body> 

"; 
+0

"Post-Funktion scheint nicht zu funktionieren" Was bedeutet das? – developerwjk

+0

Ich stelle Ihnen einen neuen Freund vor, der Ihnen jedes Mal behilflich sein wird, wenn Sie einen falschen oder fehlenden Parameter erhalten: 'print_r ($ _ POST);' Sie werden sehen, ob die Werte korrekt an Ihre Seite übergeben werden. – technico

+0

@developerwjk: Wir müssen sagen "Post-Methode scheint nicht zu funktionieren", ist es richtig? – technico

Antwort

1

Ihr Problem aus der Tatsache, dass Sie $ _POST erwarten kommen [ 'login'] definiert werden, und stützen sich auf den Benutzer zu protokollieren. Als Login nicht definiert ist, können Sie einfach entfernen (oder zur weiteren Verwendung Kommentar):

if ($_POST['login']){ 

und die entsprechenden

} 

Ein anderer Weg, dies zu lösen, zu setzen wäre:

<input name="login" type ="hidden" value=""> 

in Ihrem Formular für diesen Wert kann übergeben werden.

+0

Vielen Dank! Ich habe versucht, den ganzen Tag zu lösen! @technico – benpete420

Verwandte Themen