2016-03-27 16 views
-1

Kodum aşağıda, Kodumda neyin yanlış olduğunu bilmiyorum, diyor Ben phpmyadmin gördüğünüzBu kodun nesi yanlış olduğunu söyleyemem, çünkü veriler php'yi gönderdikten sonra mysql veritabanına eklenmemiş veya herhangi bir hata veriyor

<?php 
$dbhost = 'localhost'; 
$dbuser = 'Krishna'; 
$dbpass = 'xxxx'; 
$conn = mysqli_connect($dbhost, $dbuser, $dbpass); 
session_start(); 
if (isset($_POST['submit'])){ 
    if(! $conn) { 
     die('Could not connect: ' . mysqli_error()); 
    } 
} 
mysqli_select_db($conn, "krishna"); 
$sql = "INSERT INTO contact_us (name, email, sub, mess) 
    VALUES ('$_POST[name]','$_POST[email]','$_POST[sub]','$_POST[mess]')"; 
if(! $sql) { 
    die('Error: ' . mysqli_error()); 
} 
echo "1 Record Added to Table\n"; 
echo "<a href='contactForm.html'>Back to main page</a>"; 
mysqli_close($conn); 
?> 
+2

Gerekli okuma: [? Nasıl PHP SQL-enjeksiyon önleyebilir] (https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in- php) –

+0

PHP'nin şimdiye kadar icat edildiği her acılı dersi öğrenmenize gerek kalmadan, probleminize bir çözüm üretmenize yardımcı olabilecek bir çerçeve kullanarak PHP'de kodlama yolları olarak symfony ve laravel'e biraz bakın. –

cevap

2

öncelikle bana Ben de ilk öğrenme iken olduğu SQL kullanmak ama sonra öğrenmek için bir girişim bu yapabileceğini söyleyerek başlayalım zaman gönderilen ancak veri mysql veritabanına eklenen gerçekleştirildi ...

Bu yöntem, SQL enjeksiyon saldırılarına tabidir ve kullanılmamalıdır. Herhangi bir kullanıcı girdisini doğrudan sterilize etmeden doğrudan almak, güvenlik açıklarını yönlendirebilecek kritik bir hatadır.

Artık SQL'inizi veritabanlarına giriş için hazırlayan PDO deyimleri gibi araçlarımız var. Lütfen kullanıcılardan herhangi bir şey alırken ifadelerinizi hazırlayan benzer bir araç kullanmayı düşünün.

Kullanıcılar güvenilir olmamalıdır. Aşağıdaki kodda bindValue, değişkeni $ id alır ve zararlı bir şey kaldırır.

<?php 
$stmt = $db->prepare("SELECT * FROM table WHERE id=? AND name=?"); 
$stmt->bindValue(1, $id, PDO::PARAM_INT); 
$stmt->bindValue(2, $name, PDO::PARAM_STR); 
$stmt->execute(); 
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
?> 

Yukarıdaki kodun kaynağı ve PDO'daki bir eğitim için bu bağlantıya bakın. Orada muhtemelen daha iyi öğreticiler var.

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

İlgili konular