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

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ【PHP】下らねぇ質問はID出して書き込みやがれ 95

    php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    101 : nobodyさん - 2010/04/24(土) 15:18:36 ID:4j2vSUEE (-21,-30,+0)
    【OS名】WindowsXP SP3
    【PHPのバージョン】5.3.1
    【連携ソフトウェア】XAMPP for Windows 1.7.3
    【質問内容】
    セッションの有効期限についての質問です
    セッションを一定時間後にサーバーから破棄したいと思います

    以下のように記述し、ブラウザからファイルを閲覧しているのですが
    1秒以上経ってページを更新しても、数値が「1」に戻らずカウントアップされていきます
    期待通りの動作をさせるにはどうすれば良いのでしょうか


    <?php
    ini_set('session.gc_probability', 1);
    ini_set('session.gc_divisor', 1);
    ini_set('session.gc_maxlifetime', 1);

    session_start();
    if(!$_SESSION['hogehoge']){$_SESSION['hogehoge'] = 1;}
    else{$_SESSION['hogehoge']++;}
    $hogehoge = $_SESSION['hogehoge'];
    session_write_close();

    header('Mime-Version: 1.0');
    header('Content-Type: text/plain; charset=UTF-8');
    echo $hogehoge;
    ?>
    102 : nobodyさん - 2010/04/24(土) 15:53:59 ID:??? (+86,+29,-59)
    >>101
    同じくWindowsでちょっと試してみた
    原因はわからんが、アクセス元のセッションはGC対象にならない模様
    2つのブラウザで試すと確認できると思う。

    あとでubuntuでも試してみるわ
    103 : 101 - 2010/04/24(土) 16:08:24 ID:??? (+68,+29,-38)
    >>102
    有り難う御座います
    仕様もしくはバグなのですね
    他の方法でセッション管理してみることにします
    105 : nobodyさん - 2010/04/24(土) 20:34:30 ID:??? (+57,+24,-151)
    PHPのPearフレームワークについて詳しい人にご質問なのですが、

    SQL インジェクション対策として下手にエスケープシーケンスなんかを

    やる位ならPearを使用しプレースホルダー経由でDBにアクセスをする様にした方が

    簡単で安全なのでしょうか?

    また、Pearフレームワークの驚きの機能、便利な機能等があればお教え下さい。
    106 : nobodyさん - 2010/04/25(日) 00:11:45 ID:??? (+62,+29,-81)
    コーディング規約はZendのやつが一番使われてるんですかね?

    メソッドの命名規則が小文字スタートのキャメルケースになってますが、PHPのビルトインは全部小文字のハイフン繋ぎですよね
    これってどうなんでしょう?
    108 : nobodyさん - 2010/04/25(日) 00:21:02 ID:3mxj5rK2 (-20,+29,-27)
    あ出来ました
    html#だと出来きなかったんですが出来ないと思い込んだのですが
    単体だと出来ました
    なんでだ?
    109 : nobodyさん - 2010/04/25(日) 05:46:41 ID:??? (+77,+29,-59)
    >>68

    他人のサイトからパクって覚えるの繰り返しだと思う
    時間が経つにつれて一通りできるようになったら中の動きとか気になるようになって
    専門的知識を深めていくって感じだと思います。

    あと、Linuxは基本かと。パッケージ管理ソフトウェアが動かせて
    ミドルウェアのインストール、設定ができれば最初はいいんじゃないのかな。
    110 : nobodyさん - 2010/04/25(日) 09:50:18 ID:NKSzzhov (+29,+29,-44)
    1つの設定ファイルをincludeで参照して使ってますが、includeファイル自体に参照ファイルがあったりした場合は別階層から参照したりするとファイルがないと言われます。
    設定をひとつにまとめることで色々と便利なのですが、階層が違うと読めないので
    なにか回避方法か参照の仕方はこうしたほうがいいというのがあれば教えていただけないでしょうか。
    111 : nobodyさん - 2010/04/25(日) 10:05:41 ID:??? (+13,-14,-15)
    絶対パスで書くかファイル内で取得する
    112 : sage - 2010/04/25(日) 10:45:54 ID:??? (-2,-30,-112)
    inc1.php
     <?
     $test = "hoge";
     include('inc2.php');
     ?>
    inc2.php
     <? $test2 = "pgr"; ?>
    のときに
    text.php
     <? include('inc1.php'); ?>
    ならOKだけど
    /hoge/text.php
     <? include('../inc1.php'); ?>
    だとinc2.phpが読めないってことだよな?
    113 : nobodyさん - 2010/04/25(日) 11:11:21 ID:??? (+1,-30,-15)
    111が言うように、絶対パスで指定するか、

    include_once realpath(dirname(__FILE__)).'/../includeFile.php';

    と相対パスを作るか。
    115 : nobodyさん - 2010/04/26(月) 16:17:33 ID:??? (-2,-30,-136)
    >>114
    ./sample.php
    ./inc/example.php

    sample.phpからexample.phpを読んだ場合、
    realpath("./");
    ってやっても、sample.phpの置いてある階層しか取れないよ。
    incの階層を取るには
    dirname(__FILE__)
    の方。
    よって
    realpath("./") = dirname(__FILE__)
    ではない。

    >>113
    realpathはいらなくないか?
    includeファイル内でdirname(__FILE__) . '/../includeFile.php';
    だけでいける。
    117 : nobodyさん - 2010/04/26(月) 20:57:54 ID:??? (+55,+27,-13)
    ifだけ書いてelseを書かなくてもいいじゃん。
    それと同じでしょ。
    118 : nobodyさん - 2010/04/26(月) 21:10:26 ID:X/+ZZ3QP (-20,+29,-9)
    確かに言われてみればそうですね。
    こんな初歩的な事に気づかないなんて・・・。
    疲れてんのか・・・
    119 : nobodyさん - 2010/04/26(月) 21:34:28 ID:??? (+57,+29,-49)
    ま、初歩的を初心とするならば、
    elseは書いておくほうがいいよ。
    予想外のifを、すりぬける場合が
    あるから。
    121 : nobodyさん - 2010/04/26(月) 23:23:32 ID:??? (+15,-29,-16)
    splitはexplodeのエイリアスじゃないですよ?
    122 : nobodyさん - 2010/04/26(月) 23:34:47 ID:??? (+5,-30,-15)
    >>120
    splitは正規表現を使うから
    $a = split("\.", "35.11.22.56");

    でも
    explode(".", "35.11.22.56");
    の方が良いかな
    123 : 120 - 2010/04/27(火) 00:47:39 ID:4fGmvH5J (+26,+29,-10)
    >>121
    >>122
    ありがとうございます。なるほど、そういうことでしたか。
    区切りが"."だと全ての文字が区切り文字になってしってしまってたのか
    124 : nobodyさん - 2010/04/27(火) 03:59:06 ID:??? (+61,-30,+0)
    phpのメールフォームの確認画面で
    記載内容のテーブルのいちばん外側の枠は表示されるんですが
    trやtdの枠が表示されず困っています。

    現在は下記のような内容です。
    どこがいけないのでしょうか、教えて頂ければとても助かります。

    <form action="<? echo $script; ?>" method="POST" >
    <table border="1" cellspacing="20" cellpadding="5" width="538">
    <? echo $err_message; ?>

    <?php
    foreach($_POST as $key=>$var) {
    $key = strtr($key, $string_from, $string_to);
    if(get_magic_quotes_gpc()) $var = stripslashes($var);
    $var = htmlspecialchars($var);
    print("<tr><td width=\"140\">".$key."</td><td>".$var."</td></tr>");
    ?>

    <input type="hidden" name="<?= $key ?>" value="<?= $var ?>" />
    <?php
    print("\n");
    }
    ?>
    </table>
    125 : nobodyさん - 2010/04/27(火) 04:01:30 ID:??? (+94,+28,-15)
    >>124
    それはHTMLの質問になっちゃうからスレ違い
    Web制作板あたりを探ってくれ
    126 : nobodyさん - 2010/04/27(火) 04:25:01 ID:??? (+70,+29,-17)
    >>125
    そうでしたか、すいません。
    なんとか自力で解決出来そうです。
    スレ違い失礼しました。
    127 : nobodyさん - 2010/04/27(火) 08:44:26 ID:??? (+3,-30,-118)
    PHPでリダイレクトを実現するには一般的にはどういう手段を使いますか?
    PearライブラリのHTTP::redirectという関数を見つけましたが、自分の環境にはPearをインストール出来ません。
    生でやろうとすると、headerを設定する方法があるようですが、
    この方法だと既にheaderが設定されてるページではエラーが出てしまいリダイレクトできませんでした。
    何か良い方法は無いでしょうか?
    128 : nobodyさん - 2010/04/27(火) 08:53:10 ID:??? (+36,+18,+0)
    とくにない
    129 : sage - 2010/04/27(火) 09:18:59 ID:??? (-2,-30,-34)
    headerが設定されているページをheaderってどゆこと?
    131 : nobodyさん - 2010/04/27(火) 11:30:46 ID:??? (+73,+29,-33)
    >>130
    各行の長さが固定なら(行番号×行の長さ)の位置までシークできるけど、
    そうでなければ、一行ずつ抜いてカウントしていくしかないかな
    132 : sage - 2010/04/27(火) 11:42:26 ID:??? (-2,-30,-38)
    各行のlengthが同じなら区切れるけど、そうじゃなければfileで引っこ抜いて
    $test[5]
    $test[6]
    $test[10]
    $test[800]
    でいいんじゃないかな
    133 : nobodyさん - 2010/04/27(火) 11:47:29 ID:??? (+40,+3,-2)
    >>131-132
    ありがとうございます。
    配列に格納な感じでいってみます。
    134 : nobodyさん - 2010/04/27(火) 11:53:19 ID:??? (+52,-30,-137)
    【OS名】Windows
    【PHPのバージョン】5.2

    UTF-8(BOMつき)のHTMLを読み込み、加工して出力を行っているのですが
    どうやらBOMもしっかり文字として読み込んでしまっているようで、SJISなどに変換して出力した際'?'に化けてしまいます。

    ファイルからテキストを読み込んだが時に、自動的にBOMを削除してくれる機能はないのでしょうか?
    ざっとUTF-8 BOM PHP で探しまわったところ、先頭3バイトを調査してsubstrで削除しているところばかりだったのですが…。
    (つまり無さそう?)
    135 : 134 - 2010/04/27(火) 11:54:14 ID:QEbg26q1 (+22,+29,-15)
    IDを出し忘れましたので即レスです
    136 : nobodyさん - 2010/04/27(火) 13:14:55 ID:??? (+75,+30,+0)
    137 : nobodyさん - 2010/04/27(火) 15:33:48 ID:Y8r8JnMJ (+28,+29,-16)
    すみません、phpで符号なし右シフト「>>>」と同じ結果を得るには
    どうすると良いでしょうか?
    138 : nobodyさん - 2010/04/27(火) 15:59:37 ID:??? (+1,-25,+1)
    >>137

    >>=
    139 : nobodyさん - 2010/04/27(火) 16:08:46 ID:??? (+57,+29,-6)
    右シフトしてから、最上位ビットを0にしちゃえばいいんじゃね?
    140 : nobodyさん - 2010/04/27(火) 16:11:01 ID:??? (+51,+23,-6)
    右シフトしてから、最上位からシフトした桁分だけ0埋め?
    141 : 1/2 - 2010/04/27(火) 16:52:34 ID:??? (+77,-30,+0)
    【サーバーOS】Windows2003
    【Webページ接続OS】Windows7、vista、XP
    【phpバージョン】5.2
    phpのセッション管理に関する質問です
    ログイン管理にセッションを用いていて、認証フォーム→ログイン処理→ログイン後トップページという風に処理しています。
    認証フォームで入力したIDとパスワードを、ログイン処理ページで処理してセッション変数を格納し、トップページへと繋げて、以降セッション変数で管理しているのですが、ログイン処理の時点でセッション変数に値が格納出来ていません。

    もう一つ別のページでもセッション変数の格納を行っているのですが、そちらは特に問題なく動作しています。
    そしてもう一つ、これらの問題はWindowsVISTA、XPのPCで接続した場合に発生し、7で接続した場合は発生しておりません。
    まず、問題が発見されたほうのソースコードです。

    <?php
    $old_session_name=session_name('kaiin');
    session_start();
    //mysql接続クラス呼び出し
    require_once "../php/dbh.php";
    $dbh=new db();
    $con=$dbh->db_connect();
    if(!$result=mysql_query("select ~~~~~~ ")){
    header("Location:http://");
    }
    142 : nobodyさん - 2010/04/27(火) 17:00:33 ID:??? (+29,-1,-21)
    >>141
    質問時はIDを出してください

    そのコードだとセッションのセットはしてないみたいだよ?
    143 : 2/2 - 2010/04/27(火) 17:00:40 ID:??? (+3,-30,+0)
    $row=mysql_fetch_array($result,MYSQL_ASSOC);
    $ent=hash_hmac(sha256,$_POST[post],2channel);
    if($row[]===$_2ch){
    $_SESSION[]='';
    $_SESSION[]="$row[]";
    $_SESSION[]="$row[]";
    header("Location:http://");
    }else{
    header("Location:http://");
    }

    mysql_close($con);
    ?>

    次に、問題が出なかった方のソースコードです

    <?php
    $old_session_name=session_name("php_exam");
    session_start();

    foreach($_POST as $key => $value){
    $_SESSION[$key]=$value;
    }
    print <<< EOD
    以下HTMLが続く
    EOD;
    ?>

    何故接続するPCの違い、ページの違いによって問題が発生するのかまるで分かりません。
    ブラウザはIE、火狐、クロームを試しましたがどれも同じ結果でした。
    ご教授お願い致します。
    144 : 0 - 2010/04/27(火) 17:01:52 ID:Yj0vX1vG (-29,+25,+0)
    失礼、ID出し忘れたので即レスです
    145 : nobodyさん - 2010/04/27(火) 17:07:26 ID:??? (+14,-30,-66)
    >>141

    if($row[]===$_2ch){

    これは何してるかわかる?
    $row[]なので、$row配列の最後尾に追加される。
    たとえば、
    $row[0],$row[1]
    がある状態で$row[]とやると、$row[2]になる。
    ので
    $row[]===$_2ch
    というのは
    $_2chが「値無し」じゃないと当てはまらないはず。

    結果的に$_SESSION[]="$row[]";
    にはいらず、elseのほうに入ってしまっている。
    146 : 0 - 2010/04/27(火) 17:11:36 ID:??? (+45,-30,-49)
    >>145
    失礼しました、説明が足りませんでしたね
    $_SESSION[]はや$row[]は2chに書く用に中の連想文字を消したもので、実際には
    $_SESSION[2ch]や$row[2ch]のように、中に連想文字が入っている状態です。
    分かりにくくて申し訳ないです;;
    147 : nobodyさん - 2010/04/27(火) 17:14:17 ID:??? (+30,+29,-21)
    >>146
    説明が足りないんじゃなくて再現するコードを出せてないことが問題なんだろ
    あとID出せよ
    150 : nobodyさん - 2010/04/27(火) 17:25:24 ID:??? (-24,-30,+0)
    >>146
    通常なんのブラウザを使おうがPHPの動作には影響しない。
    ブラウザで動作が変わると言うことは、既にセッションを噛んでいるか、ブラウザの設定による問題かと思う。
    いったん、検証に使ったブラウザを再起動して、セキュリティレベルを合わせる。

    で、その後に
    if($row[]===$_2ch){
    の中に入っているか確認する。

    入ってるのなら
    header("Location:http://");
    の直前で
    var_dump($_SESSION);
    exit;
    値がきちんと格納されているか確認。

    次にheaderで飛ばした先で
    var_dump($_SESSION);
    で、先ほどと中身が同じか確認。

    セッションを発行させるのは
    www.example.com
    headerで飛ばした先は
    sub.example.com
    など、飛ばす先のドメインが違ったりすると、同じサーバーでもサードパーティ製のクッキーということで、セッションを引き継げないことがある。
    IEのセキュリティレベルが高いときとか。


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

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


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