Veritabanı, belirli bir kimliği varsa nasıl mysql form ilanı durdurabilirim?

5 Cevap php

Ben mysql veri göndermek için kullanıyorum bir form var.

Formu göndermeden önce veritabanını kontrol ve formu göndermek için değil sütun 'MüşteriNo', eşit 'adınız' ve eğer öyleyse tüm alanları olup olmadığını görmek istiyorum.

Temelde, bir kez daha yayınlamaktan benim kullanıcıları sınırlamak için çalışıyorum. Kullanıcılar, benim sistem giriş ve ONE yazı yapmak mümkün olacak. Onlar yazıyı silmek ve değiştirmek mümkün olacak ama tek bir mesaja sınırlıdır.

Bunu nasıl yapacaktı?? Kod kadar:

<?php

include '../login/dbc.php';
page_protect();

$userid = $_SESSION['user_id'];

$sql="INSERT INTO content (customerid, weburl, title, description)
VALUES
('$_POST[userid]','$_POST[webaddress]','$_POST[pagetitle]','$_POST[pagedescription]')";

if (!mysql_query($sql))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

?>

5 Cevap

Iki sorgu kullanmanız gerekir. Zaten o kimliği ile bir kaydı mevcutsa, ilk SELECT customerid FROM content WHERE customerid = @ID bir satır dönecektir. Oradan, bir deyimi eğer zaten bir yazı var ya da kayıt eklemek için mevcut kodu ile devam sizin kullanıcı anlatacağım ya.

Kontrol etmek isteyen konum parametreleri ile bir deyim yapmak - tüm satırları döndürür sonra ekleme yapmıyoruz.

Psuedocode -

$query = "SELECT customerid FROM content WHERE customerid = $_POST['userid']";

1) Siz kullanabilirsiniz MySQL Procedures - Sen dan exacly istediğiniz olanlar gibi kurallar yazmak ve sonra sadece call onlara bakabiliriz MySQL fonksiyonu bir tür olarak bir prosedür düşünebilirsiniz sizin PHP dosyaları.

Sen gibi yapabilirsiniz:

<?php

session_start(); // this is important if you are missing one

include '../login/dbc.php';
page_protect();

$userid = mysql_real_escape_string($_SESSION['user_id']);

$check_query = "select userid from content where userid = $userid";
$result = mysql_query($check_query) or die(mysql_error());

if (mysql_num_rows($result))
{
  exit('User is already their for a post !!');
  // or redirect using header function.
}

$sql="INSERT INTO content (customerid, weburl, title, description)
VALUES
('$_POST[userid]','$_POST[webaddress]','$_POST[pagetitle]','$_POST[pagedescription]')";

if (!mysql_query($sql))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

?>

Sen çok savunmasız SQL injection:

$sql="INSERT INTO content (customerid, ...) VALUES ('$_POST[customerid]', ...)";
                                                     ^

This article SQL Injection ve nasıl PHP güvenlik açığını önlemek için açıklar.