Добрый день.
Ситуация такова:
1. При регистрации пользователя в таблицу mysql записывается произвольная строка, которая отправляется пользователю на почту вместе со ссылкой на мой сайт.
2. Пользователь кликает по этой ссылке, далее php сверяет эту ссылку с базой данных, и, если такая строка найдена в БД, то пользователь регистрируется, а произвольная строка напротив его имени обнуляется.
Вот в чём вопрос: как мне сделать проверку, существует ли только что созданная произвольная строка в БД?
И, если она существует, то надо сгенерировать новую.
Вот мой код на PHP & MySQL:
PHP:
скопировать код в буфер обмена
$temp = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0 , 20 ); #формирую строку $p = 0; while($n = mysql_fetch_array($res)){ #записываю столбец из БД с произвольными строками $r[] = $n['temp']; } foreach($r as $name){ #проверяю на существование такой же строки if ($name == $temp){ $p = 1; } } if ($p == 1){ #если такая есть, то генерирую новую пока она не станет уникальной do { $temp = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0 , 20 ); $p = 0; foreach($r as $name){ if ($name == $temp){ $p = 1; } } } while ($p != 1); } echo $temp;
Оно кагбы работает, но только один раз. Тоесть вновь созданная строка, когда у меня в БД она уже есть, то формируеся новая, но она уже не переверяется.
В чём может быть дело? подскажите, плиз!
|