-5

php wap サイトで奇妙なエラーが発生することがあります。永続的ではなく、時々発生するだけで、ページを更新するとエラーが発生し、通常のページが表示されます。エラーのスクリーンショットを添付しています-

ここに画像の説明を入力

fun.inc.php の 172 行目は -

return mysql_real_escape_string($str);

理解を深めるために164行から212行を貼り付けています

function clean($str)
{
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
$str = str_replace("<",'',$str);
$str = str_replace(">",'',$str);
}
return mysql_real_escape_string($str);
}

function regchars($word){
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
for($i=0;$i<strlen($word);$i++){
$ch = substr($word,$i,1);
$nol = substr_count($chars,$ch);
if($nol==0){
return true;
}
}
return false;
}

function nospace($word){
$pos = strpos($word," ");
if($pos === false){
return false;
}else{
return true;
}
}

function checknumber($word){
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$ch = substr($word,0,1);
$sres = ereg("[0-9]",$ch);
$ch = substr($word,0,1);
$nol = substr_count($chars,$ch);
if($nol==0){
return true;
}
return false;
}

function registerform($ef)
{
$errl = "";
switch($ef)
{

私のコードの問題ですか、それともホスティング サーバーの問題ですか? ユーザーがそのようなコードを表示しないようにするにはどうすればよいですか??

4

2 に答える 2

1

この関数mysql_real_escape_stringは、使用中の文字セットを検出して正しくエスケープできるように、データベース接続を必要とします。

ただし、そのライブラリはまったく使用しないでください。現在は非推奨です。PDOまたはmysqliを使用し、値を自分で挿入する前にエスケープするのではなく、パラメーター化に切り替えます。

また、PHP が現在のデータベースに root として接続しようとしているようです。接続を確立する場合、root で接続するのはよくないことに注意してください。アプリケーションが動作するための最小限のアクセス許可を持つユーザーと接続します。

于 2013-08-25T14:13:08.257 に答える
0

MySQL に接続していません。SQLクエリを実行したくない場合は、この関数を削除できます。

于 2013-08-25T13:45:31.090 に答える