所以我试图创建一个表单,允许名称像Name_Lastname注册名称输入的人。但它不工作,使用2个输入字段名IM检查名称是否有效
名称: 名字:
,然后我用sprintf混合这两种进Name_Lastname,而伟大的工程,但后来当我想检查一个输入的名字有无效的字符检查功能不起作用,即使我的名字是正确的,它显示它不是。
函数应该禁止,如果用户有任何东西,但第一姓氏和名字资本注册,并_,例如:Joan_Mackey =有效
joan_Mackey = invalid
joan0_Mackey = invalid
Joan92_Mackey = invalid
,但其没有工作,这里是代码
if(isset($_POST['register_button']))
{
$name = clear($_POST['firstname']);
$lastname = clear($_POST['lastname']);
$createdname = sprintf("%s_%s", $name, $lastname);
$ime = mysqli_real_escape_string($con, $createdname);
$email = clear($_POST['email']);
$pass = clear($_POST['password']);
$cpass = clear($_POST['confpassword']);
// Proveravanje ako ima _ i tih sranja
$query = "SELECT * FROM Igraci WHERE Ime = '$ime'";
$stmt = mysqli_prepare($con, $query) or die(mysqli_error($con));
mysqli_stmt_bind_param($stmt, "s", $ime);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_array($result);
if(preg_match("([A-Z]{1,1})[a-z]{2,9}+_([A-Z]{1,1})[a-z]{2,9}", $createdname))
{
if($row) // Ime nije registrovano kod dole
{
echo "Uneseno ime: '$ime' ";
}
else // Ime je vec registrovano, kod dole
{
echo "Uneseno ime: '$ime' ";
}
}
else
{
echo "format imena nije validan.";
exit();
}
}
你从货物邪教编程的痛苦。为什么当你在查询中有** NO **占位符时,首先使用参数绑定?如果您使用带有参数绑定的预处理语句,为什么要手动转义这些值? –
[Falsehoods Programmers Believe About Names](http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/) –
另一种逃避价值的方式是什么?我只知道真正的逃避 – Nathaniel