ホームページ >バックエンド開発 >PHPチュートリアル >PHPのbase64_decodeとmysqlを書く前のエスケープ

PHPのbase64_decodeとmysqlを書く前のエスケープ

WBOY
WBOYオリジナル
2016-06-13 12:00:331016ブラウズ

PHP のbase64_decode と mysql に書き込む前にエスケープする

この投稿の最終編集者は 2014-06-19 19:17:39 に diply によって行われました この関数はデコード後に文字列を返すことがわかりました。
現時点でのプリエンコーディングは、画像ファイルから読み取られたバイナリ ファイル ストリームです。この関数を使用してデコードして変数に割り当てる場合、デフォルトでは文字列変数になるはずです。文字列変数にバイナリ ファイル ストリームを格納できますか?そうでない場合、正しくデコードするにはどうすればよいでしょうか?

もう 1 つの質問は、デコード後、このバイナリ ストリームを mysql の longblob フィールドに保存したいのですが、どの文字をエスケープする必要があるでしょうか。 PHPにはこの脱出を一度に実現する特別な関数があるのでしょうか?

使用したエンコードとデコード方法を追加します。

エンコード部分 (VC 側)

char buffer[102400];  //BUF_SIZE大小自己定义<br />DWORD length;<br /><br />//照片图片<br />FILE * pFile = fopen("photo.bmp", "rb");<br />int img = fread(buffer, sizeof(char), 102400, pFile);//将文件二进制流读入到buffer中<br />fclose(pFile);<br /><br />CryptBinaryToString((const BYTE *)buffer,img,CRYPT_STRING_BASE64,NULL,&length);//获取存放编码后字串所需长度<br />ImgString = new TCHAR[length];//ImgString是要发送给PHP的字串,根据上面获取的长度,初始化该字串<br />length--;//减去最后字串结束符的位置<br />CryptBinaryToString((const BYTE *)buffer,img,CRYPT_STRING_BASE64,ImgString,&length);//向ImgString里面存放buffer的base64编码


デコードしてデータベース部分に書き込みます ( PHP Mysql)

$face = addslashes(base64_decode(trim($_REQUEST['face'],"'")));<br />$query = "update index_base set face=$face where id=$bid";<br />$result = mysql_query($query);

-----解決策---------
インターネット上で Base64 でエンコードされた C ソース コードを探してみてください。たくさんあります。また、エンコードとデコードが正しいかどうかを確認するために使用できるオンライン コーディング Web ページが多数あります: http://www1.tc711.com/tool/BASE64.htm
------解決策---- ----------------
は必要な長さの 1 エンドビットに対応する必要があります
64 文字ごとに 1 つの改行?復帰と改行でしょうか?
これは通常の伝送フォーマット (RFC 2045) であり、目的は伝送中の欠落コードを迅速に修正することです
デコード中に削除するだけです
-----解決策--- --- ---------------
はURLデコードによりスペースになります
$face = str_replace(' ', ' ', $_REQUEST[' face']) ;
元に戻すだけです

$img = Base64_decode($face);
画像データを復元します
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。