Cookie не Устанавливаются Правильно в Сценарии PHP

Вы можете просто добавить общий класс ко всем тегам формы, на которые вы хотите повлиять, и использовать этот один класс в селекторе вместо повторения правил с несколькими идентификаторами.

<form id="node-825" class="layout_1">
  ...
</form>
<form id="node-826">
  ...
</form>
<form id="node-827" class="layout_1">
  ...
</form>

... и в CSS

.layout_1 input[type="text"], 
.layout_1 input[type="tel"], 
.layout_1 input[type="password"], 
.layout_1 input[type="email"], 
.layout_1 textarea, 
.layout_1 select {
   height: 40px;
   padding:  10px;
}

... что повлияет на #node-825 и #node-827, но не на #node-826

5
задан Noah Goodrich 19 May 2009 в 02:35
поделиться

4 ответа

Включите display_errors и установите для error_reporting значение E_ALL, и вы должны увидеть сообщение об ошибке «заголовки уже отправлены» - вам необходимо вызвать setcookie () ПРЕЖДЕ ЧЕМ ПОСЛАТЬ ЛЮБОЙ HTML. Из php.net/setcookie:

setcookie () определяет cookie как отправлено вместе с остальной частью HTTP заголовки. Как и другие заголовки, файлы cookie должен быть отправлен до любого вывода из ваш скрипт (это протокол ограничение). Это требует, чтобы вы размещать вызовы этой функции до любой вывод, включая и теги, а также любые пробелы.

В блоке кода, который вы разместили, этот бит:

<script>
function Redirect(url)
{
 location.href = url;
}

</script>

выводится непосредственно в браузер задолго до того, как вы попытаетесь установить файлы cookie.

У вас есть две возможности: использовать буферизацию вывода, чтобы выводить все в самом конце, или переключиться на метод, в котором весь код обработки выполняется сначала в одном сценарии, и там вы устанавливаете значения $ _SESSION и cookie, а затем включите второй сценарий в конец первого, который содержит код для вывода в браузер.

6
ответ дан 13 December 2019 в 05:41
поделиться

1st you don't need session_register, you can just do.

Since session_register is the preferred method since 4.1.0 and deprecated as of PHP 5.3

$_SESSION["loginname"] = $_POST["loginname"]

2nd if you are going to use sessions, your flow could be better, since this does not work.

$_SESSION["foo"] = 1;
header("Location: stuff.php");

Then you can't view the session data in stuff.php. You could either send the user to the main page, and do the authentication there, and if it passes then you just continue on with the loading of the main page, and if it doesn't, then you send the user back to the login page like this.

if($_SESSION["authenticated"] == 0)
{
    header("Location: login.php");
    die();
}
2
ответ дан 13 December 2019 в 05:41
поделиться

Попробуйте это (указав корень вашего сайта):

setcookie("ID_my_site", $_POST['loginname'], $hour,'/');

или попробуйте это (добавив кавычки к вашему имени пользователя):

setcookie("ID_my_site", "$_POST['loginname']", $hour,'/');
3
ответ дан 13 December 2019 в 05:41
поделиться

Также вам не следует хранить пароль, это данные cookie - это большая безопасность Нет-Нет !!!

Если вы хотите сделать что-то подобное, установите уникальный - случайный - идентификатор, который изменяется при входе в систему и использует его вместо этого (вы все равно должны использовать MD5)

1
ответ дан 13 December 2019 в 05:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: