エスケープデータ格納時の特殊シンボルの処理

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つの側面があります.一、データ転送
  • mysql_escape_string($content)  

  • 二、反転義
  • stripslashes($content)  

  • 以上の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つの反斜線しかない場合は、直接削除します.設定が分からない場合は、次のようにします.