Вопрос: Как я могу получить информацию о пользователе, когда пользователь успешно зарегистрировался?
Вот мой код 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 устарел