Forum Webscript.Ru

Программирование => PHP => Тема начата: Yoda Kerr от 04 Июня 2002, 12:33:12

Название: Проблемы с голосовалкой
Отправлено: Yoda Kerr от 04 Июня 2002, 12:33:12
Проблемы при саздании своей голосовалки.
Присоединяю файл voting.htm к main.php с помощью include.
В voting.htm:
if ($option_id == \'a1\') {
  if (empty($cookieadd)) {
    echo ("test1");
    setcookie ("cookieadd", "Astro_Voting", time() + 604800);
    header ("Location: main.php?reload=new&p=$p");
    echo ("test2");
  } else { bla-bla-bla
  }

} else {

  if (empty($reload)) {
    if (empty($cookieadd)) {
      include ("voting/form.dat");
    } else {
      $mesage = "Вы уже голосовали!";
      include ("voting/stat.dat");
    }
  }
}
...
?>
В результате на месте скрипта выводится текст:

test1
Warning: Cannot add header information - headers already sent by (output started at c:\\www\\astropages\\main.php:16) in c:\\www\\astropages\\voting\\voting.htm on line 4

Warning: Cannot add header information - headers already sent by (output started at c:\\www\\astropages\\main.php:16) in c:\\www\\astropages\\voting\\voting.htm on line 5
test2
Название: Проблемы с голосовалкой
Отправлено: ThE0ReTiC от 04 Июня 2002, 12:45:28
"Уж сколько раз твердили миру..."
Нельзя посылать броузеру никакой текстовой информации до установки кук или посыла заголовков при помощи header()
Название: Проблемы с голосовалкой
Отправлено: AlieN от 04 Июня 2002, 13:29:06
ob_start();
ob_end_flush();
Название: Проблемы с голосовалкой
Отправлено: Yoda Kerr от 04 Июня 2002, 13:43:02
Цитировать
Нельзя посылать броузеру никакой текстовой информации до установки кук или посыла заголовков при помощи header()

Если имеется ввиду echo ("") - в начале этой команды не было. Я ее потом добавил, чтоб узнать работает ли опер. if()
Сейчас опять все echo ("") убрал - ничего не изменилось.

Более того, я поставил выше преведенный код почти в самое начало main.php - тот же результат!

Цитировать
ob_start();
ob_end_flush();

Я недавно начал осваивать PHP, и буду благодарен, усли вы скажете об этих командах конкретнее.
Название: Проблемы с голосовалкой
Отправлено: ThE0ReTiC от 04 Июня 2002, 13:53:58
Полнсотью скрипт покажи нам или вывали его со всеми зависимыми файлами здесь в архиве, что правильнее будет.
Название: Проблемы с голосовалкой
Отправлено: AlieN от 04 Июня 2002, 14:05:41
Цитировать
Если имеется ввиду echo ("")

Имеется ввиду echo ("test1");
Название: Проблемы с голосовалкой
Отправлено: Yoda Kerr от 04 Июня 2002, 14:43:24
Скрипт можно взять здесь:
http://bloodbrothers.ru/astropages/vote.zip
Название: Проблемы с голосовалкой
Отправлено: ThE0ReTiC от 04 Июня 2002, 15:02:43
Вот из-за того, что у тебя вот это:



 

 

 

 

 

 


 




идет перед вот этим:

if ($check == \'ch\') {
 if ($option_id == \'a1\'||\'a2\'||\'a3\') {
  if (empty($cookieadd)) {
    setcookie ("cookieadd", "Astro_Voting", time() + 604800);
    header ("Location: main.php?reload=new");
    $check == \'\';

И все проблемы.
Смотри мой ответ выше.
Название: Проблемы с голосовалкой
Отправлено: Yoda Kerr от 07 Июня 2002, 00:07:18
"Ура, заработало!" (с) Каникулы в простоквашино.

Еще вопросик.
У меня есть список присвоений:

$universe = \'Вселенная\';
$whatbegin = \'С чего начать\';
$placetime = \'Место и время\';
...
etc.



При открытии страницы в переменную $p заносится имя подгружаемого документа без расширения:

$p=\'universe\';
или $p=\'whatbegin\';
или $p=\'placetime\';
...
etc.


Помогите добиться следующего результата:
В зависимости от имени подгружаемого документа к переменной $title должна присваиваться строка с его названием (взятая из первого списка)
Я хотел сделать вот так:

Допустим, $p = \'placetime\';

$mass = array();
$mass[\'universe\'] = \'Вселенная\';
$mass[\'whatbegin\'] = \'С чего начать\';
$mass[\'placetime\'] = \'Место и время\';
...
$title = mass [$p];
echo "$title";


Но это не работает, хотя значение $p и название одной из ячеек массива совпадает.
Название: Проблемы с голосовалкой
Отправлено: GotZfild от 07 Июня 2002, 10:12:24
Это ты неправильно переписал или так и было?
Цитировать
$title = mass [$p];

Если в скрипте у тебя все правильно записано, то по идее должно работать.
Название: Проблемы с голосовалкой
Отправлено: Yoda Kerr от 07 Июня 2002, 20:05:37
Цитировать
Это ты неправильно переписал или так и было?

Так и было... Очепятался значит. Теперь таботает. Спасибо.
Название: Проблемы с голосовалкой
Отправлено: Yoda Kerr от 13 Июня 2002, 16:15:10
Ссылка на файл, находяшийся на один уровень выше:
(php)
include "../test.htm";

А как будет выглядеть ссылка на файл двумя уровнями выше?
Название: Проблемы с голосовалкой
Отправлено: Croaker от 13 Июня 2002, 16:26:08
../../

Но лучше использовать ссылки от корня (/home/www/includes/file.html),  и от $DOCUMENT_ROOT ($DOCUMENT_ROOT."/includes/file.html")
Название: Проблемы с голосовалкой
Отправлено: Yoda Kerr от 18 Июня 2002, 00:48:15
Чудеса какие-то!
Существует файл mn.php со следующим содержимым:


$p0="Главная";
$p1="Страница1";
$p2="Страница2";
$p3="Страница3";
$p_0="Главная";
$p_1="Страница1";
$p_2="Страница2";
$p_3="Страница3";

if ($p="star") { $p1 = $p_1; }
elseif ($p="moon") {$p2 = $p_2;}
elseif ($p="earth") {$p3 = $p_3;}
else {$p0 = $p_0;}
?>



menu:













End menu.



В данном случае $p "берется" из строки адреса: mn.php?p=*****
Так вот, для любого значения &p скрипт выдает один и тот же результат (   даже если перед первым \'if\' вставить $p="ok";   ):


menu:
star

Страница1
Страница2
Страница3
Главная

End menu.


Т.е., только "Страница1" не является ссылкой.

Почему у переменной $p вдруг оказалось значение "star"?!
PHP настроен не так как надо?
В чем ошибка?
Название: Проблемы с голосовалкой
Отправлено: .Sm@sH. от 20 Июня 2002, 00:06:40
КОНЕЧНО-ЖЕ ОШИБКА! Каждый новичек так ошибается :) Вспомни, что \'=\' это присвоение, а \'==\' это сравнение.

Поэтому код:
Цитировать

if ($p="star") { $p1 = $p_1; }

делает следующее:

переменной $p присваивается значение "star", и после удачного присвоения возвращается TRUE

и потом конструкция уже выглядит как

if (TRUE) { $p1 = $p_1; }


Поэтому всегда будет $p1 = $p_1
Название: Проблемы с голосовалкой
Отправлено: Yoda Kerr от 21 Июня 2002, 18:12:45
Какая же детская ошибка! Даже стыдно.