2016-12-08 5 views
0

ich eine Webseite bin zu schaffen, die ein Register und Login-Seite erfordert jedoch habe ich folgende Fehlermeldung gegeben worden:Warnung: mysqli_query() erwartet mindestens 2 Parameter, 1 gegeben ... register.php Linie 64

Achtung: mysqli_query() erwartet mindestens zwei Parameter, 1 in C gegeben: \ Abyss Web Server \ htdocs \ Projekt \ register.php auf der Leitung 64

Hier ist mein Code für register.php

<?php 
ob_start(); 
session_start(); 
if(isset($_SESSION['user'])!=""){ 
    header("Location: home.php"); 
} 
include_once 'connect_db.php'; 

$error = false; 

if (isset($_POST['btn-signup'])) { 

    // clean user inputs to prevent sql injections 
    $name = trim($_POST['name']); 
    $name = strip_tags($name); 
    $name = htmlspecialchars($name); 

    $email = trim($_POST['email']); 
    $email = strip_tags($email); 
    $email = htmlspecialchars($email); 

    $pass = trim($_POST['pass']); 
    $pass = strip_tags($pass); 
    $pass = htmlspecialchars($pass); 

    // basic name validation 
    if (empty($name)) { 
     $error = true; 
     $nameError = "Please enter your full name."; 
    } else if (strlen($name) < 3) { 
     $error = true; 
     $nameError = "Name must have atleast 3 characters."; 
    } else if (!preg_match("/^[a-zA-Z ]+$/",$name)) { 
     $error = true; 
     $nameError = "Name must contain alphabets and space."; 
    } 

    //basic email validation 
    if (!filter_var($email,FILTER_VALIDATE_EMAIL)) { 
     $error = true; 
     $emailError = "Please enter valid email address."; 
    } else { 
     // check email exist or not 
     $query = "SELECT userEmail FROM users WHERE userEmail='$email'"; 
     $result = mysqli_query($dbc, $query); 
     $count = mysqli_num_rows($result); 

     if($count!=0){ 
      $error = true; 
      $emailError = "Provided Email is already in use."; 
     } 
    } 
    // password validation 
    if (empty($pass)){ 
     $error = true; 
     $passError = "Please enter password."; 
    } else if(strlen($pass) < 6) { 
     $error = true; 
     $passError = "Password must have atleast 6 characters."; 
    } 

    // password encrypt using SHA256(); 
    $password = hash('sha256', $pass); 

    // if there's no error, continue to signup 
    if(!$error) { 

     $query = "INSERT INTO users(userName,userEmail,userPass) VALUES('$name','$email','$password')"; 
     $res = mysqli_query($query); 

     if ($res) { 
      $errTyp = "success"; 
      $errMSG = "Successfully registered, you may login now"; 
      unset($name); 
      unset($email); 
      unset($pass); 
     } else { 
      $errTyp = "danger"; 
      $errMSG = "Something went wrong, try again later..."; 
     } 

    } 


} 

?>

Die Funktion mysqli_num_rows() gibt die Anzahl der Zeilen in einer Ergebnismenge zurück. Wenn also keine Zeilen zurückgegeben werden oder Zeilen falsch sind, wird FALSE zurückgegeben. Fehler wird zurückgegeben, wenn mysqli_query einen booleschen Wert zurückgibt, der nur auftritt, wenn die Abfrage fehlgeschlagen ist.

Ich bin mir nicht sicher, wie ich diesen Fehler korrigieren würde und brauchte eine Anleitung, danke.

+0

** WARNUNG **: Bei der Verwendung von 'mysqli' Sie [parametrisierte Abfragen] verwenden sollten (http: // PHP. net/manual/mysqli.quickstart.prepared-statements.php) und ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php) um Benutzerdaten hinzuzufügen Ihre Anfrage. ** Verwenden Sie ** NICHT ** manuelles Escapen und String-Interpolation oder Verkettung, um dies zu erreichen, weil Sie schwerwiegende [SQL-Injektionsfehler] (http://bobby-tables.com/) erstellen werden, wenn Sie jemals vergessen, etwas richtig zu entkommen. 'htmlspecialchars' ist in keiner Weise ** eine geeignete Escaping-Methode für SQL und wird ansonsten gültige Daten verfälschen. – tadman

+0

** WARNUNG **: Das Schreiben Ihrer eigenen Zugriffskontrollschicht ist nicht einfach und es gibt viele Möglichkeiten, es schwer falsch zu machen. 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 robustes [Authentifizierungssystem] (https://laravel.com/docs/5.2/authentication). Am absolutesten folgen Sie [empfohlenen Best Practices für die Sicherheit] (http://www.phptherightway.com/#security) und ** speichern Sie nie Passwörter mit einem schwachen ungesalzenen Hash **. – tadman

Antwort

0

Sie müssen den Verbindungspunkt, um mysqli_query() auf der Leitung 64 passieren:

$res = mysqli_query($dbc, $query); 
Verwandte Themen