не работает include :( Не вижу почему ;(

i1303

Guest
не работает include :( Не вижу почему ;(

Есть два файла, маленьких. Первый устанавливает куку, второй в зависимости от куки выполняет действия (на самом деле файлов, подобных второму, должно быть больше, но я пока лишь учусь). Суть в том, что в зависимости от того, отвечал ли человек на опрос, на страницах должен показываться либо сам опрос, либо что-то другое.
Первый файл работает за исключением третьей строки. Ошибок никаких не выдает. В чем может быть дело?

1.php:
<?php
$y2k = mktime(0,0,0,1,1,2007);
setcookie("opros", "no", $y2k);
include "2.php";
?>

2.php:
<?php
echo "<html><body>";
if ($HTML_COOKIE_VARS['opros'] == "no")
{
echo "<form action= $PHPSELF method='POST'>\n<input type=radio name=ch value='1'>1\n<input type=radio name=ch value='2'>2\n<input type=submit value='OK!'></form>";
extract($_POST);
if ($HTTP_COOKIE_VARS['opros'] == "no")&& (($ch == "1") || ($ch== "2")) {
$y2k = mktime(0,0,0,1,1,2007);
setcookie('opros', $ch, $y2k);
echo "<p>Опрос: $ch</p>";
} else {
echo "<p>Опрос: $HTTP_COOKIE_VARS['opros']</p>";
}
echo "<a href='2.php'>2</a><br><a href='3.php'>3</a><br><a href='4.php'>4</a></body></html>";
?>
 

i1303

Guest
Спасибо. Пойду ткнусь носом.

-~{}~ 27.01.05 15:52:

Товарищи, а можно для тупых?
Я все честно прочла. В меру понимания внесла исправления. В первом файле добавился вывод ошибок.
Второй файл теперь выглядит так:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
echo "<html><body>1<br>";
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($_COOKIE['opros'] == "no")&& (($ch == "1") || ($ch== "2")) {
$y2k = mktime(0,0,0,1,1,2007);
setcookie('opros', $_POST['ch'], $y2k);
header("Location: ".$_SERVER['PHP_SELF']);
exit;
}
elseif ($_COOKIE['opros'] == "no")
{
echo "<form method='POST'>\n<input type=radio name=ch value='1'>1\n<input type=radio name=ch value='2'>2\n<input type=submit value='OK!'></form>";
} else {
echo "<p>Опрос: $_COOKIE['opros']</p>";
}
echo "<a href='2.php'>2</a><br><a href='3.php'>3</a><br><a href='4.php'>4</a></body></html>";
?>


Однако работоспособности это не прибавило. Ошибки никакие не выводятся.
 

Фанат

oncle terrible
Команда форума
вывод ошибок работоспособность и не должен прибавлять.
вывод ошибок помогает найти ошибку.
после исправления которой и прибавляется работспособность.

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

-~{}~ 27.01.05 16:08:

i1303
у меня складывается впечатление, что текст не был прочитан полностью
 

i1303

Guest
Дорогие умные молодые люди. Я очень ценю ваш ум и опыт, умение отлаживать и программировать на пхп.
Понимаю, что мой вопрос модет звучать по-идиотски, так как я не знаю или не понимаю основ. В том и проблема, что я не вижу логических неувязок в этих двух файлах. И чтение мануалов по пхп (в том числе, любезно указанных ссылок) мне не сильно помогло - я этим уже не первый день занимаюсь, если бы смогла бы разобраться сама - не пришла бы сюда.
Будьте так любезны, давайте не будем обсуждать философские проблемы отладки.
Просто ткните пальцем.

-~{}~ 27.01.05 16:12:

Вопреки впечатлению все указанные тексты были прочитаны полностью.
 

Фанат

oncle terrible
Команда форума
По приведенной мной ссылке написано, вера в тыканье пальцами - это вера в сказки.
Очень жаль, что текст не был прочитан.

-~{}~ 27.01.05 16:13:

По приведенной мной ссылке написано
Если у вас не работает сложная подпрограмма определения работоспособности кук - напишите сначала тест в две строчки чтобы убедиться, что вы хотя бы можете выставлять и читать куку.
Очень жаль, что текст не был прочитан.

-~{}~ 27.01.05 16:15:

По приведенной мной ссылке написано, что если не работает сложная программа - её надо упростить.
Очень жаль, что текст не был прочитан.

По приведенной мной ссылке написано, что ПРИ ВСЁМ ЖЕЛАНИИ, ДОБРЫЙ ДЯДЯ НА ФОРУМЕ НЕ МОЖЕТ ЗАЛЕЗТЬ В ВАШ КОМПЬЮТЕР, СЕРВЕР И БРАУЗЕР. И отладить за вас вашу программу в ВАШИХ условиях.
А работоспособность программы зачастую зависит не от неё самой, а от окружения.
Очень жаль, что текст не был прочитан.
 

i1303

Guest
Добрый дядя, что вы скажете на следующее:
упрощенный до вида второй файл

<?php
echo $_COOKIE['opros'];
?>

тоже не работает.
 

Фанат

oncle terrible
Команда форума
Кроме прочтения, вторая ссылка подразумевает совершение некоторых действий.
В частности - идентификация того факта - послал браузер куку или нет.

при всем своем желании угодить дорогой нервной барышне, дорогие умные молодые люди не в состоянии сделать это за неё.

-~{}~ 27.01.05 16:20:

Добрый дядя скажет, что приведённый код выглядит вполне работоспособным. поэтому утверждение о том, что он не работает, кажется ему сомнительным.

Дядя может поверить в то, что данный код ничего не выводит. Но к работоспособности кода это не имеет отношения.

Этот код логичному дяде говорит только о том, что переменная $_COOKIE['opros'] - пуста.
 

i1303

Guest
Кука шлется. Это нервная барышня стала проверять с самого начала. Более того, сработала замена апострофов на двойные кавычки в последнем примере.
Переменная не была пустой. phpinfo() об этом красноречиво говорила.
Вопрос - почему $_COOKIE['opros'] не работает, а $_COOKIE["opros"] работает?
 

SiMM

Новичок
Вообще довольно забавно. Посмотрел на тему топика:
> не работает include :( Не вижу почему ;(
Интересно, при чём тут include?

> Вопрос - почему $_COOKIE['opros'] не работает, а $_COOKIE["opros"] работает?
Видимо, из за особенностей того, кто это писал - у меня работают обе :) Как и у многих других.
 

Фанат

oncle terrible
Команда форума
а точнее, скорее всего, в процессе тестов так совпало, что пока обращались к $_COOKIE['opros'] - куки не было, а к моменту, когда поменяли на $_COOKIE["opros"] - появилось.
так часо случается.
 

i1303

Guest
Originally posted by SiMM
Вообще довольно забавно. Посмотрел на тему топика:
> не работает include :( Не вижу почему ;(
Интересно, при чём тут include?

При том, что если добрые дяди будут читать текст столь же внимательно, как советуют нервным барышням, они увидят include в первом посте в коде первого файла. Который не работал. Как теперь понимаю - из-за ошибок во втором файле.

-~{}~ 27.01.05 16:49:

Едем дальше;)
Вот это уже работает. Но почему-то после ответа на форму
$_SERVER['REQUEST_METHOD'] все равно = GET, хотя в форме method="POST". Такой способ ссылки формы на собственный же файл приведен в "Очень хорошей статье об основах веб-программирования на сайте PHP5.RU".
Наврали?


<?php
echo "<html><body>".$_SERVER['REQUEST_METHOD'];
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
?>
<form method="POST" action="<? echo $PHP_SELF; ?>">
<input type=radio name=ch value='1'>1
<input type=radio name=ch value='2'>2
<input type=submit value="OK!"></form>
<?
} else { echo $_COOKIE["opros"];
if ($_COOKIE["opros"] == "no") {
echo $_POST["ch"];
header("Location: ".$_SERVER['PHP_SELF']);
exit;
} else {
?>
<p>Опрос: <? echo $_COOKIE["opros"]; ?></p>
<?
}
}
?>
 

i1303

Guest
Так-с. Едем дальше ;)
Удалось добиться некоей работоспособности.
Этот скрипт работает. Но несмотря на то, что в форме указан метод "POST", $_SERVER['REQUEST_METHOD'] почему-то после ответа на форму все равно считает его GET. Из-за этого условие не работает нужным образом.
между тем подобный способ проверки метода был приведен "Очень хорошей статье об основах веб-программирования на сайте PHP5.RU", как гласит текст одной из предложенных мне ссылок.
Наврали?
 

Фанат

oncle terrible
Команда форума
почему-то после ответа на форму
$_SERVER['REQUEST_METHOD'] все равно = GET
боюсь, по тем же причинам, по которым $_COOKIE["opros"] есть, а $_COOKIE['opros'] - нет.
Т.е., от нас, к сожалению, не зависящим.

-~{}~ 27.01.05 16:59:

Дядя был настолько добр, что запустил этот код у себя на сервере.
и получил ожидаемый результат: несмотря на присутствие в коде абсолютно посторонних предметов в виде работы с куками, после топравки формы метод - пост.

А возможно - и вопреки им...
 

i1303

Guest
Originally posted by Фанат
боюсь, по тем же причинам, по которым $_COOKIE["opros"] есть, а $_COOKIE['opros'] - нет.
Т.е., от нас, к сожалению, не зависящим.

-~{}~ 27.01.05 16:59:

Дядя был настолько добр, что запустил этот код у себя на сервере.
и получил ожидаемый результат: несмотря на присутствие в коде абсолютно посторонних предметов в виде работы с куками, после топравки формы метод - пост.

А возможно - и вопреки им...
Возблагодарим небо за этот удивительный акт доброты. Однако время прошло, а метод проявляет постоянство - он по-прежнему Гет. Не будет ли любезен добрый дядя быть столь добрым, чтобы высказать какие-нибудь предположения? Может, со средой что не так? Какие параметры проверить?
 

Фанат

oncle terrible
Команда форума
для начала дядя порекомендует сократить код до такого
<?php
echo "<html><body>".$_SERVER['REQUEST_METHOD'];
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
?>
<form method="POST" action="<? echo $PHP_SELF; ?>">
<input type=radio name=ch value='1'>1
<input type=radio name=ch value='2'>2
<input type=submit value="OK!"></form>
<?
}
?>
и повторить эксперимент
 

CODER

Новичок
Насколько я понял, то проблема заключается в том, что не отсылают или не принемаются куки. Как и говорилось, код программы надо упростить.
Я попробовал простой код(первая страница):
1.php
PHP:
<?php
setcookie("go","good");
echo "<a href=\"2.php\">Дальше</a>";
?>
На странице 2.php я написал следующий код для проверки:
PHP:
<?php
$rec=$_COOKIE['go'];
echo "$rec";
?>
И сценарий выводил "good"
На мой взгляд вся проблема в функции mktime()
 

Фанат

oncle terrible
Команда форума
CODER, к сожалению, ты читал не весь топик.
и понял неправильно.
 
Сверху