php form giriş doğrulama

5 Cevap php

i daha sonra gönderir ve bir php sayfada bir veritabanı ekler verileri girin hangi bir html sayfası var. nasıl ben alınan verileri veritabanındaki verilerin bir yinelenen olmadığını php doğrulamak istiyorsunuz?

herhangi bir yardım takdir.

5 Cevap

En Girdiğiniz kullanıcı adı zaten var olmadığını kontrol etmek istiyorum diyelim. Her zamanki SELECT sorgusu ile yapabilirsiniz:

$name = mysql_real_escape_string($_POST['name']);
$sql = "SELECT * FROM table WHERE name = '$name'";
$res = mysql_query($query, $connection);
if (mysql_num_rows($res) > 0 ) $error = "User already exists.";

Bu bir HTML değil, aynı zamanda php dosyasında formu olması iyi bir fikir olacaktır. Yani, girdiğiniz veri ile dolu tüm alanları ile geri göstermek mümkün olacak - büyük kullanışlılık gelişme

Eğer veri ile bir sorgu veritabanı yapmanız gerekiyor ve herhangi bir sonuç döndürülür olmadığını göreceksiniz. Onlar ise, o zaman bir yinelenen biliyorum. Örneğin:

$data = validate($_POST['data']);
$query = "select * from `tablename` where `fieldname` = $data limit 1;";

$result = mysql_query($query, $connection);

//now check that the number of rows is 0

if (mysql_num_rows($result) == 0 ) {

//insert the data
insert($data);

}

Bu duruma bağlıdır. Veritabanı ve arkadaşları birincil anahtarlar, benzersiz kısıtlamaları, varsa, veritabanı sadece veri eklemek olmayacak ve herhangi bir hataları yakalamak için deneyebilirsiniz. Aksi takdirde kullanıcının bilgi dayalı verileri sorgulamak ve eski bilgi için yeni bilgi karşılaştırmak gerekir.

Sadece bir formdan bir çift göndermek sorunu önlemek için çalışıyorsanız, o halde bir Redirect after POST

Kolay yolu tablodan birincil anahtar değerini tutan gizli bir alan kimliği sahip olmaktır. Eğer boşsa, bu otomatik olarak veri yeni ve takılması gerekir anlamına gelecektir. Aksi takdirde daha fazla ayrıntı verirseniz ben size daha ayrıntılı yanıt vermek için deneyebilirsiniz, belirli senaryo bağlıdır.

Burada bir form ile sayfa şema ve işleyicisi var:

<? 
if ($_SERVER['REQUEST_METHOD']=='POST') { 
  //validation part
  $err=''; 
  if (!$name) $err.="You must enter name<br>"; 
  $name = mysql_real_escape_string($_POST['name']);
  $sql = "SELECT * FROM table WHERE name = '$name'";
  $res = mysql_query($query, $connection);
  if (mysql_num_rows($res) > 0 ) $err. = "User already exists.";
  // etc

  // check if there was no errors:
  if (!$err) { 
    //save to the database
    mysql-query(...);
    //and redirect
    Header("Location: ".$_SERVER['PHP_SELF']); 
    exit; 
  } else {
    foreach($_POST as $key => $value) $_POST[$key] = htmlspecialchars($value);
  }
} else { 
  $_POST['name'] = $_POST['email'] = $_POST['notes'] =''; 
} 
//here goes the form, with error message, if any.
?> 
<html> 
<head></head> 
<body> 
<? if ($err) echo '<font color=red><b>'.$err.'</b></font>'; ?> 
<form action="<? echo $_SERVER['PHP_SELF'] ?>" method="POST"><br> 
Name: <input type="text" name="name" value="<? echo $_POST['name'] ?>"><br> 
Email: <input type="text" name="email" value="<? echo $_POST['email'] ?>"><br> 
Notes: <textarea rows="3" cols="30" name="notes"><? echo $_POST['notes'] ?></textarea><br> 
<input type="submit" name="submit"> 
</form> 
</body> 
</html>