【发布时间】:2012-04-08 18:56:43
【问题描述】:
我正在尝试使用异常验证我的 php 表单,但不知何故它不起作用。如果用户在“nameg”中输入任何不是字符串的字符并且在“amountg”中输入任何不是整数的字符,则应该抛出异常。在这种情况下是否应该使用异常:
if(!empty($_POST['nameg']) && !empty($_POST['amountg']))
{
$user="rootdummy";
$pass="password";
$db="practice";
$nameg=$_POST['nameg'];
$amountg=$_POST['amountg'];
try{
if(!is_int($amountg) || !is_string($nameg)){
throw new Exception("This is the exception message!");
}
}
catch (Exception $e){
$e->getMessage();
}
mysql_connect('localhost',$user,$pass) or die("Connection Failed!, " . mysql_error());
$query="INSERT INTO practable (name,given) VALUES('$nameg',$amountg) ON DUPLICATE KEY UPDATE name='$nameg', given=IFNULL(given + $amountg,$amountg)";
mysql_select_db($db) or die("Couldn't connect to Database, " . mysql_error());
mysql_query($query) or die("Couldn't execute query! ". mysql_error());
mysql_close() or die("Couldn't disconnect!");
include("dbclient.php");
echo "<p style='font-weight:bold;text-align:center;'>Information Added!</p>";
}
【问题讨论】:
-
您的代码容易受到 SQL 注入的攻击,并且 mysql_* 已被温和弃用。
-
你以
$_POST['amountg']发布了什么值? -
是 $_POST['amountg'] 是用户通过表单输入的值。
-
来自 _POST/_GET/_REQUEST 的所有内容都是一个字符串,即使它是一个“数字”。
-
@MarcB 我想现在我明白为什么即使我传递一个整数它也会抛出异常......你将如何验证这个表单?
标签: php mysql forms exception exception-handling