所以我試圖創建一個表單,允許名稱像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