У меня есть этот HTML форму:Подтверждение пароля не работает
<form class="signup-form" action="action/register.php" method="post">
<input type="text" class="input" name="user" id="user_name" autocomplete="off" placeholder="Username" required="true">
<input type="text" class="input" name="nome" id="name" autocomplete="off" placeholder="Nome" required="true">
<input type="password" class="input" name="pass" id="user_pass" autocomplete="off" placeholder="Password" required="true">
<input type="password" class="input" name="cpass" id="user_cpass" autocomplete="off" placeholder="Confirme a Password" required="true">
<input type="submit" class="button" name="submit" value="Sign Up">
</form
и действие/register.php как это:
global $db;
$username=trim($_POST['user']);
$nome=trim($_POST['nome']);
$password=trim($_POST['pass']);
$cpassword=trim($_POST['cpass']);
if(strcmp($password,$cpassword)!==0) {
echo "<script> window.location.assign('../errors/password_error.php'); </script>";
//header('Location: ../errors/password_error.php');
}
$stmt = $db->prepare('SELECT username FROM utilizador');
$stmt->execute();
$result = $stmt->fetchAll();
foreach ($result as $row) {
if($row['username'] === $username){
header('Location: ../errors/username_error.php');
}
}
, когда я ввожу имя пользователя, уже существует, он успешно перенаправляет меня на ошибки/username_error.php, но когда я вставляю cpass, отличный от pass, он принимает его, когда он не должен (я пробовал bo го с эхом и с заголовком).
Любые предложения?
PS: Я уже пробовал, если ($ пароль == $ cpassword!)
PPS: Я думаю, что я решил, но я не понимаю, почему, не так ли? это все register.php, что у меня было:
<?php
include_once('../database/connection.php'); // connects to the database
session_start(); // starts the session
function NewUser()
{
global $db;
$username=trim($_POST['user']);
$nome=trim($_POST['nome']);
$password=trim($_POST['pass']);
$cpassword=trim($_POST['cpass']);
if($password !== $cpassword) {
//echo "<script> window.location.assign('../errors/password_error.php'); </script>";
header('Location: ../errors/password_error.php');
}
else{
$stmt = $db->prepare('SELECT username FROM utilizador');
$stmt->execute();
$result = $stmt->fetchAll();
foreach ($result as $row) {
if($row['username'] === $username){
header('Location: ../errors/username_error.php');
}
}
$img = rand(0,10);
$stmt = $db->prepare("INSERT INTO utilizador (username,nome,password,img) VALUES (:username,:nome,:password,:img)");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':password', $password);
$stmt->bindParam(':img', $img);
if($stmt->execute()){
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $username;
$_SESSION['img'] = $img;
header('Location: ../main.php');
}
}
}
if(isset($_POST['submit'])){
NewUser();
}
?>
я изменил его на это (избавившись от функции), и это сработало!
<?php
include_once('../database/connection.php'); // connects to the database
session_start(); // starts the session
if(isset($_POST['submit'])){
global $db;
$username=trim($_POST['user']);
$nome=trim($_POST['nome']);
$password=trim($_POST['pass']);
$cpassword=trim($_POST['cpass']);
if($password !== $cpassword) {
//echo "<script> window.location.assign('../errors/password_error.php'); </script>";
header('Location: ../errors/password_error.php');
}
else{
$stmt = $db->prepare('SELECT username FROM utilizador');
$stmt->execute();
$result = $stmt->fetchAll();
foreach ($result as $row) {
if($row['username'] === $username){
header('Location: ../errors/username_error.php');
}
}
$img = rand(0,10);
$stmt = $db->prepare("INSERT INTO utilizador (username,nome,password,img) VALUES (:username,:nome,:password,:img)");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':nome', $nome);
$stmt->bindParam(':password', $password);
$stmt->bindParam(':img', $img);
if($stmt->execute()){
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $username;
$_SESSION['img'] = $img;
header('Location: ../main.php');
}
}
}
?>
вы можете проверить пароль и пароль, используя js. почему вы пытаетесь использовать скрипт на стороне сервера? –
@VigneswaranS, я не знаю, как использовать js –
Если вы добавляете 'var_dump ($ _ POST)', являются ли значения 'pass' и' cpass' одинаковыми? Вы должны быть в состоянии '==' без 'strcmp()'. –