Forum Webscript.Ru

Программирование => PHP => Тема начата: Rodent от 25 Сентября 2003, 09:55:59

Название: Cookies
Отправлено: Rodent от 25 Сентября 2003, 09:55:59
Доброе время суток.
У меня проблема с cookies. Писал я сайт на основании статьи "Действительно легкая смена дизайна сайта". То есть. У меня общий файл ((index.php) куда подключаються в зависимости от ссылки другие файлы. Так вот я хочу сделать администрирование, но не на отдельных страницах а на этой же, путем подключения страниц администрирования. Но мне ведь нужно передовать значения login и password на эти страницы и делать проверку. Я решил пойти по пути меньшего сопротивления через cookies.

index.php:
if (!isset($page)) $page="main";
$data=file("config.inc.php");
$max=count($data);
for ($i = 1; $i < $max; $i++):
   list($name,$file,$title)=explode("\\t",$data[$i]);
   if ($page==$name):
      break;
   ellse:
      $file="main";
      $title="Ошибка 404";
   endif;
endfor;

echo"";
echo"
";
include("_header.php");
echo"
";
include("_menu.php");
echo"
";
include($file.".php");
echo"
";
include("_add.php");
echo"

";
?>

файл проверки пароля pass.php
$logined = 0;

if (isset($page)):
        $password[\'Rodent\'] = "123";
        if (!isset($login) || !isset($password[$login]) || $pass!=$password[$login]):
        $logined = 0;
     setcookie ("login", "", 0);
     setcookie ("pass", "", 0);
   else:
       $logined = 1;
       setcookie ("login", $login);
       setcookie ("pass", $pass);
endif;
endif;
?>

ну и сам файл(ы) администрирования
require ("pass.php");

if ($logined == 1):
?>


Привет
Администрирование



" method="post">
Администрирование


Имя:

Пароль:





Заранее спасибо за помощь. Если я невнятно выразился задавайте вопросы.
Название: Cookies
Отправлено: Rodent от 25 Сентября 2003, 09:59:28
Когда зашли в администрирование, эта менюшка должна с вами по идее по всем странцам ходит, а она.. не ходит
Название: Cookies
Отправлено: Меняздесьдавнонет от 25 Сентября 2003, 11:10:07
А отлаживать свою программу нынче не в моде?

То есть, "ходит-не ходит" - это единственный способ узнать, что и как делает твоя программа?

Ой, нет, забыл. Конечно есть еще один!
Вывалить текст на форум - "разбирайтесь, ребятки".
Прелестно.

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

Неужели не очевидно, что это надо делать самому?
Что надо контролировать программу на всех этапах выполнения, а не тупо смотреть в монитор  - "ходит - не ходит".
Так ты никогда ни одной программы не напишешь.

И на форуме ответа не получишь.
Научись находить проблему, и потом уже с ней задавать вопрос.
Не "не работает!!!" а "ставлю куку, а она от браузера не приходит".

Хотя я сомневаюсь, что тебе вообще понадобится помощь форума.


И еще.
Не пояснишщь лы ты глубокий смыйл функции cut?
Некоторые ее элементы вызывают у меня неподдельное изумление.
Название: Cookies
Отправлено: Rodent от 25 Сентября 2003, 15:59:15
Я на этой проблемой уже 3 дня голову ломаю, куки отправляет, переменные в куки есть, но скрипт их не схватывает.
Думаешь я сам не догоняю, что надо все проверить, но я чайник, проверил все что мог, и не нашел...
Если ты спец ты бы помог, а не языком чесал...
Название: Cookies
Отправлено: Меняздесьдавнонет от 26 Сентября 2003, 11:57:20
ага. "Не учите меня жить. Лучше помогите материально".

Очень жаль, что такая кладезь мудрости, излитая мной на тебя, была сочтена "чесанием языком", а слово "помощь" ты воспринимаешь только в одном значении - "сделайте за меня".

Не вижу смысла помогать человеку, который не хочет помочь себе сам. а завтра у тебя опять будет ошибка, и ты снова - не умея искать, придешь - "исправьте мой скрипт".
Я, конечно, спец, но извини, с какой стати я должен за тебя делать?

Я попытался тебе помочь.Ты моим словам не внемлешь.
Увы.
Название: Cookies
Отправлено: Меняздесьдавнонет от 26 Сентября 2003, 12:21:52
Цитировать
Rodent:
переменные в куки есть, но скрипт их не схватывает.

Что это значит - "не схватывает"?
откуда ты знаешь, что есть? Как ты проверял?
ты в скрипте их выводил?
Выводятся? А что значит - "не схватывает" тогда?
Не выводятся? Тогда с чего ты сказал. что они есть?

print_r($HTTP_COOKIE_VARS);
что тебе выводит?

Ты условие свое проверил?
каждый из его элементов проверил в отдельности?
Не умозрительно проверил, а руками, в скрипте!
Вывел на экран результат каждого из условий!

Делай.
Название: Cookies
Отправлено: Yukko от 26 Сентября 2003, 12:25:04
Я за свои слова не отвечаю, да и не телепат я, но догадка у меня есть. Если я неправ, извините...
Куки не ставятся, это сто процентов.
Скорее всего схема такая:
error_reporting(0);
Вывод в браузер
Попытка поставить куки...
Название: Cookies
Отправлено: Rodent от 28 Сентября 2003, 17:04:22
Огромное спасибо всем за помощь.

Yukko оказался прав, как только я заремачил error_reporting все стало на свои места.

RomikChef Куки я проверял визуально, т.е. находил куки и смотрел что в них. Но, к сожалению, я это делал, только когда страничку отдельно просматривал, а когда ее вставлял в index.php то получал вот это: Warning: Cannot add header information - headers already sent...

Интересно а кто-нить знает как это обойти, или когда надо куки посылать??? Конечно можно и сессию, но тогда подскажите какой-нить ресурс, подробно описывающий эту прелесть, или книгу.

А если, я добавлю код из _pass.inc в  index.php. Это сработает??? Сработало!!! но тогда получается что у меня эти переменные ($login и $pass) будут все вр6мя проверяться... ну в общем это хорошо... однако есть ли какие-нить минусы в том что я сделал???

Заранее спасибо.

P.S. RomikChef Да, спасибо, что поставил на путь истинный, был не прав, исправлюсь. :-))
Название: Cookies
Отправлено: Rodent от 28 Сентября 2003, 17:20:34
RomikChef  И еще тебе не понравился мой cut(); (его смысл вроде как понятен) Что именно тебе не понравилось??? И что по-твоему следует удалить/добавить (в общем как его изменить)??? Если конечно тебе не сложно...

function cut($string) {
   $string = ereg_replace(\'\\\\\\"\',""",$string);
   $string = ereg_replace("\\\\\\\'",""",$string);
   $string = str_replace("\\r","",$string);
   $string = str_replace("\\t"," ",$string);
   $string = str_replace("\\n","
",$string);
   $string = str_replace("%","%",$string);
   $string = str_replace("^ +","",$string);
   $string = str_replace(" +$","",$string);
   $string = str_replace(" +"," ",$string);
   $string = str_replace("|"," ",$string);
   return ($string);
}