2017-06-19 5 views
0

Ich habe ein kleines Problem. Ich habe ein Registrierungsformular. Es funktioniert fast perfekt, ich kann den Wert der Eingabefelder überprüfen, ich kann überprüfen, ob wir den gleichen Benutzernamen in der Datenbank haben, aber wenn alles in Ordnung ist, kann ich die Daten nicht an meine Datenbank senden. Ich benutze es als Administrator/root, also habe ich die Privilegien. Was ist das Problem? Bitte, hilf!Ich kann keine Daten von Eingabefeldern an meine MySQL-Datenbank senden

<?php  
    // declaring variables from input fields 
    $email = $_POST['email']; 
    $username=$_POST['username']; 
    $password=$_POST['password']; 
    $password2=$_POST['password2']; 


    function registration ($username, $email, $password) { 
     //new user registering 
     //return true or errormessage 

     //connecting to database, YEAH IT WORKS! 
     $connection = connecting_to_db(); 

     //checking unique of username and IT WORKS! 
     $result = $connection->query("SELECT * FROM user WHERE username='".$username."'"); 

     if (!$result) { 
     throw new Exception ('We couldnt query. Sorry.'); 
     } 
     if ($result->num_rows>0) { 
     throw new Exception ('We have already this username! Choose something else!'); 
     } 
     // if it is OK send it to the DB AND THIS IS NOT WORKING :-(
     $result = $connection->query("INSERT INTO user VALUES'".$username."', shal('".$password."'), '".$email."')"); 

     // I get alwasy this way and get this message. 
     if (!$result) { 
     throw new Exception ('We couldnt save your datas in our database. Try it later!'); 
     } 
     return true; 
    } 

?> 
+0

*** Sie sollten nicht [SHA1 Passwort Hashes] (https://konklone.com/post/why-google-is-hurringing-the-web-to-kill-sha-1) *** oder *** [MD5 password hashes] (http://security.stackexchange.com/questions/19906/is-md5-considered-insecure) *** und Sie sollten PHP [eingebaute Funktionen] (http: //jayblanchard.net/proper_password_hashing_with_PHP.html), um die Passwortsicherheit zu handhaben. Stellen Sie sicher, dass Sie Passwörter nicht umgehen (http://stackoverflow.com/q/36628418/1011527) oder verwenden Sie vor dem Hashing einen anderen Bereinigungsmechanismus. Wenn Sie dies tun, * ändert * das Passwort und verursacht unnötige zusätzliche Codierung. –

+0

[Little Bobby] (http://bobby-tables.com/) sagt *** [Ihr Skript ist für SQL Injection Attacks gefährdet.] (Http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php) ***. Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! –

+0

dd [Fehler melden] (http://stackoverflow.com/questions/845021/how-to-get-useful-error-messages-in-php/845025#845025) an die Oberseite Ihrer Datei (en) _while testing_ direkt nach dem Öffnen PHP-Tag zum Beispiel ' RiggsFolly

Antwort

0

Es sieht so aus, als ob Sie shal (Buchstabe L) anstelle von sha1 (# one) in Ihrer Einfügeabfrage haben. Drucken Sie Ihr Ergebnis aus der Abfrage aus und Sie sollten Ihr Problem sehen.

+0

Ja, das stimmt, danke. Du hast ein UPlike. Aber unglücklicherweise habe ich immer noch das Problem. – Newbie

+0

Bitte nicht __Rollen Sie Ihr eigenes Passwort hashing. PHP bietet [ 'password_hash()'] (http://php.net/manual/en/function.password-hash.php) und [ 'password_verify()'] (http://php.net/manual/ en/function.password-verify.php) benutze sie bitte. Und hier sind einige [gute Ideen über Passwörter] (https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet) Wenn Sie eine PHP-Version vor 5.5 verwenden [gibt es ein Kompatibilitäts-Pack hier] (https : //github.com/ircmaxell/password_compat) – RiggsFolly

Verwandte Themen