Я на самом деле не делаю много php сам, но я нахожусь в процессе создания экрана входа php для пользовательского интерфейса, который я строю, чтобы получить данные в таблицу из базы данных mysql. У меня есть таблица подключения к БД нормально и общий экран работает, но у меня проблемы с экраном входа в систему.
Все, чего я хочу добиться на данный момент, — это чтобы страница login.php приняла правильные учетные данные и направила пользователя на страницу index.php.
Страница index.php содержит
include('session.php'); //include login session
Например, я продолжаю получать следующие две ошибки
Примечание: неопределенный индекс: активный
Неустранимая ошибка: вызов неопределенной функции session_register ()
Вот код для моей страницы login.php
<?php
include("config.php");
session_start();
$error=''; // Variable To Store Error Message
if($_SERVER["REQUEST_METHOD"] == "POST") {
// username and password sent from form
$myusername = mysqli_real_escape_string($db,$_POST['username']);
$mypassword = mysqli_real_escape_string($db,$_POST['password']);
$sql = "SELECT user_id FROM admin_tbl WHERE username = '$myusername' and password = '$mypassword'";
$result = mysqli_query($db,$sql) or die("Error: ".mysqli_error($db));
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
$active = $row['active'];
$count = mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count == 1) {
// Register $myusername, $mypassword and redirect to file "index.php"session_register("username");
session_register("password");
$_SESSION['login_user'] = $myusername;
header("location: index.php");
}else {
$error = "Your Username Name or Password is invalid";
}
}
?>
Также вот подробности для моего config.php
$mysql_hostname = "localhost"; //your mysql host name
$mysql_user = "adminTest"; //your mysql user name
$mysql_password = "badgerBadger"; //your mysql password
$mysql_database = "mushroom"; //your mysql database
$db = new mysqli($mysql_hostname, $mysql_user, $mysql_password, $mysql_database);
//mysql_select_db($mysql_database, $bd) or die("Error on database connection");
if($db->connect_errno > 0){
die('Unable to connect to database [' . $db->connect_error . ']');
}
Вот код для моего файла session.php
<?php
include('config.php');
session_start();
$user_check = $_SESSION['login_user'];
$ses_sql = mysqli_query($db,"SELECT * FROM admin_tbl WHERE username = '$myusername' and password = '$mypassword'");
$login_session =$row['first'];
$row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);
$login_session = $row['username'];
if(!isset($_SESSION['login_user'])){
header("location:login.php");
}
?>
Любая помощь будет принята с благодарностью, заранее спасибо 🙂
#
ИЗМЕНЕНИЯ
#
Обновлен код для удаления опечаток, связанных с запросами к таблицам, и устранены некоторые другие проблемы, возникшие после.
Обновлен код login.php для правильных звонков
НОВЫЕ ОШИБКИ #######
Странно то, что это разбор переменных и перенаправление на страницу index.php. Я пытался установить пустые значения этих переменных или $ myusername «»; например. Это избавляет от ошибок для имени пользователя и пароля, однако все же выдает жалобу на строку 24 в файле session.php = $ login_session = $ row [‘first’]; жаловаться на то, что это недопустимая строка поля, когда это действительно допустимое поле.
Nick, here is your correct code.
1. Notice: Undefined index: active - error because of you are try to fetch only user_id from your database.so you have to use "SELECT * FROM " or "SELECT user_id,active FROM "2. Fatal error: Call to undefined function session_register() - you can login and create session without use of session_register() no need of session register
session_start();
include("config.php");
$error=''; // Variable To Store Error Message
$active = '';
if($_SERVER["REQUEST_METHOD"] == "POST") {
// username and password sent from form
$myusername = mysqli_real_escape_string($db,$_POST['username']);
$mypassword = mysqli_real_escape_string($db,$_POST['password']);
$sql = "SELECT * FROM admin_tbl WHERE username = '$myusername' and password = '$mypassword'";
//$sql = "SELECT user_id,active FROM admin_tbl WHERE username = '$myusername' and password = '$mypassword'";
$result = mysqli_query($db,$sql) or die("Error: ".mysqli_error($db));
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
$active = $row['active'];
$count = mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count == 1) {
// Register $myusername, $mypassword and redirect to file "index.php"//session_register("username");
//session_register("password");
$_SESSION['login_user'] = $myusername;
header("location: index.php");
}else {
$error = "Your Username Name or Password is invalid";
}
}
убедитесь, что имя поля вашей базы данных совпадает с полем запроса, и в вашей базе данных есть хотя бы одна запись … И просто проверьте подключение к базе данных
$result = mysqli_query($db,$sql) or die("Error: ".mysqli_error($db));
сделай это и проверь где ошибка
используйте этот код в конфигурации
$db= mysqli_connect("localhost", "adminTest", "badgerBadger","mushroom")or die("cannot connect....");
Ник, вот новый код «session.php».
session_start(); // always start session before write any code.its good to start session before database connection
include('config.php');
if(!(isset($_SESSION["login_user"]) && isset($_SESSION["password"]))){
include("login.php");
}
else{
$myusername=$_SESSION['login_user'];
$mypassword=$_SESSION['password'];
}
$ses_sql = mysqli_query($db,"SELECT * FROM admin_tbl WHERE username = '$myusername' and password = '$mypassword'");
$row = mysqli_fetch_array($ses_sql);
$login_session =$row['first'];
//$row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC); "always define variable before using that variable "
$username_session = $row['username'];
And also after this line
$_SESSION["login_user"] = $myusername;
you have to add following code in login.php
$_SESSION["password"] = $row['password'];
BTW its not good practice to use password on session.