$_REQUEST и setcookie устарели
Пожалуйста, помогите мне с этим вопросом. У меня есть скрипт и для админки он запрашивает файл "login.php" со следующим кодом:
<?
if($_COOKIE["ok"]==1){
setcookie("user",$_REQUEST["name_theuser"]);
setcookie("tipe",$_REQUEST["thetipe"]);
}else{
echo "<script>document.location.href='disconnect.php';</script>";
}
echo "<script>document.location.href='bord.php';</script>";
?>
Как я понимаю из моих небольших знаний и поиска, они устарели в php 5.3.x
Признак состоит в том, что при правильном имени пользователя и пароле он не будет входить в систему, он не будет перенаправлен правильно.
Если кто-то может получить руку, это будет высоко ценится.
Спасибо!
2 ответа
Ваш JavaScript перенаправлен неправильно. У тебя есть document.location
так должно быть window.location
, $_REQUEST
не амортизируется, но вы должны убедиться, что используете его правильно. Если ваша форма отправляется, убедитесь, что вы проверяете, установлена ли кнопка отправки. На самом деле ваш код должен выглядеть примерно так, если вы используете $_POST
метод, который является более безопасным:
<?php
session_start();
if(isset($_POST['submitButton']) && isset($_COOKIE['ok']) && $_COOKIE['ok'] === '1'){
setcookie('user', $_POST['name_theuser']);
setcookie('tipe', $_POST['thetipe']);
//send a header or do your thing here
}
else{
header('LOCATION:disconnect.php'); die();
}
?>
Мне также было непонятно, почему вы пытаетесь перенаправить, несмотря ни на что, внизу вашей страницы.
Примечание:
Вам не нужно использовать window.location.href =
, Вы можете просто использовать window.location =
как ярлык. Короче говоря, вы можете просто использовать location =
, так как window
неявно.
setcookie
а также $_REQUEST
не устарели. Проверьте: http://php.net/manual/en/migration53.deprecated.php
В зависимости от конфигурации вашего сервера $_REQUEST
может быть недоступен, что, вероятно, происходит здесь. Это также предпочтительная конфигурация, потому что $_REQUEST
воспринимается как плохой.
$_REQUEST
это комбинированный ввод $_GET
а также $_POST
, Исправление состоит в том, чтобы заменить его на правильный.
Если вы пришли из формы с action="post"
ваш вклад в $_POST
, Если вы заходите на URL, как mysite/login.php?name_theuser=john&thetipe=foo
тогда вы найдете свой вклад в $_GET
,