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.
** 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
** 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