エスケープデータ格納時の特殊シンボルの処理
2347 ワード
<?php
function url_base64_encode($str){
// ,
if($str=="")
return "";
$code=base64_encode($str);//$code='dHQ=';
$code=str_replace('+',"!",$code);// "+" "!"
$code=str_replace('/',",",$code);// "/" "*"
$code=str_replace('=',"",$code);// "="
return $code;//$code='dHQ!'
}
function url_base64_decode($code){
// ,
if($code=="")
return "";
$code=str_replace("!",'+',$code);// "+" "!"
$code=str_replace(",",'/',$code);// "/" "*"
$str=base64_decode($code); return $str;
}
?>
phpがmysqlデータベースにデータを挿入してエスケープするには、データを追加する際にデータエスケープによってライブラリにデータを書き込む必要がある一方、ページにデータを表示する際に再び元の状態、すなわちエスケープにデータを復元する必要がある2つの側面があります.一、データ転送
二、反転義
以上の2行のコードでphpがmysqlデータベースにデータエスケープ操作を挿入できます.get_magic_quotes_gpc()PHPでget_magic_quotes_gpc()関数は内蔵関数であり、この関数の役割はphpを得ることである.ini設定中magic_quotes_gpcオプションの値.ではまずmagic_についてお話ししますquotes_gpcオプション:magic_の場合quotes_gpc=On、PHP解析器は自動的にpost、get、cookieからのデータにエスケープ文字「」を追加し、これらのデータがプログラム、特にデータベース文が特殊文字による汚染によって致命的なエラーを起こさないようにします.magic_quotes_gpc=Onの場合、入力データに一重引用符(’)、二重引用符(")、反斜線()、NUL(NULL文字)などの文字がある場合は、いずれも反斜線が加算されます.これらのエスケープは必須です.このオプションがoffの場合、文字列にエスケープを追加するためにaddslashesという関数を呼び出す必要があります.このオプションはOnでなければならないため、しかしまたユーザーに配置の矛盾をさせて、PHP 6の中でこのオプションを削除して、すべてのプログラミングはすべてmagic_quotes_gpc=Offで行いました.このような環境でユーザのデータをエスケープしなければ,結果はプログラムエラーだけではない.同様に、データベースが注入されて攻撃される危険性があります.だから、いつかサーバーがPHP 6に更新され、プログラムが正常に動作しないように、これからはこれに依存しないでください.magic_quotes_gpc=Onの場合、関数get_magic_quotes_gpc()は1を返しますmagic_quotes_gpc=Offの場合、関数get_magic_quotes_gpc()は0を返すのでこのget_がわかりますmagic_quotes_gpc()関数の役割は環境変数magic_を得ることである.quotes_gpcの値.PHP 6でmagic_を削除した以上quotes_gpcというオプションは、PHP 6でもこの関数はもう存在しないと思います.addslashes()addslashes()関数は、指定した事前定義文字の前にスラッシュを追加します.これらの事前定義文字は、*一重引用符(')*二重引用符(")*反スラッシュ()*NULL構文addslashes(string)StripSlashes()反スラッシュ文字を削除します.構文:string stripslashes(string string str);戻り値:文字列関数の種類:データ処理この関数では、文字列の反斜線文字を削除できます.2つの反斜線が連続している場合は、1つを削除し、1つを残します.1つの反斜線しかない場合は、直接削除します.設定が分からない場合は、次のようにします.