В чем ошибка в этом PHP-коде?

#php #mysql #login

#php #mysql #аутентификация

Вопрос:

У меня есть система регистрации пользователей, но она пуста. Это скрипт, который я использую в forum.modxpertz.tk . Сначала это сработало, но сейчас ничего не показывает. Вот код.

 <?php
$servername = "localhost";
$username = "root";
$password = "";

// Create connection
$conn = mysqli_connect($servername, $username, $password);
mysqli_select_db($conn,'login');

// Check connection
if (!$conn) {
     die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT userid FROM login";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
    $reguserid=$row["userid"];
}

$userid =  mysqli_real_escape_string($conn, $_POST['userid']);
$pswrd =  mysqli_real_escape_string($conn, $_POST['pswrd']);
$fname =  mysqli_real_escape_string($conn, $_POST['fname']);
$lname =  mysqli_real_escape_string($conn, $_POST['lname']);
$gender =  mysqli_real_escape_string($conn, $_POST['gender']);

$token = rand('122332344','922332344');
$url = array('forum.modzexpertz.tk/verify.php#',$token);

$post= join($url);

if($userid!=$reguserid){
    $sql = "INSERT INTO login(fname, lname, userid, pswrd,    gender)VALUES('$fname', '$lname', '$userid', '$pswrd', '$gender')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
}else {
 echo "Failed to Register.";
}} else {
echo "A user with the email youve provided has already been registered.";
}}
 $conn->close();
?>
  

Я мало что знаю о PHP и jQuery.

Комментарии:

1. Просто у меня мигрень от чтения вашего кода. Используйте правильный отступ кода.

2. Пока проблема 1 $userid!=$reguserid . Вы перезаписываете это на каждой итерации, $reguserid=$row["userid"] и это очень неэффективно. Как у вас вообще есть $_POST['userid'] , если у пользователя нет учетной записи? Пароли также должны быть хэшированы.

3. @Irvin : мигрень лучше.. Я почувствовал, что получил удар головой .. 🙁

4. Как пользователь будет идентифицировать свой идентификатор пользователя после регистрации …. ?? может быть его слепота..

Ответ №1:

Пожалуйста, попробуйте приведенный ниже код :

 <?php
$servername = "localhost";
$username = "root";
$pswrd = "";
$db = "login";

$conn = mysqli_connect($servername,$username,$pswrd, $db);

// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$table = 'login';
if(@mysqli_num_rows(mysqli_query($conn, "SELECT NULL FROM `$table` WHERE userid='".$_POST['userid']."'")) > 0){
            $error = "1";
            echo "user with same userid is already exist";
}

if(isset($_POST['fname']) amp;amp; isset($_POST['lname']) amp;amp; isset($_POST['gender']) amp;amp; isset($_POST['userid']) amp;amp; isset($_POST['pswrd']) amp;amp; $_POST['fname']!="" amp;amp; $_POST['lname']!="" amp;amp; $_POST['gender']!="" amp;amp; $_POST['userid']!="" amp;amp; $_POST['pswrd']!="")
{
    if($error==''){
        $ins['fname'] = mysqli_real_escape_string($conn, $_POST['fname']);
        $ins['lname'] = mysqli_real_escape_string($conn, $_POST['lname']);
        $ins['gender'] = mysqli_real_escape_string($conn, $_POST['gender']);
        $ins['userid'] = mysqli_real_escape_string($conn, $_POST['userid']);
        $ins['pswrd'] = mysqli_real_escape_string($conn, $_POST['pswrd']);
        $insertsql = "INSERT INTO `$table` (fname, lname, gender, userid, pswrd) VALUES ('".$ins['fname']."','".$ins['lname']."','".$ins['gender']."','".$ins['userid']."','".$ins['pswrd']."')";
        @mysqli_query($conn, $insertsql);
        //echo $insertsql; exit;
        echo "Success";
    }
}else{
    echo "Please enter required parameters";
}

mysqli_close($conn);
?>