Я создаю скрипт входа, который хранит значение переменной с именем $userid
до $_SESSION["userid"]
, а затем перенаправляет пользователя на главную страницу (вопрос в том, как отправить их туда, где они были?).
Однако, когда я возвращаюсь к этой странице, я повторяю session_id()
и значение $_SESSION["userid"]
и появляется только идентификатор сеанса. Мне пришло в голову, что, может быть, моя страница перенаправления должна быть наверху, но если это так, то session_id, я эхо, будет меняться каждый раз, когда я окажусь на странице, которая вторит ему. Вот сценарий:
<?php
session_start();
include_once("db_include.php5");
doDB();
//check for required fields from the form
if ((empty($_POST['username']) && empty($_POST['email'])) || empty($_POST['password'])) {
header("Location: loginform.php5");
exit;
} else if($_POST["username"] && $_POST["password"]){
//create and issue the query
$sql = "SELECT id FROM aromaMaster WHERE username='".$_POST["username"]."' AND password=PASSWORD('".$_POST["password"]."')";
$sql_res =mysqli_query($mysqli, $sql) or die(mysqli_error($mysqli));
//get the number of rows in the result set; should be 1 if a match
if(mysqli_num_rows($sql_res) != 0) {
//if authorized, get the userid
while($info = mysqli_fetch_array($sql_res)) {
$userid = $_info["id"];
}
//set session variables
$_SESSION['userid'] = $userid;
mysqli_free_result($sql_res);
//redirect to main page
header("Location: loginredirect.php5");
exit; }
} else if($_POST["email"] && $_POST["password"]) {
//create and issue the query
$sql = "SELECT id FROM aromaMaster WHERE email='".$_POST["email"]."' AND password=PASSWORD('".$_POST["password"]."')";
$sql_res =mysqli_query($mysqli, $sql) or die(mysqli_error($mysqli));
//get the number of rows in the result set; should be 1 if a match
if(mysqli_num_rows($sql_res) != 0) {
//if authorized, get the userid
while($info = mysqli_fetch_array($sql_res)) {
$userid = $_info["id"];
}
//set session variables
$_SESSION['userid'] = $userid;
mysqli_free_result($sql_res);
//redirect to main page
header("Location: loginredirect.php5");
exit;}
} else {
//redirect back to login form
header("Location: loginform.php5");
exit;
}
mysqli_close($mysqli);
?>
Следует отметить, что то, что вы делаете, дает вам широкое распространение для атаки SQL-инъекций. Это не то, как вы используете mysqli. Привяжите свои параметры вместо использования конкатенации строк. См. Http://au.php.net/manual/en/mysqli-stmt.bind-param.php. – cletus
Хм, я прочитаю об этом. Дело в том, что при вводе полей в моих формах, onkeyup выполняется сценарий, который санирует вход, позволяя только 0-9a-zA-z _-. @ (В зависимости от того, для чего это поле, но это самый либеральный он получает). Таким образом, без <>() - + "';: & | $, что может делать кто-нибудь? – user97410
Этот скрипт запускается на клиенте. Его можно отключить или запросы могут быть подделаны. Проверка клиента - это только удобство **. Никогда не полагайтесь на проверку клиента. Вы всегда должны проверять сервер. ** – cletus