2017-05-30 1 views
0

Wenn ich versuche, um sich zu registrieren, und ich weiß, dass alle Post Dinge funktionieren, sagt es Benutzer nicht

<?php 
session_start(); 
$_SESSION['message'] = ''; 

$mysqli = new mysqli("192.99.56.236", "root", "fakepass", "thesucc"); 

if($_SERVER['REQUEST_METHOD'] == 'POST') { 
//two passwords maching 
if($_POST['password'] == $_POST['confirmpassword']) { 

    $username = $mysqli->real_escape_string($_POST['username']); 
    $email = $mysqli->real_escape_string($_POST['email']); 
    $password = md5($_POST['password']); //md5 is hash 
    $avatar_path = $mysqli->real_escape_string('images/'.$_FILES['avatar']['name']); 

    //make sure fike is image 
    if (preg_match("!image!", $_FILES['avatar']['type'])) { 
     //copy image to images folder 
     if (copy($_FILES['avatar']['tmp_name'], $avatar_path)) { 

      $_SESSION['username'] = $username; 
      $_SESSION['avatar'] = $avatar_path; 

      $sql = "INSERT INTO users (username, email, password, avatar) " 
       . "VALUES ('$username', '$email', '$password', '$avatar_path')"; 

      //if the query success, redirect to welcome.php, done! 
      if ($mysqli->query($sql) === true) { 
       $_SESSION['message'] = "Registration succesfull! Added $username to the database!"; 
       header("location: welcome.php"); 
      } else { 
       $_SESSION['message'] = "User could not be created!"; 
      } 

     } else { 
      $_SESSION['message'] = "File upload failed!"; 
     } 
    } else { 
     $_SESSION['message'] = "Please only upload image files!"; 
    } 
} else { 
    $_SESSION['message'] = "Passwords do not match!"; 
} 
} 

?> 

erstellt é könnte dies ist mein Code, der MySQL-Info geändert wird, aber ich weiß, dass ich es hatte Korrekt habe ich oft überprüft. Ich habe durch eine Menge sah, und ich kann nicht scheinen, um herauszufinden, was das Problem ist, aber ich denke, ive es verengt, um etwas nach unten zu tun mit den Variablen in der Lage zu schreiben nicht in mysql

+2

** WARNUNG **: Schicht Ihre eigene Zugangskontrolle zu schreiben ist nicht einfach, und es gibt viele Möglichkeiten, die es falsch schwer zu bekommen. Bitte schreiben Sie nicht Ihr eigenes Authentifizierungssystem, wenn Sie ein modernes [Entwicklungsframework] (http://codegeekz.com/best-php-frameworks-for-developers/) wie [Laravel] (http://laravel.com/) verfügt über ein integriertes [Authentifizierungssystem] (https://laravel.com/docs/5.4/authentication). Am absolutesten folgen Sie [empfohlene Best Practices für die Sicherheit] (http://www.phptherightway.com/#security) und ** speichern Sie niemals Passwörter mit einem nutzlos schwachen Hash wie SHA1 oder MD5 **. – tadman

+2

** WARNUNG **: Wenn Sie 'mysqli' verwenden, sollten Sie [parametrisierte Abfragen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) und [' bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), um Benutzerdaten zu Ihrer Abfrage hinzuzufügen. ** Verwenden Sie ** NICHT manuelle Entschlüsselung und String-Interpolation oder Verkettung, um dies zu erreichen, da Sie schwerwiegende [SQL-Injektionsfehler] (http://bobby-tables.com/) erstellen werden. Versehentlich ungenutzte Daten sind ein ernstes Risiko. Die Verwendung von gebundenen Parametern ist weniger ausführlich und einfacher zu überprüfen, um zu überprüfen, ob Sie es richtig machen. – tadman

+0

Mehr als wahrscheinlich hat etwas mit Ihrer Verbindung zu tun (es wird abgelehnt usw.). Setzen Sie Folgendes nach Ihrer Verbindung, um den Fehler zu bestimmen (falls es einen gibt): 'if ($ mysqli-> connect_error) sterben ('Connect Fehler ('. $ Mysqli-> connect_errno. ')'. $ Mysqli-> connect_error); ' – Enstage

Antwort

-3

Ändern Sie diese Zeile:

if ($mysqli->query($sql) === true) 

um dies:

if ($mysqli->query($sql)) 
+0

hat dies immer noch den Fehler – OverratedCoding

+0

Wenn Sie sich selbst hier sehen möchten, ist ein Link https://thesucc.000webhostapp.com/form.php – OverratedCoding

Verwandte Themen