Php проверить, если существует аккаунт [закрыт]

0

не знаю, почему эта проверка даже не показывает какой-то текст эха... кто-то, пожалуйста, объясните мне, почему. Написал весь код, надеюсь, что вы решите проблему сейчас... попробовал все коды, которые вы мне дали, но все равно ничего

<?php

$servername = "localhost";
$dbUsername = "db_admin";
$dbPassword = "123";
$dbName = "DB";
$dbTable = "login";

$salt = '';

$salt .= substr(str_shuffle(sha1(microtime())), 0, 40);;



$value_user =$_POST["usernameReg"];

$value_pass = $_POST["passwordReg"];
$value_pass = $salt . $value_pass . $salt;
$value_pass = sha1($value_pass);

$logCookieHashed = $salt . $value_user . $salt . $value_pass . $salt;
$logCookieHashed = sha1($logCookieHashed);



$conn = mysqli_connect($servername, $dbUsername, $dbPassword, $dbName);

$sqlGetID = "SELECT id FROM login ORDER BY id DESC LIMIT 1";

$result = mysqli_query($conn, $sqlGetID);

$row = mysqli_fetch_array($result);

$ID = $row['id'] + 1;

$addAcc = "INSERT INTO login (id, username, password, pwHash, logCookieHashed) Values (\"". $ID . "\", \"" . $value_user . "\", \"" . $value_pass . "\", \"" . $salt . "\", \"" . $logCookieHashed . "\");";

  if( isset( $_POST["usernameReg"]  ) ) {

$selectAcc = mysql_query("SELECT * FROM login WHERE username='$value_user'");
  if(mysql_num_rows($selectAcc)>0)
        {
            echo "Username already taken";
        }

 else   
    { 
    mysqli_query($conn, $addAcc);

      echo "You are now registered<br/>";
    }
    }

?>
  • 2
    Вы смешиваете API MySQL!
  • 0
    Так как же я могу решить проблему?
Показать ещё 6 комментариев
Теги:
database
account
login

4 ответа

1
Лучший ответ

Вот рабочий пример вашего кода

<?php
$servername = "localhost";
$dbUsername = "db_admin";
$dbPassword = "123";
$dbName = "DB";
$dbTable = "login";

$salt = '';

$salt .= substr(str_shuffle(sha1(microtime())), 0, 40);;

header('Content-type: application/json');


$value_user =$_POST["usernameReg"];

$value_pass = $_POST["passwordReg"];
$value_pass = $salt . $value_pass . $salt;
$value_pass = sha1($value_pass);

$logCookieHashed = $salt . $value_user . $salt . $value_pass . $salt;
$logCookieHashed = sha1($logCookieHashed);



$conn = mysqli_connect($servername, $dbUsername, $dbPassword, $dbName);

$sqlGetID = "SELECT id FROM login ORDER BY id DESC LIMIT 1";

$result = mysqli_query($conn, $sqlGetID);

$row = mysqli_fetch_array($result);

$ID = $row['id'] + 1;

$addAcc = "INSERT INTO login (id, username, password, pwHash, logCookieHashed) Values (\"". $ID . "\", \"" . $value_user . "\", \"" . $value_pass . "\", \"" . $salt . "\", \"" . $logCookieHashed . "\");";
$checkUser = "SELECT username FROM login WHERE username = \"${value_user}\"";
$checkUserResult = mysqli_query($conn, $checkUser);
$checkUserResultRow = mysqli_fetch_array($checkUserResult);

if( isset( $_POST["usernameReg"]  ) ) 
{ 
    if($checkUserResultRow['username']!="")
    {
        echo "Username exists";
    }
    else
    {
        mysqli_query($conn, $addAcc);
        echo "Success";
    }
}



?>
1

В соответствии с вашим первоначально размещенным вопросом/кодом


Попробуйте следующий код, это решит вашу проблему.

$selectAcc="SELECT * FROM login WHERE username='$value_user'";
 $rsult=mysql_query($selectAcc);
$count=mysql_num_rows ($rsult); 
if($count==1){echo "username already in use"; }
else 
{ echo "username is available";}
  • 0
    mysql_query () [function.mysql-query]: доступ запрещен для пользователя 'root' @ 'localhost' (используется пароль: NO) в /home/javanpmg/public_html/src/register.php в строке 41 Предупреждение: mysql_query () [ function.mysql-query]: не удалось установить ссылку на сервер в /home/javanpmg/public_html/src/register.php в строке 41. Предупреждение: mysql_num_rows () ожидает, что параметр 1 будет ресурсным, логическое значение, указанное в / home / javanpmg / public_html / src / register.php в строке 42 доступно имя пользователя
  • 0
    Я не могу понять, почему вы получаете эти предупреждения, код работает нормально для меня. Вы можете добавить свой полный код к вопросу?
Показать ещё 2 комментария
1

Можете ли вы написать код, каким он должен быть? - МистерТуди

Это должно быть так. Использование подготовленных выражений, поскольку функции mysql_ устарели.

//the values in $mysqli are serverIP,databaseUsername,databasePassword and databaseName
$mysqli = new mysqli('localhost','root','rootPassword','databaseName');
$stmt = $mysqli->prepare("SELECT * FROM login WHERE username = ?");
$stmt->bind_param('s',$value_user);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows() >= 1){
    echo 'username already taken.';
} else {
    echo 'username is good to go.';
}
  • 0
    mysqli_stmt :: bind_param () [mysqli-stmt.bind-param]: количество переменных не соответствует количеству параметров в подготовленном выражении
  • 0
    Вы редактировали переменную $mysqli ? и установлена ли переменная $value_user ?
Показать ещё 4 комментария
1

может быть две причины: 1) mysql и mysqli - два разных синтаксиса. mysqli - это расширенная версия mysql. вы смешиваете оба. используйте mysql или mysqli 2)

  $sql = "select * from login where username='$value_user'";
  $selectAcc = mysqli_query($conn, $sql);
  $result= mysqli_num_rows($selectAcc);  
       if($result>1)
        {
            echo "Username already taken";
        }

     else      
      { 
        mysqli_query($conn, $addAcc);

        echo "You are now registered<br/>";
      }

}

  • 0
    Возможно, было бы полезно исключить возможность внедрения SQL-кода?
  • 0
    То же самое ... ничего не происходит ...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню