php if deyimi içinde bir değişken olarak bir sql sorgu sonucunu ayarlama

3 Cevap php

Bir belirsiz soru tür ama ben bir kullanıcı adı alınmış ya da olup olmadığını kontrol etmek için çalışıyorum. Ben şimdi sahip kod erroring değil ama bir şey olsun $ username değişkeni yankılanan zaman da, çalışmıyor.

$sql="SELECT people_username FROM people WHERE people_username='{$_POST['username']}'";

    //Set the result of the query as $username and if the select fails echo an error message
    if ($username = !mysql_query($sql,$con)) {
        die('Error: ' . mysql_error());
    }

    else if ($_POST['username'] == $username){
        $errors[  ] = 'This username is already in use, please try again...sorry';
    }

Bir yazım hatası mı yoksa benim mantığı yanlıştır?

3 Cevap

Ben sadece yaparım

$resource = mysql_query("SELECT people_username FROM people WHERE people_username='".mysql_escape_string($_POST['username'])."'");
if(!$resource) {
    die('Error: ' . mysql_error());
} else if(mysql_num_rows($resource) > 0) {
    $errors[  ] = 'This username is already in use, please try again...sorry';
} else {
    //username is not in use... do whatever else you need to do.
}

Arsız bazı kullanıcı deneyin olursa: '; DROP people; -- bir adı olarak, büyük belada olurdu.

Bu konu hakkında daha fazla okuma için aşağıdaki yığın taşması sonrası kontrol etmek isteyebilirsiniz:

Diğer sorununa gelince, diğer cevaplar zaten geçerli çözümler ele. Ancak, ilk önce SQL injection açığı gidermek için emin olun. Bu çok erken bunun için asla.

Kod yanlış.

Bu gibi bir şey olmalıdır:

$sql="SELECT people_username FROM people WHERE people_username='".mysql_escape_string($_POST['username'])."'";

//If the select fails echo an error message
if (!($result = mysql_query($sql,$con))) {
    die('Error: ' . mysql_error());
}

$data = mysql_fetch_assoc($result);

if ($data == null){
    $errors[  ] = 'This username is already in use, please try again...sorry';
}

Eğer SQL sorguları kullanmak dizeleri kaçmak için gereken güvenlik nedeniyle dikkat edin.