• 締切済み

フォームのエラーチェックを教えてください

ドリームウェーバー8で、MySQLとPHPでサイトを作っています。 フォームを使ったデーターベースへの書き込みの時に、フォーム上で「送信」をクリックした時にPHPによるエラーチェックをしたいと思います。なかなかできずに、困ってます・・・ 構文が長いので、質問内容にはいらない・・・どうしよ <?php if (!function_exists("GetSQLValueString")) { //文字列をSQLコマンド用に「'」を付加する function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { //magic_quotes_qpcの設定に応じて値を変換する $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); まだ、続きがあります・・・

みんなの回答

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.2

No1さんもオススメしてますが、私もQuick_Foam使ってます 慣れると FoamのHTMLも自動生成してくれるしデータのチェックも簡単に出来ます 英数のみ 数字のみ とか 必須入力とか は1行書き足せば実現できちゃいます 使いこなせれば 今後PHPをやっていく上でかなり強い見方になってくれると思います

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

要はform に入力されたデータのヴァリデーションを行いたいってことですよね? このミッションで使えるかは、わかりませんが HTML_quickform を使うと楽に実現できます。 きっと、今作っているスクリプト、やり直しになるかもしれませんが、 書くことは少なくなりますので、楽にはなると思います。 PEAR初心者ガイド -- HTML_QuickForm入門 http://www.planewave.org/translations/quickform/html_quickform.html

参考URL:
http://www.planewave.org/translations/quickform/html_quickform.html
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 括弧内の処理の順序

    プログラムを見ていて気になった点があります。 htmlspecialchars(mysql_real_escape_string(stripslashes($_POST["inp01"])),ENT_QUOTES) 上記の書き方の場合、処理される順番は 内から「stripslashes」→「mysql_real_escape_string」→「htmlspecialchars」になるんでしょうか? 逆に 外から「htmlspecialchars」→「mysql_real_escape_string」→「stripslashes」 でしょうか。 また処理の順番ですが、 「htmlspecialchars」→「stripslashes」→「mysql_real_escape_string」が正しい形でしょうか。

    • ベストアンサー
    • PHP
  • PHP+MySQLでエスケープされたデータを格納したい。

    php.iniの設定でmagic_quotes_gpc = Offにして、 mysql_real_escape_stringで出力エスケープしたデータを MySQLに格納するとバックスラッシュが格納されない。 エスケープされたデータを格納したいです。 php.iniの設定 --------------------------------------------------------- ; Magic quotes for incoming GET/POST/Cookie data. ; magic_quotes_gpc = On magic_quotes_gpc = Off ; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc. magic_quotes_runtime = Off ; Use Sybase-style magic quotes (escape ' with '' instead of '). magic_quotes_sybase = Off --------------------------------------------------------- $_POST['us_fname']には「'user'」という文字列が格納されています。 --------------------------------------------------------- $clean['us_fname'] = $_POST['us_fname']; $mysql['us_fname'] = mysql_real_escape_string($clean['us_fname']); $sql = "insert into table ( us_fname ) values ( '".$mysql['us_fname']."', ) "; --------------------------------------------------------- echo $mysql['us_fname']; で確認すると「\"user\" 」となっているんですが、 MySQLの中を確認すると「'user'」のままでシングルクォートがエスケープされていません。

    • ベストアンサー
    • PHP
  • エラーの意味と対策

    PHP-MySQL間でデータを更新するプログラムを作成、PHPファイルを 読み出し更新を行おうとしたところ、以下のメッセージが表示されました。 データの更新はできているのですが、このメッセージがよくわかりません。 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in E:\(ディレクトリ)\delete.php on line 106 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in E:\(ディレクトリ)\delete.php on line 106 ここに書かれているコードはSQLで $sql_update = "UPDATE ITEM SET DELETE_FLAG=1,LASTUPDATE_USER='".htmlspecialchars(mysql_real_escape_string($_COOKIE["loginuser"]),ENT_QUOTES)."',LASTUPDATE_DTTM=NOW() WHERE ITEM_ID=".$key; となっています。 今のところ「mysql_real_escape_string」をはずすとエラーが出ないのですが、 エラーの意味、原因、対策についてコメントいただければと思います。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 【php】改行にエスケープ文字が入る

    phpで  $_GET['a'] = stripslashes($_GET['a']); $_GET['a'] = mysql_real_escape_string($_GET['a']); $_GET['a'] → インサート と途中に stripslashes mysql_real_escape_string をはさんでから GETやPOSTを取得してるんですが改行が改行コードに変わってしまいます。 例えば質問フォームとかで  ---------------------------------------- 質問内容 ---------------------------------------- なんたら かんたら  ↓ サブミット ---------------------------------------- 投稿確認 ---------------------------------------- なんたら\n\rかんたら みたいなかんじです。 一旦文字コードをEUCにかえてから mysql_real_escape_stringを挟んだりしたりもしてみてますが 改行が改行コードになってしまいます。

    • ベストアンサー
    • PHP
  • PHP MYSQLでのページ間のやりとり

    ブログのようなサイトを作ろうと思い、PHP+MYSQLで四苦八苦しております。 ひとつのページにデータベースの一覧を表示することはできました。 ところがそのページの特定のリンク(IDなど)をクリックした後に詳細ページ(又は管理ページ)を表示させよと思ってますが、なんともうまくいきません。 ちなみに下記のリンクはDreamweaverで自動生成しました。一応動いたのですが if (!function_exists("GetSQLValueString")) { 以下から $colname_rst = "-1"; までさっぱりわかりません。 $colname_rst = "-1"; if (isset($_GET['title'])) { $colname_rst = $_GET['title']; } $query_rst = sprintf("SELECT * FROM sample WHERE title = %s", GetSQLValueString($colname_rst, "text")); のみで動作しないものでしょうか。 --------------------------------------------------------------------------------- <?php require_once('Connections/testserver.php'); ?> <?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; } } $colname_rst = "-1"; if (isset($_GET['title'])) { $colname_rst = $_GET['title']; } mysql_select_db($database_testserver, $testserver); $query_rst = sprintf("SELECT * FROM sample WHERE title = %s", GetSQLValueString($colname_rst, "text")); $rst = mysql_query($query_rst, $testserver) or die(mysql_error()); $row_rst = mysql_fetch_assoc($rst); $totalRows_rst = mysql_num_rows($rst); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>無題ドキュメント</title> </head> <body> <?php echo $row_rst['title']; ?> </body> </html>

    • 締切済み
    • PHP
  • mysql_real_escape_string?

    mysql_real_escape_stringは、非推奨なのでしょうか? ▽PHP: mysql_real_escape_string - Manual   http://php.net/manual/ja/function.mysql-real-escape-string.php >この拡張モジュールを使うことはおすすめできません。 MySQLi あるいは PDO_MySQL を使うべきです この「拡張モジュール」って何を意味しているのでしょうか? 「mysql_real_escape_string」のことでしょうか? それとも、mysql_set_charset()などで、「デフォルトの文字セット」を設定しておけば、利用しても良いのでしょうか?

    • ベストアンサー
    • PHP
  • エスケープ解除

    以下のようなPHP構文の時に、 magic_quotes_gpcがOnであっっとしたら、 どのようにエスケープを解除すればいいのでしょうか? // フォームの値を取得します。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k = $v){ // 「magic_quotes_gpc = On」のときはエスケープ解除 if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $$k = $v; } } else { exit(); }

    • 締切済み
    • PHP
  • [初心者]メールフォーム

    PHP初心者です。 メールフォームをPHPで作りました(貰いものでカスタマイズした感じ)。 FTPでサーバーの[httpdocs]の直下に置き、 誤作動はなく動いていたのですが、 今回サーバーを移行した関係で、 [www]→[htdocs]に同じものを入れたら、 htmlで入力した文字などが反映されなくなりました。 これはやはり階層の違いによるもの何のでしょうか? 現在、入力確認用とsend用に2つのphpを使用していますが、 どれを修正したらいいのか分かりません。 記入したものが反映されないので 以下の箇所が怪しいかと思いますが、どうでしょうか? <?php  //フォームの値を取得  if($_SERVER["REQUEST_METHOD"] == "POST"){   foreach($_POST as $k => $v){    //「magic_quotes_gpc = On」のときはエスケープ解除    if(get_magic_quotes_gpc()){    $v = stripslashes($v);    }    $v = htmlspecialchars($v);    $$k = $v;   }  }else{    exit();  } よろしくお願いします。

    • ベストアンサー
    • PHP
  • メールフォームが文字化けします、、、、

    メールフォームが文字化けします、、、。 「申します」→「垂オます」 とかなってしまいます。 また、「(1)」とかは「?」になってしまいます。 いろいろ調べてみたんですがこの辺かなぁとは思います。 ちなみにプログラミングなどド素人です。 ____________________________ if(get_magic_quotes_gpc()){$str = stripslashes($str);} //¥除去 return $str; } ____________________________ アドバイスお願い出来ましたら幸いです。><;

    • ベストアンサー
    • PHP
  • チェックボックスが複数選択できない

    アンケートフォームを作成していますが、チェックボックスで複数項目を選択しても最後のひとつしか表示されずに困っています。 配列での処理にすれば良いという事なので自分なりにやってみたのですが、今度は「Array」と表示されてしまい、具体的にどうしたらいいのか分かりません。 ※html側 <input type="checkbox" name="cat[]" value="abc"> <input type="checkbox" name="cat[]" value="def"> ※php側 <FORM action="<? echo $script; ?>" method="POST"> <? echo $err_message; ?> <?php foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if(get_magic_quotes_gpc()) $var = stripslashes($var); $var = htmlspecialchars($var); print("項目:".$key."選択したのは".$var); ?> <INPUT type="hidden" name="<?= $key ?>" value="<?= $var ?>"> <?php print("です。\n"); } ?> となっています。 また、選択内容をメール送信するようになっており、 foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if(get_magic_quotes_gpc()) $var = stripslashes($var); if($var == "eweb_submit") ; else $rebody.="[".$key."] ".$var."\n"; です。 複数項目をまとめて処理しているようで、どうしたらいいのか分かりません。ちなみに、http://www.eweb-design.com/のフリーのメールフォームを使っています。

    • ベストアンサー
    • PHP