のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,063,071人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    元スレ【PHP】ID出さなくても質問OKなスレ【初心者歓迎】

    php覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - browscap + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    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 = :

    なるほど
    ありがとうございます


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - browscap + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について