元スレ【PHP】ID出さなくても質問OKなスレ【初心者歓迎】
php覧 / PC版 /みんなの評価 : ○
702 = :
エラー文言を出さないのは釣りということ。スルーで。
703 = :
$_SESSION["input"] = $_POST;
としてフォームからPOSTされた中身を一括して$_SESSION["input"]に放り込んでるんですが、
さらにそれを一括してhtmlspecialcharsする方法はないでしょうか
現状べた書きでずらずらっと書いてるんですがどうも美しくなく・・・
PHP5
705 = :
function h($data) {
if (is_array($data)) {
return array_map('h', $data);
}
else {
return htmlspecialchars($data, ENT_QUOTES);
}
}
706 = :
POSTとかSESSIONじゃなくて出力用データにまとめてかけなさいよ
707 = :
>>705
ありがとうございます
勉強がてら意味を追いながら似たような関数も合わせて調べてるんですが、
addslashes($data);
とするとフォームに"が入力されたとき\\\"と\が3つ増える怪現象にはまって脱線中ですw
ググろうにも\がGoogleにエスケープされるというw
>>706
本当にやりたいのはそれなんですが、出力用データがHTMLを含んでるので表示がおかしくなってしまうんです
708 = :
>>707
magic_quote
709 = :
>>707下
普通はHTMLに出力用データを埋め込んで表示
710 = :
>>705と>>708をベースに、htmlspecialchars後の&まで&に置き換わってしまう謎を無理矢理解決して最終的にこうなりました
function h($data){
if(is_array($data)){
return array_map('h', $data);
}else{
return stripslashes(preg_replace("/&/i", "&", htmlspecialchars($data ,ENT_QUOTES, "SJIS")));
}
}
呼び出し箇所
if(get_magic_quotes_gpc()){ $_SESSION["input"] = h($_SESSION["input"]); }
動いてはいるものの正直自信全くナシですw
>>709
こっちもできるようになりたくて試行錯誤3時間
今日はできませんでしたorz
明日また粘ります
出力したいデータを詰め込んだ変数の中身はこんなかんじです
$output = "
<table><tr>
<td>名前</td>
<td><input type=\"text\" name=\"name\" value=\"".$_SESSION["input"]["name"]."\" /></td>
</tr></table>
";
711 = :
あ、書き込んだら勝手に記号置き換えられてました
>>710の「&まで&に」は「&まで&amp;に」です
712 = :
>>710下
<?php
/* ~前処理~ */
$data['name'] = htmlspecialchars($_SESSION["input"]["name"]);
?>
<table><tr>
<td>名前</td>
<td><input type="text" name="name" value="<?php echo $data['name']; ?>"/></td>
</tr></table>
714 = :
>>712
おかげさまでできました
$_SESSIONの中身を一度別の配列に放り込むのは
$_SESSIONの中身をいじるべきではないから
と解釈しましたがよいでしょうか
>>713
ググってさっそく調べました
「そういうもの」と考えるしかないみたいですね・・・
ところで、>>710で書いたfunctionなんですが、
フォームに\を記入するとstripslashesの作用で\が消えてしまうというトラブルに見舞われてます
該当部分の処理を順番に並べると下のようになるのですが
$data = htmlspecialchars($data ,ENT_QUOTES);
$data = preg_replace("/&amp;/i", "&", $data);
//*//
$data = stripslashes($data);
これだと\が消えてしまうので、上の//*//の部分に
$str = preg_replace("/\\\\/i", "\\", $str);
を入れてstripslashesをだまして強引に解決している状況です
なんか違和感があるのですがこれでよいものでしょうか
715 = :
stripslashesって何のために入れてるの?
716 = :
これをいれないと、なぜか画面遷移やリロードのたびにフォームに記入された\の数が倍々で増えるんです
717 = :
magic_quotes_gpc が効いてるだけでは
718 = :
うん。
あと野村監督じゃないけどバグに不思議のバグなしなので
「なぜかこうなる」はちゃんと原因探ったほうがいい
719 = :
>>717
なってます・・・
支障のないところまで組み上げて1度実装用のサーバーでこの部分必ずテストしてみます
とりあえず保留にして内容送信の機能先に作っちゃいますね
セッションすら閉じてない状況なのでw
722 = :
>>720
http://www.php.net/manual/ja/function.json-encode.php
724 = :
最近皆さんにお世話になった>>719です
その後メール送信機能はすったもんだありつつなんとかなって、
実装サーバーで>>715,717について実装サーバーでテストしたら
stripslashesがなくても問題ない(php.iniの設定が鯖とローカルで違った)ことが判明しました
おかげさまで機能は全部完成しトラブルも起きてません
ところで、ソースを最終チェックしてるうちに、
セッションを使ってるのにもかかわらずセッションIDを何にも利用してないことに気づいたんですがいいんでしょうかw
具体的にはhiddenで各画面にセッションネームとセッションIDを渡してはいるものの、ただ渡してるだけなんです
URLの後に付加してるわけでもなく、セッションIDを評価する条件分岐があるわけでもなく・・・
クッキーオフにしても普通に動いてるんですが、なんか根本的なところでおかしかったりしないでしょうか
726 = :
php5.2.5で、mb_send_mail()を使ってメールを送信する際、
spam扱いをなるべく避けるため第5引数で-fパラメータのReturn-Pathを設定したいのですが、
$r_path ='-f aaa@bbb.com';
mb_send_mail($to,$sub,$body,$header,$r_path);
としてもエラーが出て送信できません
第5引数を外せば送信できるので第5引数が原因だと思うのですが、
対策はないでしょうか
php.iniの設定は以下の通りです
sendmail_from → no value
sendmail_path → /usr/sbin/sendmail -t -i
727 = :
>>726
-fの後ろに余分なスペースがあるとか。
728 = :
これって何をしたいんですか?(汗
$password = sha1(md5(md5(sha1(md5(sha1(sha1(md5($_POST[password]))))))));
729 = :
ワロタ
730 = :
わかるかたいませんか?
731 = :
>>730
パスワードを推測されにくくしてからDBとかファイルとかに記録して
おきたいんじゃないかな。パスワード文字列そのものは保存しない。
で、MD5とsha1で滅茶苦茶にした文字列をファイルとかDBに保持し
ておく。
次にパスワードが合致しているかどうかを確認する場合、同じよう
に、入力した内容をMD5とsha1で滅茶苦茶にした文字列と合致する
かどうかをチェックする。これなら、DBやファイルに保存された文字列
を盗まれても、本物のパスワードは推測しにくいわけで。
732 = :
それって逆にパス文字列に戻せるのかな
733 = :
戻せない
734 = :
戻す必要ないしな
735 = :
あの青春は戻らない
ハッシュのように、曖昧な記憶が残っているだけさ
736 = :
>>728
別にそんなことしなくても、
sha1(25)
とかって書けば、25回暗号化してくれるのにな。
737 = :
>>736
ホント?
738 = :
ソノウソホント
739 = :
25が暗号化されるんじゃないのか?
740 = :
セッションについて悩んでます
ローカル環境で送信フォームをテストすると、
同一ページ内にある全てのリンクのURL末尾に自動的に
セッション名とセッションIDが付加されてしまいます
レンタル鯖上では起こらない現象なのですが、
どうしてローカルでだけ起こるのでしょうか
741 = :
>>740
session.use_cookies
session.use_only_cookies
session.use_trans_sid
これらの値をphpinfoで比較してみて。
session.use_trans_sidが有効だと、
coockieが使えない時に、URLの末尾に自動的にセッションIDを付加する。
744 = :
>>743
$typeで始まって、そのあとピリオド、そのあとに英数字が1文字以上続いて.phpで終わる
ちょっと質問なんだけど、オブジェクトのデストラクタ中で__getとか__setとかのマジックメゾットが正常に機能しない挙動があるんだけど、これってマジックメゾットだけなのか、他のメゾットも正常に機能しない可能性があるのか・・・
一応テストした限りでは正常な機能を失ったのは__getと__setだけなんだけど・・・
745 = :
>>744
ごめん勘違い
746 = :
>>744
さんきゅ
747 = :
童貞ですが何か?
748 = :
PHPのゲームってどれくらい負荷かかるのですか?
749 = :
PHPを何に使っているかによる。
ADVゲームの画面切り替えに使っているのなら、
それほど負荷はかからない。
リアルタイムの多人数同時プレイゲームのデータ
を常に送信しつづけるサーバーとしてPHPを使って
いるのなら、負荷はかなりのものになる。
750 = :
なるほど
ありがとうございます
みんなの評価 : ○
類似してるかもしれないスレッド
- 【PHP】ID出さなくても質問OKなスレ【初心者歓迎】 (1001) - [100%] - 2009/1/28 18:17
- 【PHP】ID出さんでも質問OKなスレ【初心者歓迎】2 (1001) - [86%] - 2009/11/19 20:19 ○
- 【PHP】フレームワーク CakePHP 3ホール目【本命】 (1001) - [33%] - 2008/6/19 7:19 ○
- 【PHP】フレームワークについて語るスレ12【総合】 (994) - [31%] - 2009/3/19 13:46 ○
トップメニューへ / →のくす牧場書庫について