解釋

2012-06-13 69 views
-1

嗨你們可以幫我打破這個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)); 
} 
?> 
+1

沒有比[文檔](http://php.net/)更好的地方開始了,特別是['function_exists'](http://us3.php。net/function_exists) –

+0

tereško,我知道你的評論籠罩在諷刺中,但我仍然不知道你爲什麼決定和我一起去南方。同樣,謝謝 –

回答

1

我會看看我能不能打破它給你的。

初始if檢查函數是否未定義(http://php.net/manual/en/function.function-exists.php)。然後它通過並定義函數GetSQLValueString。

功能GetSQLValueString執行以下操作:

  • 它執行的三元如果檢查與get_magic_quotes_gpc(獲取magic_quotes_gpc的當前的配置設置)。如果它通過,它會使$ theValue條紋,否則它只返回$ theValue。
  • 如果在執行mysql_real_escape_string或mysql_escape_string之前檢查是否存在「mysql_real_escape_string」,則另一個三元組。
  • 它選擇匹配$ theType變量的情況並將$ theValue設置爲適當的值。
  • 最後,它返回值,以便它可以用於代碼中的任何目的。

其餘的代碼是非常簡單的db插入片段。

$ editFormAction是從php運行的任何腳本(如insert.php)設置的。如果檢查以確認是否有查詢字符串。如果有查詢字符串,它會追加到$ editForm Action的末尾。使用上面的PHP_SELF,這可能是insert.php?name = Tim & email = [email protected] & phone = 8675309。

接下來的部分是將信息插入數據庫的魔力所在。

如果在繼續數據庫插入之前檢查是否設置了MM_insert並且其值爲表單。這本質上是一個健全的檢查。在那之後,它使用從表單傳遞的信息爲變量$ insertSQL提供來自格式化字符串的值。你會看到它使用前面的函數GetSQLValueString來確保數據準備進入數據庫。一旦$ insertSQL具有所有的值,它就選擇數據庫然後執行查詢。

之後,success.php被設置爲$ insertGoTo。 if檢查是否將QUERY_STRING傳遞給此頁面。如果有QUERY_STRING,它會將其追加到success.php(success.php?name = Tim & email = [email protected] & phone = 8675309)。在if檢查之後,它通過調用標題來重定向頁面。

我希望這些信息能幫助你理解腳本的細節。

-----個人注意這裏-----

Dreamweaver是不是用於開發PHP代碼的一個很大的應用。如果你想要一個優秀的IDE用於PHP,我推薦PHPStorm(http://www.jetbrains.com/phpstorm/)。我已經使用了兩年多了,並且很喜歡它。我將它與一個出色的文本編輯器SublimeText2(http://www.sublimetext.com/2)結合在一起。

+0

Tim Aldridge,非常感謝。我真的很感謝 –

+0

不客氣! – Telshin