Как генерировать персонажей в этой последовательности - PullRequest
0 голосов
/ 22 мая 2011

У меня есть следующий код ниже. Что я могу сделать, чтобы включить в него специальные разрешенные (те, которые не будут содержать db из-за инъекций) такие символы, как:! @ #% & *

$random_id_length = 5; 


$rnd_id = crypt(uniqid(rand(),1)); 


$rnd_id = strip_tags(stripslashes($rnd_id)); 


$rnd_id = str_replace(".","",$rnd_id); 
$rnd_id = strrev(str_replace("/","",$rnd_id)); 

$rnd_id = substr($rnd_id,0,$random_id_length); 

Ответы [ 2 ]

1 голос
/ 22 мая 2011

Вы можете просто создать массив, содержащий любой символ, который вы хотите использовать, а затем запустить цикл, выбрав случайным образом 5 из этого массива.

$idchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789!@#%&*";
$rnd_id = "";

for ($i = 0;$i<5;$i++)  $rnd_id .= $idchars[rand(0,strlen($idchars)-1)];
1 голос
/ 22 мая 2011

Не могли бы вы просто позвонить mysql_real_escape_string(), чтобы экранировать символы в безопасные символы MySQL?

Редактировать

Вы также можете экранировать символы следующим образом: http://php.net/manual/en/function.preg-replace.php#example-3967

OR

Следуя формату, показанному в этой статье MySQL о правильном кодировании PHP для безопасности (в частности, стр. 78 и 79), вы можете использовать следующее как способ полностью его избежать. http://dev.mysql.com/tech-resources/articles/guide-to-php-security-ch3.pdf

$sub = addcslashes(mysql_real_escape_string("%something_"), "%_");
// $sub == \%something\_
...