ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1411  
Старый 02.01.2008, 02:39
Аватар для Noiro
Noiro
Познающий
Регистрация: 01.01.2008
Сообщений: 50
Провел на форуме:
187422

Репутация: 71
По умолчанию

Цитата:
Сообщение от Piflit  
...
Проверь наличие session_start(); во всех скриптах (оно должно быть и в pic.php и в файле с формой, до вывода каких-либо данных) и убери session_register("pic_val");
Ну и проверить сниффером наличие айди сессии в передаваемых браузером данных, может что-то режет куки
 
Ответить с цитированием

  #1412  
Старый 02.01.2008, 02:47
Аватар для Piflit
Piflit
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме:
5128756

Репутация: 2032


Отправить сообщение для Piflit с помощью ICQ
По умолчанию

Цитата:
Сообщение от Noiro  
Проверь наличие session_start(); во всех скриптах (оно должно быть и в pic.php и в файле с формой, до вывода каких-либо данных) и убери session_register("pic_val");
Ну и проверить сниффером наличие айди сессии в передаваемых браузером данных, может что-то режет куки
спасибо =)) дело оказалось в session_start();
почему можно было убрать session_register("pic_val"); ?
 
Ответить с цитированием

  #1413  
Старый 02.01.2008, 02:51
Аватар для Noiro
Noiro
Познающий
Регистрация: 01.01.2008
Сообщений: 50
Провел на форуме:
187422

Репутация: 71
По умолчанию

Цитата:
Сообщение от Piflit  
почему можно было убрать session_register("pic_val"); ?
Дык оно deprecated, плюс работает только если включено register_globals что вообще идея дурная.
Цитата:
Caution

If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled.
http://ru2.php.net/session_register
 
Ответить с цитированием

  #1414  
Старый 02.01.2008, 03:27
Аватар для Meanor
Meanor
Познающий
Регистрация: 09.09.2007
Сообщений: 66
Провел на форуме:
188412

Репутация: 41
По умолчанию

Piflit

Не забудь кэшировать md5 значение , которое вставляешь в сессию.

Если капча идет на регистрацию(например) , то не забудь при успешной регистранции сделать $_SESSION["pic_val"]=rand(1000,9999); т.к. если значение этой сессионной переменной не поменять, то юзер сможет регистрировать до бесконечности, вставив однажды нужный код.
 
Ответить с цитированием

  #1415  
Старый 02.01.2008, 04:34
Аватар для Piflit
Piflit
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме:
5128756

Репутация: 2032


Отправить сообщение для Piflit с помощью ICQ
По умолчанию

Цитата:
Сообщение от Meanor  
Piflit
Не забудь кэшировать md5 значение , которое вставляешь в сессию.
всмысле?..
Цитата:
Сообщение от Meanor  
Piflit
Если капча идет на регистрацию(например) , то не забудь при успешной регистранции сделать $_SESSION["pic_val"]=rand(1000,9999); т.к. если значение этой сессионной переменной не поменять, то юзер сможет регистрировать до бесконечности, вставив однажды нужный код.
$_SESSION["pic_val"]=rand(1000,9999); почему-то не пашет... использовал session_destroy();

ЗЫ какое значение у параметров функции bcmod();?

Последний раз редактировалось Piflit; 02.01.2008 в 04:58..
 
Ответить с цитированием

  #1416  
Старый 02.01.2008, 05:33
Аватар для Meanor
Meanor
Познающий
Регистрация: 09.09.2007
Сообщений: 66
Провел на форуме:
188412

Репутация: 41
По умолчанию

В смысле, что когда рандомишь то, что будет выведенно на картинке, в соответствующую переменную сессии заносишь md5 хэш того отрандомленного числа/слова. Потом при проверке делаешь что-то вроде :
if($_SESSION["pic_val"] == md5($_POST['capcha']) {все нормально}
else {все плохо}
(это для того, чтобы "злоумышленник" не брал нужный капченый код из сессии)

А насчет session_destroy(); , это, впринципе, даже лучше... ^^

Про bcmod()


string bcmod ( string left_operand , string modulus )
целый остаток от деления левого числа на правое
PHP код:
<?php
echo bcmod('4''2'); // -> 4=2*2+0  выведет 0
echo bcmod('2''4'); // -> 2=4*0+2  выведет 2
?>
По посту внизу:
Скажем так, что если все делается через cookies, то хэширование обязательно, если через сессии, то просто желательно...

Последний раз редактировалось Meanor; 02.01.2008 в 06:02..
 
Ответить с цитированием

  #1417  
Старый 02.01.2008, 05:48
Аватар для Noiro
Noiro
Познающий
Регистрация: 01.01.2008
Сообщений: 50
Провел на форуме:
187422

Репутация: 71
По умолчанию

Цитата:
Сообщение от Meanor  
if($_SESSION["pic_val"] == md5($_POST['capcha']) {все нормально}
else {все плохо}
(это для того, чтобы "злоумышленник" не брал нужный капченый код из сессии)
Не сочтите за флейм, но разницы в плане "надежности" между хранением в $_SESSION самого кода и его md5 нет никакой - без шелла/инклуда/дыры-на-просмотр-произвольных-переменных на сервере с капчей пользователь содержимое $_SESSION узнать не может.
 
Ответить с цитированием

  #1418  
Старый 02.01.2008, 22:54
Аватар для Piflit
Piflit
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме:
5128756

Репутация: 2032


Отправить сообщение для Piflit с помощью ICQ
По умолчанию

у меня есть в бд таблица с полями, у которых id (клолонка типа SERIAL) имеет значения 1, 2 и 3. (3 записи). как сделать, чтобы при удалении второй записи id третьей записи менялся с 3 на 2?
 
Ответить с цитированием

  #1419  
Старый 02.01.2008, 22:57
Аватар для Macro
Macro
Постоянный
Регистрация: 11.11.2006
Сообщений: 595
Провел на форуме:
1845062

Репутация: 1079


По умолчанию

Цитата:
Сообщение от Piflit  
у меня есть в бд таблица с полями, у которых id (клолонка типа SERIAL) имеет значения 1, 2 и 3. (3 записи). как сделать, чтобы при удалении второй записи id третьей записи менялся с 3 на 2?
mysql_query("UPDATE tablica SET id=2 WHERE id=3")

Или тебе это хочется автоматически? А зачем?
 
Ответить с цитированием

  #1420  
Старый 02.01.2008, 23:39
Аватар для Piflit
Piflit
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме:
5128756

Репутация: 2032


Отправить сообщение для Piflit с помощью ICQ
По умолчанию

Цитата:
Сообщение от Macro  
mysql_query("UPDATE tablica SET id=2 WHERE id=3")
гы. конечно автоматически))
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Delphi, .NET, Asm 5420 17.06.2010 13:33
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Форумы 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ