в общем вопрос то сам вот в чём.
когда юзер впервые входит на сайт у негона экране в определённом месте появляется формочка для авторизации, после того как он авторизовался он переходит на главную страницу и по идее менюшка для ввода имени и пароля должна исчезать, так как в коде прописано - если куки не пустые то не выводить форму авторизации, а инфа после авторизации записывается в куки, и вместо неё должна быть надпись "Вы авторизованы $name" но этого но происходит, но это ещё не самое странное. Самое странно что когда юзверь переходит в меню авторизации/регистрации это самое окошко исчезает и скрипт работает корректно :( я вообще не могу понять в чём причина...
<?php
Error_Reporting(E_ALL & ~E_NOTICE);
if (!$_COOKIE["valid_user"])
{ echo '
<form name=enterform method=post action=/underconscio/cmsintez/registration/auth.php>
<td bgcolor=ffffff width=126 height=23></td><td bgcolor=ffffff width=162 height=23>
<small>Имя:</small>
<input style=background-color:EDEBEB;color:000000;font-size:10;height:17;width:80 type=text name=name>
</td><td bgcolor=ffffff width=136 height=23>
<small>Пароль:</small>
<input style=background-color:EDEBEB;color:000000;font-size:10;height:17;width:80 type=password name=pass>
</td><td bgcolor=ffffff width=149 height=23>
<input style=background-color:ffffff;border:0;font-size:11;height:20;width:50 type=submit name=submit value=вход>
</td>
</form>';
}
else {
echo '<td bgcolor=ffffff width=126 height=23></td>
<td bgcolor=ffffff width=162 height=23><small>Вы авторизованы <b>';
echo $valid_user;
echo '</b></small></td>
<td bgcolor=ffffff width=136 height=23></td>
<td bgcolor=ffffff width=149 height=23></td>
';}?>
этот код инклудится из папки, допустим "Authorization" и кода мы нажимаем на "вход" мы перемещаемся в эту папку, вот там то все куки и работают как надо - с ними там что хочу то и делаю, но как только возвращаюсь в корневую папку - ничего не работает. блин - видать туплю, ожет ктонибуль "популярно" обьяснить?
код авторизации/регистрации:<?php
include ("config.php");
//начало проверка на правильность ввода имени и пароля пользователя.
if (empty($name))
{
echo 'Вы не ввели <b>Имя</b>, пожалуйста попробуйте ещё раз.';
exit();
}
if (empty($pass))
{
echo 'Вы не ввели <b>Пароль</b>, пожалуйста попробуйте ещё раз.';
exit();
}
$name=trim($name);
$pass=trim($pass);
if (!ereg("[A-Za-zА-Яа-я0-9'()|\/,.~!@#$%^&*;: -]{1,20}", $name))
{
echo 'Введены запрещённые символы в <b>Имени</b>, попробуйте ещё раз.';
exit();
}
else {
if (!ereg("[A-Za-zА-Яа-я0-9]{1,20}", $pass))
{
echo 'Введены запрещённые символы в <b>Пароле</b>, попробуйте ещё раз.';
exit();
}
else {
$pass=md5($pass);
}
}
//конец проверка на правильность ввода имени и пароля пользователя.//изменяем время последнего посещения страницы Юзером.
$query2 = "UPDATE user SET last_time = NOW() FROM user WHERE name = '".$name."'";
mysql_query($query2);
//данные занесены//начало проверки на существование тковых логина и пароля и соответствнный вывод либо не выводформы регистрации.
$query = "SELECT pass FROM user WHERE name='".$name."'";
$passw = mysql_query($query);
$password = mysql_fetch_array($passw);
$passw_num_rows = mysql_num_rows($passw);
if(!$passw)
{
echo "Ошибка выполнения запроса.";
exit();
}
if (empty($passw_num_rows))
{
include ("../../up.html");
include ("../../buttons.php");
echo '<td width=100% bgcolor=D4D4D4 valign=top>
<table width=100% border=0 cellpadding=0 cellspacing=0><tr><td>';
echo 'Пользователь с таким именем не обнаружен.<br>Пожалуйста повторите авторизацию.<br>Если Вы не зарегистрированы, то можете зарегистрироваться здесь.';
include ("registration.php");
include ("../../dawn.html");
exit();
}
else
{
{
setcookie("valid_user", $name, time()+604800);
if (!$_COOKIE["valid_user"])
{
echo 'Плюшки не заполнены.';
}
else
{
echo 'Плюшки вродебы заполнены';
}
}
include ("../../up.html");
include ("../../buttons.php");
echo '<td width=100% bgcolor=D4D4D4 valign=top>
<table width=100% border=0 cellpadding=0 cellspacing=0><tr><td>';
echo 'Пользователь с таким именем действительно есть. и его зовут <b>';
echo $name;
echo '</b>!<br>';
if ($pass == $password['pass'])
{
echo 'И его пароль равен паролю введённому Вами.';
}
else
{
echo 'Но его <b>пароль не равен тому что ввели Вы</b>.<br> Попробуйте пройти авторизацию повторно.<br>Если Вы не зарегистрированы, то можете сделать это здесь';
include ("registration.php");
}include ("../../dawn.html");
exit();
}
?>
Лень читать код, может страница тупо берётся браузером из кеша? :) Ладно, читаем.Ой, а разве хранение даже хешированного пароля в куках хоть как-то имеет отношение к безопасности?
Ой, а разве вам было сложно прочитать русифицированную документацию к команде setcookie и узнать, зачем нужен параметр path?
хы - грубиян :))ой - а разве пароль записывается в моём коде в Куки? - вроде нет.
ой - а я прочитал этот ман - только вот беда - вписываю в path $_SERVER['HTTP_HOST'] а Куки в таком случае вообще создаваться не хотят... вот этого то я и не понял - почему не создаются...
>ой - а разве пароль записывается в моём коде в Куки? -
>вроде нет.
Хм. И верно. Вообще пипец, никакой безопасности.>ой - а я прочитал этот ман - только вот беда -
>вписываю в path $_SERVER['HTTP_HOST'] а Куки в таком случае вообще создаваться
>не хотят... вот этого то я и не понял - почему
>не создаются...
Прочитай ещё раз и найди отличия между параметрами "path" и "domain".>хы - грубиян :))
Атож :)
>Хм. И верно. Вообще пипец, никакой безопасности.
Дык это, у меня в куку тока логин заносится... или я не прав? ну я куку ужераз Цать проверял - пароля там нет точно!
>Прочитай ещё раз и найди отличия между параметрами "path" и "domain".
да я как отпостился - сразу и понял что косяка давонул :) ток по ману я так и не понял что нужно писать в Path... там вообще какой то наз Размус написан... можь обьяснишь или дай ссылку где подробнее написано, пожалуйста...
>>хы - грубиян :))
>Атож :)
Дык - все мы грубияны :)
>>Хм. И верно. Вообще пипец, никакой безопасности.
>Дык это, у меня в куку тока логин заносится... или я не
>прав? ну я куку ужераз Цать проверял - пароля там нет
>точно!
Как тебе сказать... Просто открою для тебя тайну, что куки хранятся на стороне пользователя и могут быть им установлены в любое значение. Дальше продолжать надо?>>Прочитай ещё раз и найди отличия между параметрами "path" и "domain".
>да я как отпостился - сразу и понял что косяка давонул :)
>ток по ману я так и не понял что нужно писать
>в Path... там вообще какой то наз Размус написан... можь обьяснишь
>или дай ссылку где подробнее написано, пожалуйста...
If set to '/', the cookie will be available within the entire domain. Какая буква не понятна?Советую поискать в интернете информацию по теме "сессии в php", а заодно хотя бы на том же citforum.ru почитать о протоколе CGI. Потому как практика штука хорошая, но гораздо продуктивнее будет, если узнаешь хотя бы что такое куки, где они хранятся и в каком формате. В каких случаях они передаются на сервер и как часто.
>Как тебе сказать... Просто открою для тебя тайну, что куки хранятся на
>стороне пользователя и могут быть им установлены в любое значение. Дальше
>продолжать надо?Это для меня не тайно :))) ток я всёравно непонимаю причём тут пароль? :( ну туплю видимо :(
>If set to '/', the cookie will be available within the entire
>domain. Какая буква не понятна?вообще буквы понятны все, ток вот их смысл понимаю плохо ибо английский знаю на уровне хомячка :) тут сказано типо если в поле PATH прописать / то будет установлина кука в исходном каталоге - да? :)
>Советую поискать в интернете информацию по теме "сессии в php", а заодно
>хотя бы на том же citforum.ru почитать о протоколе CGI. Потому
>как практика штука хорошая, но гораздо продуктивнее будет, если узнаешь хотя
>бы что такое куки, где они хранятся и в каком формате.
>В каких случаях они передаются на сервер и как часто.Вот это верно - спасибо...
Я могу прописать у себя куку с любым именем и приконнектиться к твоему сайту как любой из зарегистрированных пользователей. Пароли тут не при чём, мне их знание даже не понадобится.
>Я могу прописать у себя куку с любым именем и приконнектиться к
>твоему сайту как любой из зарегистрированных пользователей. Пароли тут не при
>чём, мне их знание даже не понадобится.А - ну да :)) логично :)) ток вот кстати я пытался подделать себе кук с Adminom а она почему то сращу удаляется или чё то там происходит - что всёравно - не работает, чё это закосяк такой? ну или точнее - косяк то явно я - мож подскажешь как это делается?
и чтобы ты посоветовал в данном случае использовать? Сессии? была такая мысль, я знаю что каким то макаром соединяюст сессии и куки, но как - то есть мне интересен сам алгоритм работы такого скрипта...