-1

if (!function_exists("GetSQLValueString")) { ....}こんにちは、この Dreamweaver 挿入コード ウィザード、特にコードの一部を分解するのを手伝ってください。

<?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));
}
?>
4

1 に答える 1

1

私はあなたのためにそれを分解できるかどうか見ていきます。

関数が定義されていないかどうかを確認する最初の if チェック (http://php.net/manual/en/function.function-exists.php)。次に、関数 GetSQLValueString を実行して定義します。

関数 GetSQLValueString は次のことを行います。

  • get_magic_quotes_gpc (magic_quotes_gpc の現在の構成設定を取得します) でチェックする場合、3 値を実行します。パスした場合は $theValue をストライプし、そうでない場合は $theValue を返します。
  • mysql_real_escape_string または mysql_escape_string のいずれかを実行する前に、"mysql_real_escape_string" が存在するかどうかを確認するために、別の 3 項 if check を実行します。
  • $theType 変数に一致するケースを選択し、$theValue に適切な値を設定します。
  • 最後に、値を返すので、コードで提供されるあらゆる目的に使用できます。

コードの残りの部分は、非常に単純な db insert スニペットです。

$editFormAction は、insert.php などの php によって実行されているスクリプトから設定されます。クエリ文字列があることを確認する if チェック。クエリ文字列がある場合は、$editForm アクションの末尾に追加されます。上記の PHP_SELF を使用すると、insert.php?name=Tim&email=hello@world.com&phone=8675309 のようになります。

次の部分は、データベースに情報を挿入する魔法です。

if は、MM_insert が設定されていて、その値が form であったかどうかを確認してから、データベースの挿入を続行します。それは本質的に健全性チェックです。その後、変数 $insertSQL に、フォームから渡された情報を含む書式設定された文字列の値を指定します。前の関数 GetSQLValueString を使用して、データがデータベースに入る準備が整っていることを確認します。$insertSQL がすべての値を取得したら、DB を選択してクエリを実行します。

その後、success.php が $insertGoTo に設定されます。QUERY_STRING がこのページに渡されたかどうかを確認する if チェック。QUERY_STRING があった場合、success.php に追加されます (success.php?name=Tim&email=hello@world.com&phone=8675309)。if チェックの後、header を呼び出してページをリダイレクトします。

この情報が、スクリプトの内訳を理解するのに役立つことを願っています。

-----個人的なメモはこちら-----

Dreamweaver は、PHP コードを開発するための優れたアプリケーションではありません。PHP で使用する優れた IDE が必要な場合は、PHPStorm (http://www.jetbrains.com/phpstorm/) をお勧めします。2年以上愛用しています。私はそれを優れたテキスト エディター、SublimeText2 (http://www.sublimetext.com/2) と組み合わせます。

于 2012-06-13T16:22:36.047 に答える