大家好,请各位帮我分解这个Dreamweaver插入代码向导,尤其是代码的if (!function_exists("GetSQLValueString")) { ....}
部分:
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "",$theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form")) {
$insertSQL = sprintf("INSERT INTO feedback (name, email, phone, service, message) VALUES (%s, %s, %s, %s, %s)",
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['phone'], "text"),
GetSQLValueString($_POST['service'], "text"),
GetSQLValueString($_POST['message'], "text"));
mysql_select_db($database_kojexconsult, $kojexconsult);
$Result1 = mysql_query($insertSQL, $kojexconsult) or die(mysql_error());
$insertGoTo = "success.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
答案 0 :(得分:1)
我会看看能不能为你分解。
初始if检查函数是否尚未定义(http://php.net/manual/en/function.function-exists.php)。然后它通过并定义函数GetSQLValueString。
函数GetSQLValueString执行以下操作:
其余的代码是非常简单的db insert snippet。
$ editFormAction是从php运行的任何脚本设置的,例如insert.php。如果检查以确认存在查询字符串。如果有一个查询字符串,它会附加到$ editForm Action的末尾。使用上面的PHP_SELF,这可能是insert.php?name = Tim&amp; email=hello@world.com& phone = 8675309。
下一部分是将信息插入数据库的神奇之处。
在继续数据库插入之前,检查是否设置了MM_insert并且它的值是否为form。这基本上是一种健全性检查。在那之后,它为变量$ insertSQL提供了来自格式化字符串的值以及从表单传递的信息。您将看到它使用之前的GetSQLValueString函数来确保数据准备好进入数据库。一旦$ insertSQL拥有它的所有值,它就会选择DB然后执行查询。
之后,success.php设置为$ insertGoTo。 if检查以查看QUERY_STRING是否已传递到此页面。如果有QUERY_STRING,它会将其附加到success.php(success.php?name = Tim&amp; email=hello@world.com& phone = 8675309)。在if检查之后,它通过调用header重定向页面。
我希望这些信息可以帮助您了解脚本的细分。
-----个人注意-----
Dreamweaver不是开发PHP代码的绝佳应用程序。如果你想要一个很棒的IDE用于PHP,我推荐使用PHPStorm(http://www.jetbrains.com/phpstorm/)。我已经使用它超过两年了,并且喜欢它。我将它与一个出色的文本编辑器SublimeText2(http://www.sublimetext.com/2)相结合。