Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Аномалия с Cookies!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
improbable
Отправлено: 26 Ноября, 2012 - 15:07:55
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




И снова я.

Ужасная аномалия!

работает, а вот

- нет. Пипец, я себе уже всю голову сломал.

С самого начала у меня в скрипте был второй вариант (со временем).
Куки ну никак не выводились. Я весь скрипт перелопатил, искал конфликты с
reCaptcha. Ничего не нашёл. Тут (я тут 2 раза вопрос по этим кукам задавал) сказали принудительно включить буферизацию вывода в скрипте. Я не знаю что это, оно и ясно, потому что с самого начала я учусь на 000webhost, где output_buffering = "On".
Но всё-таки откопал и попробовал, ничего не получилось, куки как не записывались, так и не пишутся. Потом я уже совсем разозлился и начал по символу всё перебирать! Вот, нашёл, что всё зависит от установленного времени. Пффф. Как такое может быть?
Подскажите? Все скрипты (и инклуд) в utf-8.

PHP:
скопировать код в буфер обмена
  1. echo'
  2. <html>
  3. <head>
  4. <META HTTP-EQUIV="Refresh" Content="3, URL=/index.php">
  5. <title>Аунтефикация...</title>
  6. </head>';
  7. require_once('recaptchalib.php');
  8. $privatekey = "6LdEidkSAAAAAO2B4Ygfgyg6UJrLIFEohAHXa2oo";
  9. $resp = recaptcha_check_answer ($privatekey,
  10.                               $_SERVER["REMOTE_ADDR"],
  11.                               $_POST["recaptcha_challenge_field"],
  12.                               $_POST["recaptcha_response_field"]);
  13. if (!$resp->is_valid) {
  14.     // What happens when the CAPTCHA was entered incorrectly
  15.     die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
  16.          "(reCAPTCHA said: " . $resp->error . ")");
  17.   } else {
  18. $hash=$_POST['hash'];if($hash!=(md5('Salt'.$_SERVER['REMOTE_ADDR']))){die('Система безопасности выявила проблему');}
  19. $pass=(mysql_escape_string((md5('Salt'.$_POST['password']))));$uname=(mysql_escape_string($_POST['username']));
  20. $configrequired='1';include'configuration.php';
  21. mysql_connect($config['dbhost'],$config['dbuname'],$config['dbpass']) or die('Подключение к базе данных не удалось');
  22. mysql_select_db($config['dbname']) or die(mysql_error());
  23. $query=mysql_query("SELECT * FROM `users` WHERE `username` = '$uname' AND `password` = '$pass'");
  24. if((mysql_num_rows($query))=='1'){
  25. if($result=mysql_fetch_array($query)){
  26. if($result['banned']=='1'){
  27. echo'К сожалению, Ваш аккаунт заблокирован, и вход на него невозможен.';
  28. }else{
  29. if($result['ip']!=(md5('Session'.$_SERVER['REMOTE_ADDR']))){
  30. $query=mysql_query("UPDATE `users` SET `banned` = '1' WHERE `username` = '$uname'");
  31. echo'Система безопасности выявила проблему, аккаунт заблокирован!';
  32. }else{
  33. $sessionkey=(md5('SeSsIoN'.rand(1, 100).$_SERVER['REMOTE_ADDR'].rand(1,100)));
  34. $query=mysql_query("UPDATE `sessions` SET `status` = '0' WHERE `sessionkey` = '$sessionkey'");
  35. $query=mysql_query("UPDATE `sessions` SET `status` = '0' WHERE `username` = '$uname'");
  36. $query=mysql_query("INSERT INTO `sessions` VALUES('$sessionkey', '$uname', '$pass', '1')");
  37. if(SetCookie("usessionkey", $sessionkey)){echo'Авторизация прошла успешно!';}else{echo'Установка cookies не удалась!';}
  38. }}}}else{die('Имя и/или пароль были введены неверно!');}
  39. }
  40. echo'</html>';

(Отредактировано автором: 26 Ноября, 2012 - 15:08:25)

 
 Top
EuGen Администратор
Отправлено: 26 Ноября, 2012 - 15:32:58
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




improbable пишет:
SetCookie("usessionkey", $sessionkey, time()+3600);

Вероятно, время на сервере и время на клиенте - в разных часовых поясах. Вполне может оказаться так, что time()+3600, устанавливаемое на сервере, для клиента может быть уже в прошлом.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
improbable
Отправлено: 26 Ноября, 2012 - 17:11:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




EuGen пишет:
improbable пишет:
SetCookie("usessionkey", $sessionkey, time()+3600);

Вероятно, время на сервере и время на клиенте - в разных часовых поясах. Вполне может оказаться так, что time()+3600, устанавливаемое на сервере, для клиента может быть уже в прошлом.

Блин, так и есть Хм . Но мне помнится, что раньше всё работало, хотя разница между мной и сервером чуть ли не в 8 часов... Ставил на полчаса, и всё работало...
С помощью PHP, как я понимаю, время клиента определить нельзя? Растерялся
 
 Top
EuGen Администратор
Отправлено: 26 Ноября, 2012 - 17:24:57
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Оставляйте установку кук на совести jsvascript клиента, как вариант.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB