Вопрос: Как я могу получить информацию о пользователе, когда пользователь успешно зарегистрировался?
Вот мой код login.php
<? PHP if ($ _ SERVER ['REQUEST_METHOD'] == 'POST') { $ username = $ _POST ['username']; $ password = $ _POST ['password']; // mysql connect здесь ... // mysql запрос здесь .... $ sql = "SELECT * FROM user_accounts WHERE username = '$ username' и password = '$ password'"; $ result = mysql_query ($ sql); $ count = mysql_num_rows ($ result); if ($ count == 1) { session_register (имя пользователя); session_register (пароль); header ('location: index.php'); } else { $ error = «Неверное имя пользователя или пароль, пожалуйста, попробуйте снова»; } } ?> <form method = "post" action = "<? php echo $ _SERVER ['PHP_SELF'];?>"> <? = $ Ошибка =?> Имя пользователя: <input type = "text" name = "username"> Пароль: <input type = "password" name = "password"> <input type = "submit" /> </ Форма>
и вот мой индекс index.php
<? session_start (); если (! session_is_registered (имя пользователя)) { заголовок ( "место: login.php"); } $ username = session_is_registered (имя пользователя); $ password = session_is_registered (пароль); echo $ имя пользователя; echo $ password; ?>
Пример. Это информация о базе данных.
Идентификатор пользователя -> 001 Имя пользователя -> admin Пароль -> admin
Когда я эхо $ username и $ password получаю результат для username = 1 и для пароля = 1. Я хотел, чтобы результат был username = admin и password = admin.
Как я могу получить имя пользователя и пароль, которые регистрируются? потому что мне нужно, чтобы это был запрос, поэтому я могу получить его, например, имя, фамилию.
Я уже понял это, но забыл, как это сделать. знак равно
Большое вам спасибо за ваши ответы. знак равно
У вас уже есть имя пользователя и пароль из массива POST, вы можете хранить их в сеансе следующим образом:
session_start(); // this will go on top of the page ......... if($count == 1) { session_register(username); session_register(password); $_SESSION['username'] = $_POST['username']; // store username $_SESSION['password'] = $_POST['password']; // store password header('location: index.php'); } else { $error = "Invalid Username or Password Please Try Again"; }
Позже вы можете получить их как:
echo $_SESSION['username']; echo $_SESSION['password'];
Обратите внимание, что вы должны уничтожить их в файле завершения сеанса.
Примечание 2 session_register
был DEPRECATED с PHP 5.3.0. Просто используйте $_SESSION
массив для хранения ваших значений.
Вы используете старые функции сеанса, и вы используете их неправильно. Позвольте мне показать вам, как это сделать только с массивом $ _SESSION. Обратите внимание, что session_register () и session_is_registered () являются дефрагментированными функциями PHP 5.3, а это значит, что они могут быть удалены позже. Также вы всегда должны избегать ввода, поступающего от пользователя, когда вы хотите использовать его в запросах. Возможно, вы захотите использовать подготовленные операторы, PDO или mysqli.
<?php // login.php session_start(); if($_SERVER['REQUEST_METHOD'] == 'POST') { // mysql connect function here.... (moved up here) $username = mysql_real_escape_string($_POST['username']); $password = mysql_real_escape_string($_POST['password']); $sql = "SELECT * FROM user_accounts WHERE username = '$username' AND password = '$password'"; $result = mysql_query($sql) or die( "MySQL Error: ".mysql_error() ); $user = mysql_fetch_assoc($result); if($user !== false) { $_SESSION['username'] = $user['username']; $_SESSION['password'] = $user['password']; header('Location: index.php'); } else { $error = "Invalid Username or Password Please Try Again"; } } ?> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <?=$error=?> Username : <input type="text" name="username"> Password : <input type="password" name="password"> <input type="submit" /> </form>
Обратите внимание на mysql_real_escape_string()
и использование mysql_real_escape_string()
$_SESSION
в приведенном выше примере.
<?php // index.php session_start(); if(!isset($_SESSION['username'])) { header("Location: login.php"); } $username = $_SESSION['username']; $password = $_SESSION['password']; echo $username; echo $password; ?>
Вы можете использовать isset()
вместо session_is_registered()
чтобы проверить, установлено ли значение сеанса или нет.
session_is_registered является логическим, поэтому он будет проверять, не установлен ли он.
Вам нужно было бы $username = $_SESSION['username'];
а также
$password= $_SESSION['password'];
Попытайтесь не использовать имя пользователя и пароль как имена сеансов.
Я обнаружил, что это уже mysql и хранит имя пользователя и пароль mysql в сеансах
Изменить :
Также session_register устарел