如何按此顺序生成字符

时间:2011-05-21 23:28:39

标签: php random character

我在下面有以下代码。我该怎么做才能让它包括特殊允许的(因为注射而不会压缩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 个答案:

答案 0 :(得分:1)

难道你不能只调用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\_

答案 1 :(得分:1)

你可以创建一个包含你想要使用的任何符号的数组,然后运行一个从该数组中随机选择5的循环。

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

for ($i = 0;$i<5;$i++)  $rnd_id .= $idchars[rand(0,strlen($idchars)-1)];