php, echo не отображается после публикации формы? - PullRequest
0 голосов
/ 05 сентября 2011

У меня есть форма, и когда я публикую ее, я создаю cookie, затем читаю cookie и, если isset, что-то делаю:

внутри read.php

    <?php if (isset($_COOKIE['voteforme'])) { 
echo 'You voted this profile';
} else {?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="vote_points" id="vote_points" value="1000" />
<input type="submit" name="votes_send" id="votes_send" value="Vote for me" />
</form>
<?php } ?>

, затем яСоздайте файл cookie внутри файла create.php:

if (isset($_POST['votes_send'])){
$get_vote_for_me = $_POST['vote_points'];
$get_talent_id = $_POST['talent_id'];
$value1 = "voteforme";
$value2 = "voteforme_points";
setcookie($value1,$value2, time()+3600*24*7);
}

Этот сценарий создает файл cookie, который мне нужен.в основном, если установлен файл cookie $_COOKIE['voteforme'], покажите сообщение, в противном случае покажите форму.

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

структура файла index.php, где я включаю read.php и 'create.php'

любые идеи ??

спасибо

edit: даже если я установил действие формы для любого из этих файлов, результат будет таким же

edit, index.php структура:

<?php 
require_once("read.php");
include 'create.php';
?>
<!doctype html>
<head>...
<body>...
<div id="tab5" class="tab_content">
<?php  read();?> // the read.php it's a function
</div>
...

read.php ятребует его наверху, но я на самом деле не вызываю git до тех пор, пока внутри тела не появится функция

adit: я также пытался добавить setcookie внутри оператора else внутри 'read.php ', но там он не создается

Ответы [ 3 ]

0 голосов
/ 05 сентября 2011

Почему вы не проверяете набор файлов cookie после установки файла cookie?Затем перейдите к обновлению вашей страницы.Вы просто не можете ничего напечатать на странице, прежде чем приступить к работе с файлами cookie.

Другим решением будет использование javascript для уменьшения количества перезагрузок.

Третья идея - использовать глобальную переменную, которую вы можете проверить в дополнение к cookie - таким образом, есливы устанавливаете cookie, вы выполняете соответствующий код на основе глобальной переменной.

0 голосов
/ 05 сентября 2011

setcookie () не устанавливает значение в $ _COOKIE немедленно, оно будет там только после того, как клиент отправит другой запрос с cookie.Вы можете установить его вручную, если хотите.

0 голосов
/ 05 сентября 2011

Я бы предложил вам разделить файлы.Отправьте данные в create.php и добавьте перенаправление в create.php обратно в index.php.Таким образом, страница загрузится и сможет прочитать ваш файл cookie.

или вы можете попробовать это, если это еще не сделано:

сначала включите create.php, а затем прочитайте .php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...