当我按sigup按钮运行时,该网址给了我sql错误。 当我检查sql错误的写入位置时,我找不到任何错误吗?
这是我的signup.inc.php
<?php
// isset gör att man endast kan hämta info genom knappen signup annars så kommer error meddelande
if (isset($_POST['signup-submit'])){
require 'dbh.inc.php';
$username = $_POST['uid'];
$email = $_POST['mail'];
$password = $_POST['pwd'];
$passwordRepeat = $_POST['pwd-repeat'];
// om username, email, password eller passwordrepeat inte är ifyllt så kommer error
if (empty($username) || empty($email) || empty($password) || empty($passwordRepeat)){
header("Location: ../signup.php?error=emptyfields&uid=".$username. "&mail=".$email);
exit();
}
// checkar om mail o username är rätt, om man inte fyllt i rätt mail eller username så får man ingenting skickat tillbaka
else if (!filter_var($email, FILTER_VALIDATE_EMAIL) && !preg_match("/^[a-zA-Z0-9]*$/", $username)){
header("Location: ../signup.php?error=invalidmail&uid");
exit();
}
// kollar om mail är rätt och skickar tillbaka username när man blir tillbakaskickad
else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
header("Location: ../signup.php?error=invaliduid&mail". $username);
exit();
}
// kollar om användarnamn är rätt, får bara vara tecken inom ramen a-zA-Z0-9, skickar tillbaka mail.
else if(!preg_match("/^[a-zA-Z0-9]*$/", $username)){
header("Location: ../signup.php?error=invaliduid&mail". $email);
exit();
}
// kollar om lösenordet matchar repeterade lösenordet, skickar tillbaka mail och username
else if($password !== $passwordRepeat){
header("Location: ../signup.php?error=passwordcheckuid".$username. "&mail=". $email);
exit();
}
// kollar om användarnamet finns i databasen, om det finns kommer error. ? frågetecknet i slutet på första raden användes som placeholder itsället för att folk ska kunna skriva sql kod i username field och förstöra databasen.
else{
$sql = "SELECT uidUsers FROM users WHERE uidUsers=?";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)){
header("Location: ../signup.php?error=sqlerror");
exit();
}
// detta gör att informationen skickas till databasen för att kunna kolla om det matchar
else{
mysqli_stmt_bind_param($stmt, "s", $username);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$resultCheck = mysqli_stmt_num_rows($stmt);
if ($resultCheck > 0){
header("Location: ../signup.php?error=usertaken&mail=".$email);
exit();
}
else {
$sql = "INSERT INTO users (uidUsers, emailUsers, pwdUsers) VALUES (?, ?, ?)";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)){
header("Location: ../signup.php?error=sqlerror");
exit();
}
else {
$hashedPwd = password_hasg($password, PASSWORD_DEFAULT);
mysqli_stmt_bind_param($stmt, "sss", $username, $email, $hashedPwd);
mysqli_stmt_execute($stmt);
header("Location: ../signup.php?signup=success");
exit();
}
}
}
}
mysqli_stmt_close($stmt);
mysqli_close($conn);
}
else {
header("Location: ../signup.php");
exit();
}
and this is my dbh.inc.php
<?php
//om man jobbar i ex vis wordpress så ska detta vara en databas i wordpress
$servername = "localhost";
$dBUsername = "root";
$dBPassword = "";
$dBName = "loginsystem";
$conn = mysqli_connect($servername, $dBUsername, $dBPassword, $dBName);
if (!$conn){
die("Connection failed:".mysqli_connect_error());
}
?>