スレッド表示 | フラット表示〕 全トピック 920 件中 423 番目 次≫ ≪前

fputs でのクォートのエスケーピング

created: 2005-07-01 15:46 | modified: 2005-07-03 04:25 | reply: 4

[2339] fputs でのクォートのエスケーピング

user: kihara | created: 2005-07-01 15:46
fputs($file,$string)

で $string にクォート(')やダブルクォート(")が含まれると
それらが勝手にエスケープされて、それぞれ \' 、\" となって $file に書かれますが、
これは仕様ですか?

エスケープしてほしくない場面では、どうすればいいのでしょう。
reply: 2342 返信 編集 削除

[2342] stripslashes

user: シロウ | created: 2005-07-01 17:14
$string = stripslashes($string);

http://www.google.co.jp/search?num=100&hl=ja&c2coff=1&rls=GGLD%2CGGLD%3A2005-20%2CGGLD%3Aja&biw=&q=site%3Awww.sound-uz.jp+stripslashes&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja


詳細はhamajiさんの記事を再アップいたしました。 記事番号:1657
勝手にアップしてごめんなさい。

こんにちは。
これはPHPのmagic_quotes_gpcの機能によるものですね。

http://jp2.php.net/manual/ja/ref.info.php#ini.magic-quotes-gpc
http://ns1.php.gr.jp/pipermail/php-users/2002-December/012266.html

php.iniが変更できる環境ならば

; Magic quotes
;
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On


magic_quotes_gpc = On

magic_quotes_gpc = Off
にすると回避できると思います。

ただ、環境によっては、php.iniを自由に編集できないこともあるので、
そのときは以下のようにするとよいです。

function get_magic_quotes_gpc_ex($data) {
if (get_magic_quotes_gpc()) {
return stripslashes($data);
} else {
return $data;
}
}
echo get_magic_quotes_gpc_ex($_POST['hoge']);

みたいな感じです。
http://jp2.php.net/manual/ja/function.get-magic-quotes-gpc.php
http://jp2.php.net/manual/ja/function.stripslashes.php
Parent: 2339  reply: 2343 返信 編集 削除

[2343] Re.stripslashes

user: kihara | created: 2005-07-02 18:55
シロウ様 ありがとうございます。

当方は Vine Linux 3.1 を個人で使用しておりまして、
php.ini を自由に編集できます。

ところが /etc/php.ini の magic-quotes は何れも、最初から Off になっております。

magic_quotes_gpc = Off
magic_quotes_runtime = Off
; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off

一方、

<?php
echo get_magic_quotes_gpc();
?>

の結果は 1 になります。

<?php
phpinfo();
?>

の出力する表にも

magic_quotes_gpc On On
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off

と書かれてあります。
これはどうしたわけでしょうか。
Parent: 2342  reply: 2344 返信 編集 削除

[2344] Configuration File (php.ini) Path

user: シロウ | created: 2005-07-03 03:06
仮説1:
/etc/php.ini が読み込まれていない。

仮説2:
.htaccess または httpd.confにより設定されている。

仮説3:
httpdプロセスが再起動されていない。


PHPをインストールする際にphp.iniの保存先Pathを指定しない場合は
/usr/local/lib/php.iniとかになると思います。
phpinfo()などで確認してみてください。

パッケージでインストールした場合はetcで合っていると思いますが
念のため調べてみてください。

仮説2と3は多分ありえないと思います。
Parent: 2343  reply: 2346 返信 編集 削除

[2346] 解決しました!

user: kihara | created: 2005-07-03 04:25
シロウ様、ありがとうございます。

/etc/php.ini は読み込まれていると思うので、原因不明のすっきりしない状態のまま、
思い切ってパッケージを再インストールしてみました。

# rm /etc/php.ini
# apt-get remove php

# apt-get install php
# apt-get install php-apache

# /etc/init.d/httpd start


今回は

<?php
echo get_magic_quotes_gpc();
?>

の結果は 0。

<?php
phpinfo();
?>

の出力する表でも

magic_quotes_gpc Off Off
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off

となっていて、/etc/php.ini の設定が正しく反映されていました。
当然のことながら、' " \ のエスケープもされていません。

というわけで「一件落着」のようです。以前の不具合は何だったんでしょう???

お騒がせいたしました。
Parent: 2344  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 423 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑