2013-07-27 42 views
2

這是行得通的,但是如何將變量的值放入數據庫而不通過$ _POST檢索它們? 這是php5中的新東西,還是我從未見過它以前用過這種方式?

<!doctype html> 

<html> 

<head> 
<title></title> 
</head 

<body> 
<form action="insert.php" method="post"> 
    First Name: <input type="text" name="fname" /><br> 
    Last Name: <input type="text" name="lname" /><br> 
    Username: <input type="text" name="uname" /><br> 

    <input type="submit" name="submit" value="Register"/><br> 
</form> 

</body> 
</html> 

insert.php

<?php 

$con=mysqli_connect("","","",""); 
// Check connection 
if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$sql="INSERT INTO traders (fname, lname, username) 
VALUES 
('$fname','$lname','$uname')"; 

if (!mysqli_query($con,$sql)) 
{ 
    die('Error: ' . mysqli_error($con)); 
} 
echo "1 record added " ; 

mysqli_close($con); 
?> 

回答

7

,因爲你在這裏使用的PHP現在已不建議/在PHP(主要是因爲安全問題),轉換成$_POST['fName']$fName

的新版本刪除 register globals選項

您應該始終使用$_POST/$_GET而不是

閱讀更多:http://php.net/manual/en/security.globals.php

+5

不僅如此,而且從不將數據轉換成SQL查詢!使用準備/參數化查詢來避免SQL注入攻擊,並且只是簡單的破解軟件。 – Brad

+0

@Jerzy再次感謝。我想我在更新後面。 – rogerthat

+0

@Brad在mysqli或PDO中準備/參數化? – rogerthat

2

不,這被稱爲Register Global,很久以前就被拒絕了,不應該使用這個!

啓用時,register_globals會爲您的腳本注入各種變量,如HTML表單中的請求變量。這加上PHP不需要變量初始化的事實意味着編寫不安全的代碼更容易。

欲瞭解更多信息: http://php.net/manual/en/security.globals.php

+0

謝謝你我在PHP上的方式。試圖找到現在正在使用的東西。在過去的2年中一直在C++/ASP的土地上 – rogerthat