Это первый раз, когда я использую PHP и MySQL для создания системы входа, в которой человек может ввести имя пользователя и пароль, а скрипты php проверяют, существует ли в базе данных имя пользователя и пароль.PHP-MySQL Login system
Когда пользователь вводит правильную информацию. Он отображает сообщение «УСПЕШНО ВХОД В ПОЛЬЗОВАТЕЛЮ ПРОФИЛЬ ...», которое все хорошо. Но если пользователь вводит неверную информацию, появляется сообщение «ИЗВЛЕЧЕН ... ВЫ ВХОДИЛИ НЕПРАВИЛЬНЫЙ И И ПАРОЛЬ ... ПОЖАЛУЙСТА, ВОЗВРАЩАЙТЕ ...», но страница пустая. Почему это?
<?php
define('DB_HOST','localhost');
define('DB_NAME','test'); //name of database
define('DB_USER','root'); //mysql user
define('DB_PASSWORD',''); //mysql password
$con = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die(mysqli_connect_error());
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
}
$db = mysqli_select_db($con,DB_NAME) or die(mysqli_connect_error());
/*
$ID = $_POST['user'];
$Password = $_POST['pass'];
*/
function SignIn(mysqli $con){
session_start(); //starting the session for user profile page
if(!empty($_POST['user'])){ //checing the 'user' name which is from Sign-in.html, is it empty or have some text
$query = mysqli_query($con,"SELECT * FROM UserName where userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysqli_connect_error());
$row = mysqli_fetch_array($query) or die(mysql_error());
if(!empty($row['userName']) AND !empty($row['pass'])){
$_SESSION['userName'] = $row['pass'];
echo "SUCCESSFULLY LOGIN TO USER PROFILE PAGE...";
}
else{
echo "SORRY...YOU ENTERED WRONG ID AND PASSWORD...PLEASE RETRY...";
}
}
}
if(isset($_POST['submit'])){
SignIn($con);
}
?>
Почему вы назначаете имя пользователя сеанса равным паролю? 'session_start()' должен находиться в самой верхней части файла, а не внутри функции. –
Как и предостережение, что произойдет, если мое имя пользователя «1», DATPASE UserName; - '?? – castis
@castis SQL Injection –