【PHP】下らねぇ質問はID出して書き込みやがれ 84
質問者はまず
>>1 を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
次スレは
>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 83
http://pc11.2ch.net/test/read.cgi/php/1238958898/ ◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
【簡易FAQ】
1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(
http:// 〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
8 :
nobodyさん :2009/04/27(月) 22:11:17 ID:ngOdqG7u
$a = (ほにゃら) ? false : true; if文だと思うんですがマニュアルでこのことについて書かれている箇所に誘導してもらえないでしょうか
9 :
978 :2009/04/27(月) 22:18:38 ID:skcV1wh3
お礼が遅くなってすいません。ありがとうございました
11 :
nobodyさん :2009/04/27(月) 22:36:38 ID:ngOdqG7u
>>10 ありがとうございます。
マニュアルの例のように結果によって同じ変数に別な値を入れるときは
if分よりこの書き方の方がすっきりしますね。
使い分けてみることにします。
12 :
nobodyさん :2009/04/28(火) 00:04:52 ID:hPvdrkqO
"kcaptcha"と呼ばれる画像認証ソフトを使おうと思い同梱されていた例題ファイルを見てみたところ <?php session_start(); ?> <form action="" method="post"> <p>Enter text shown below:</p> <p><img src="index.php/?<?php echo session_name()?>=<?php echo session_id()?>"></p> <p><input type="text" name="keystring"></p> <p><input type="submit" value="Check"></p> </form> <?php if(count($_POST)>0){ if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){ echo "Correct"; }else{ echo "Wrong"; } } unset($_SESSION['captcha_keystring']); ?> 一番最後に unset($_SESSION['captcha_keystring']); とセッション変数をアンセットしてありました。 ページの先頭には session_start(); が宣言されているのでページのリロード時には必ずセッションは 初期化されるわけですが、それでもあえて最後にセッションをアンセットしなければならない理由はなんでしょうか?
>>12 >ページの先頭には session_start(); が宣言されているので
>ページのリロード時には必ずセッションは初期化されるわけですが
まずここの解釈が間違ってる。session_startのリファレンスをよく読んでごらん。
毎度初期化されて茶セッションの意味ないじゃん
15 :
nobodyさん :2009/04/28(火) 14:28:24 ID:PkQXIDSH
【PHPのバージョン】php5.26 【連携ソフトウェア】Apache 入力されたマルチバイト文字列(SJIS)を、配列ではなく、予め用意した変数に、 一文字ずつ分割して格納したく思っています。例えば、 $koe = "ありがとう"; なら、 $ichi ="あ"; $ni ="り"; $san ="が"; $yon ="と"; $go ="う"; $roku =""; $nana =""; という風に変換する関数を設定したいのです。 具体的に、どういう処理をすればよいのでしょうか? どうかご助力、お願いいたします。
foreachかforでまわしながら連想配列で代入してからextract($array) SJISはちょっとイヤンな感じだからUTFにしたら?
utf8ならlist($ichi, ...) = preg_split("//u", ..)みたいな感じでおkと思われる
つmb_split
// mb_substrとか使えなかったっけ? $array = array("ichi", "ni", "san", "shi", "go"); $string = "ありがとう"; $count = 0; foreach ($array as $key => $value) { $array[$key] = mb_substr($string, $i, 1, "Shift_JIS"); ++$count; }
20 :
19 :2009/04/28(火) 15:31:09 ID:???
ごめん間違えた $array[$key] = mb_substr($string, $i, 1, "Shift_JIS"); これは ${$key} = mb_substr($string, $i, 1, "Shift_JIS"); にしてくれ
まだ訂正すべき点があるようだが
22 :
19 :2009/04/28(火) 15:40:57 ID:???
うん、もう気づいたけどめんどくさいからいいや
23 :
nobodyさん :2009/04/28(火) 16:53:54 ID:7p1vmHWL
昨日質問したのですが、最後の方で流されたので、 再度質問させていただきます。 CSSファイルの特定のスタイルを取得したいと思います。 $css = 'a:link{background-color:#ffffff;color:#003399;}'; preg_match('/a:link{.*?color:#(.*?);/is',$css,$style); とし、「color:#003399」の「003399」だけ取得したいのですが、 background-colorの方を取得してしまいます。 どういう正規表現を書けばいいのでしょうか?コードの指摘をお願いします。
24 :
12 :2009/04/28(火) 20:19:52 ID:hPvdrkqO
>>13-14 2回目以降のsession_start()はセッション変数の取り込みに奔走するんですね。
それでしたらわざわざ最後にunsetでセッション変数を破棄しなくても、
再度session_start()が実行されれば最新の$_SESSION['captcha_keystring']が
読み込まれて特に問題なく動作するような気がするんですが・・・
>>23 条件がよくわからんがa:linkに指定されたcolor値で#000000の形式のみを取得ってこと?
/a:link[^\}]*[^\-]color\s*:\s*#(\w{6})/is
27 :
23 :2009/04/28(火) 22:10:29 ID:7p1vmHWL
>>25 こういう書き方するんですね。勉強になりました。ありがとうございました。
>>24 とりあえず例題で動かしてから、自分でunset外して動作を見てごらん。
ソース眺めて悩むよりそっちの方が早いよ。
29 :
12 :2009/04/28(火) 23:31:23 ID:hPvdrkqO
>>28 ↓のようにコメントアウトして実行してみました
//unset($_SESSION['captcha_keystring']);
結果は・・・、なぜか、というか予想通り何の問題もなく正常に動作しました。
やはり最後のセッション変数のunsetは不要だったんでしょうか。
あるいは古いブラウザでの互換性を重視しておまじない的に書いたんでしょうか。
>>29 そこで「なぜか」で止まっちゃダメだ。
$_SESSION['captcha_keystring']には、どの時点でどんな値が入っていたのか追ってみよう。
31 :
12 :2009/04/29(水) 03:02:23 ID:I34g5E5l
>>30 $_SESSION['captcha_keystring']にはアンセットされる直前までは
現在表示されてるものよりひとつ前のCaptchaの数字が格納されていました。
ただアンセットしてもしなくても次にsession_start()されるときに次のCaptchaの数字が
上書きされるようです。
う〜む・・・、なぜわざわざアンセットしているんでしょう( ´・ω・)・・・
複数回実行するときのためにアンセットしてんじゃないの?
顔文字とか真面目に質問する気あんの?
認証に使うライブラリなら、一度認証に使用したらさっさと廃棄しないと危険だからじゃないの。
つーかそもそもCaptchaって何かわかってんだろうか
>>31 >次にsession_start()されるときに次のCaptchaの数字が上書きされるようです。
違う。$_SESSION['captcha_keystring']をセットしてるのは誰かよーく調べてみなさい。
提示されたコードばかり見てて全体のフロー、つまり裏でKeystringが発行されてるとこが見えてないんじゃないかな unset() はキーを発行する処理に対応してるから、そっちの実装を見ないと処理の流れは分からない 新規/リロードなら再発行、ポストなら検証までスルーって実装にすれば unset() いらなくなるかな
これ、「表示されているアルファベットを入力してください」とか、いうヤツでしょ。たぶん。 unsetしなかったら、同じキーで何度でも使えちゃうじゃん。 アカウント取り放題とか、メール出し放題とか。 キー値はサーバ側に保存しなきゃならんのだし、unsetまたはそれと同等な処理しなくて 良いパターンってないと思うけど。
バリデーションに成功すればキーは破棄出来るわけだから同じキーが2度以上使われる可能性は排除できるよ 発行と検証の2フェーズあって、検証中でなければ前回の残りがあったとしてもそれを破棄して再発行すればいいわけ 検証中で無いことは empty($_POST["key..]) && !isset($_SESSION['key..]) で判別可能 unset() をクライアントスクリプト側に任せているのは、例えば3回まではトライ可能、といった キーを無効にするタイミングを選択できるようにしたいとかそういうことじゃないかと予想
うっぷす! × empty($_POST["key..]) && !isset($_SESSION['key..]) ○ empty($_POST["key..]) 再発行条件が empty($_POST["key..]) && isset($_SESSION['key..]) かなw
シンプルで不足分はユーザが書く小さなライブラリ > 柔軟なAPIがありクライアントのコード量が少なく高機能で汎用性が高く大きなライブラリ
>>38 いや、機械と人間の識別に使うもの。
これだけだと、人間ならアカウント取り放題、メールし放題、コメントし放題だよ。
後半はその通り。
>>42 多分、この認証ライブラリの動作を完全に勘違いしてると思う。
自分はもう面倒なんで、これ以上言わんが。
44 :
nobodyさん :2009/04/29(水) 07:37:23 ID:sqsMUdXV
Prepared statementって扱うの難しいですね・・・ オブジェクト指向とかさっぱりだし ぶっちゃけ mysql_real_escape_stringで十分と思ってたら えらい目に会いますか?
>>44 趣味のレベルなら全然問題は無い。
お仕事なら規模にも依るが、苦労はすると思う。
formから入力された文字列をmysqlに保存するサンプルスクリプトを教えてください DB名:sample_db テーブル名:sample_tbl user名:sample pass:pass
47 :
46 :2009/04/29(水) 12:10:56 ID:5Db2GJA3
ID出し忘れましたすみません。。。
本当にくだらねぇ質問でわろた
51 :
46 :2009/04/29(水) 13:49:34 ID:5Db2GJA3
わかりました 移動します すいませんでした
誘導先で48が暴れてますよ
君が論破されてよっぽど悔しかったのね
>>53 こっちまで荒らしに来ないでおk
向こうのスレで
>>46 と共食いしてろや
55 :
nobodyさん :2009/04/29(水) 23:16:13 ID:bTfRl/qJ
headerで出力した内容を後から削除(上書きでなく)したい場合は どうしたらいいですか? たとえば、Content-Script-Type: text/javascriptをheaderで吐いてから、 ケータイなので取り消したい場合などです
分からないうちから吐かない
明らかに設計ミス
できるとすればmod_headersでアンセットくらいかな
61 :
nobodyさん :2009/04/29(水) 23:50:48 ID:sqsMUdXV
>>55 headerで違うページに飛ばしてやり直し
63 :
nobodyさん :2009/04/30(木) 11:53:33 ID:29t/7geC
確率について質問です $foo=array( "A" => 60, "B" => 20, "C" => 10, "D" => 7, "E" => 3, ); $r = rand(1, 100); foreach($foo as $k => $v){ if($r<=$v){ $ans=$k; break; } $r-=$v; } echo $ans;
64 :
63 :2009/04/30(木) 11:56:30 ID:29t/7geC
$fooに確率を設定します
$rに1〜100まで範囲でランダムで数字を代入します
foreachで$fooのキーと値を回していき、値がランダムの数字$rより低いか同じなら$キーを表示します
>>63 のコードは確率のアルゴリズムでありますでしょうか?
は? 質問の意図がイミフなんだが。
A〜Eが正しく指定された確率で出力されるかってことじゃないかと予想
68 :
nobodyさん :2009/04/30(木) 12:32:14 ID:29t/7geC
>>63 は有名な?確率のアルゴリズムらしいんですが
これで確率が出せるのかがわかりません
出せるんでは?
このスレには以下の初心者も閲覧しています 65 名前:nobodyさん[sage] 投稿日:2009/04/30(木) 12:00:36 ID:??? は? 質問の意図がイミフなんだが。
普通に意味不明だろ
実際にやってみればいい $foo=array("A" => 60, "B" => 20, "C" => 10, "D" => 7,"E" => 3,); function castFuckinDice($foo) { $r = rand(1, 100); foreach ($foo as $k => $v){ if($r<=$v){ $ans=$k; break; } $r-=$v; } return $ans; } foreach ($foo as $k => $v) { $encounter[$k] = 0; } $max_trials = pow(2, PHP_INT_SIZE * 8) / 2; for ($i=0; $i < $max_trials; $i++) { $spot = castFuckinDice($foo); $encounter[$spot] ++; foreach ($foo as $k => $v) { $ratio = $i ? $encounter[$k] / $i : 0; printf("[%s]: %02.1f ", $k, $ratio * 100); } echo "\r"; }
73 :
nobodyさん :2009/04/30(木) 12:45:25 ID:29t/7geC
$vのキーと値がAと60のとき、確率は60%ですが $rの値が1〜60の場合ですと当たりってことですよね Bと20のときは1〜20のときが当たりってことですよね ってことはAの60%から判定されるってことで完全な確率のアルゴリズムではない気がするのです
74 :
nobodyさん :2009/04/30(木) 12:46:41 ID:29t/7geC
>>73 Aの60%から判定されるってどういうこと?
曖昧な表現はやめてくれ
76 :
nobodyさん :2009/04/30(木) 12:52:14 ID:29t/7geC
>>63 のコードより
$fooの配列の戦闘は"A"=>60なのでforeachで回すと"A"=>60のところから回ります
>>74 有名な確率のアルゴリズムって誰が言ってたの?
さっきからイミフしか言わない人は出てこなくていいよ^^;
>>76 "A"=>60のところから回って
1〜100からランダムに得た値と比較して小さかったらそれを答えとするんだから60%じゃん
なんとなく言いたいことはわかるし、コードも正しい気がするが、
>>73 は本格的に意味不明。
PHP言語以前に日本語が解読できん
質問者は
>>73 にあるように「60%から検証を始める」と問題がありそうだと考えているようだが
どの目が出るかは rand(1, 100) を実行した時点で決まる
あとは検証してるだけなので、どのアルファベットから始めても確定した過去は変わらない
狐につままれたように思っているのは確率分布の上側を除いていく処理が、なぜ指定された割合と一致するのかということだと予想
これが確率論から導けるのか、それともたまたま計算結果が一致する別のアルゴリズムなのか
それが「この処理は確率のアルゴリズムであるのか?」という表現に至ったのではないかね
どんな回答が欲しいのか知らんが、とりあえずエスパー能力を発揮して答えるならば
>>68 出せます。安心してお使いください。
だったら「人に教えてもらったコードなんですがこのアルゴリズムでなぜ確率が計算できるのですか?」とでも聞くべき. 他人に対する配慮が足りない.
87 :
nobodyさん :2009/04/30(木) 13:25:14 ID:2iRqPJM5
>>82 突っかかる部分もありますが、納得できましたので閉めます
>>85 64のどこに84の内容が抑えられてるんだ?
横から煽ってるだけの奴は何だ? ヒマなのか?
>84 人に教えてもらったコードなんですがこのアルゴリズムでなぜ確率が計算できるのですか?
ググレ
>>82 先生と
>>84 先生は別人でしょwwwwwwwwwww
84出て来いよwwwwwwwwww
>>87 1から100までの数からランダムに選択したら、それが60以下である確率は0.6であるというのは明白だろう
この性質を利用して、「60以下である」という条件をAに結びつけ、60以下の数ならAを返すようにする
これはAが60%で出現するということと等価だ
ある数が、60以下ならすぐ終了
60以上ならそこから60を引いて、次にそれが20以下かどうか調べる
Ex. ある数が88なら、60以下か検証、違うから60を引いて28、20以下じゃないので20を引いて8、10以下なのでCを返す
というわけでそのループは、与えられた数が基準より小さいかを効率よく調べるアルゴリズムであって、確率の計算ではない
確率が得られているのは全て rand() に依る
その確率をアルファベットに結び付けているのがこのアルゴリズムというか処理ということになる
と俺なら考えるが、アルゴリズムがなぜ動くかなんて自分の頭で納得するしかないよ
test
最近人少ないですね PHPの時代は終わりでしょうか
昔からこんなもんだろ たまにくだらない話題で議論はじまって100スレぐらい一気に伸びるだけ
100スレ?
100レスの間違いだろjk
これからはJavaの時代
100年に一度の不景気だとなにを根拠にだか言う人が多いから マインドは冷え込んでるのは間違いないし、金のかかるJavaさんはもう論外になってる
phpとperlでちまちまとした仕事を数こなしてる俺は勝ち組。 もってあと一ヶ月だな俺。
ようやく規制解除。 >63 $rを減算する処理が直感的じゃないな。良くないアルゴリズムの部類に入る。 実際>63は意図を読み取れなかったわけだし。 性能上も、$rへの再代入が発生するので最適化がかけづらいはず。 正しく動くプログラムはサルにでも書ける。いいプログラマは人間に理解できるプログラムを書く。
>>106 多摩動物園のサルにパソコン渡せば書けるんですね
シェイクスピアだって書けるんだから、10行程度のスクリプトくらい書けるだろ。
>>104 安かろう悪かろうのPHP使うぐらいならJava採用する企業のほうが多いだろ
バグバグによる経済的損失に比べたらその単価差なんてたいしたことない
javaってtomcat入れないと使えないジャン
大規模案件はそれなりにコストのかかる投資。不況ならばそら発注数は減るだろう。 小規模案件はどうだろうな。大規模がスケールダウンして降ってくる数とやめる数とで、あんまり総数は変わらない気がする。 あと、PHPは始まってすらいないが、Javaは終わりつつあると思う。 いや、COBOLだってまだ頑張ってるんだし、俺らの現役期間中に食いっぱぐれる事は無いと思うけどな。
なんか最近.Netにゴリっと持ってかれることが多い。 そんなに開発しやすいのかねアレ。
クラサバでWindows+.NETやUnix+Javaならわかるけど Webで.Netはそんな多くはないぞ?
俺もそう思ってたんだが、去年くらいから洒落にならんペースで食われてる。 社内システムとWEBシステムが連動し始めたってのもあるかもしれんが。
言語仕様について熱く語ってるわけじゃないだろ
じゃあこの話題は他のスレか板へどうぞ こちらは質問スレですのね
休みになると現れる仕切り厨(笑)
119 :
晒し上げ :2009/05/02(土) 18:23:27 ID:???
116 名前:nobodyさん[sage] 投稿日:2009/05/02(土) 17:49:37 ID:??? 言語仕様について熱く語ってるわけじゃないだろ 118 名前:nobodyさん[sage] 投稿日:2009/05/02(土) 18:19:37 ID:??? 休みになると現れる仕切り厨(笑)
よほど悔しかったらしい(笑)
116 名前:nobodyさん[sage] 投稿日:2009/05/02(土) 17:49:37 ID:??? 言語仕様について熱く語ってるわけじゃないだろ 118 名前:nobodyさん[sage] 投稿日:2009/05/02(土) 18:19:37 ID:??? 休みになると現れる仕切り厨(笑) 120 名前:nobodyさん[sage] 投稿日:2009/05/02(土) 18:27:39 ID:??? よほど悔しかったらしい(笑)
話としては興味があるんで、ネタがあるなら、雑談スレあたりで続けてほしいな。
コピペして必死な仕切り厨(笑)
116 名前:nobodyさん[sage] 投稿日:2009/05/02(土) 17:49:37 ID:??? 言語仕様について熱く語ってるわけじゃないだろ 118 名前:nobodyさん[sage] 投稿日:2009/05/02(土) 18:19:37 ID:??? 休みになると現れる仕切り厨(笑) 120 名前:nobodyさん[sage] 投稿日:2009/05/02(土) 18:27:39 ID:??? よほど悔しかったらしい(笑) 116 名前:nobodyさん[sage] 投稿日:2009/05/02(土) 17:49:37 ID:??? 言語仕様について熱く語ってるわけじゃないだろ 118 名前:nobodyさん[sage] 投稿日:2009/05/02(土) 18:19:37 ID:??? 休みになると現れる仕切り厨(笑) 120 名前:nobodyさん[sage] 投稿日:2009/05/02(土) 18:27:39 ID:??? よほど悔しかったらしい(笑)
クラス内で別のクラスのインスタンスを作成することってできますか?
自分で確かめろ
>>125 それができなかったら全OOP言語全滅だな
質問者がアホ 回答者が基地外 そんなスレにふさわしくないスレタイ
ID出してない質問に答える親切な人、じゃないのか
このスレに生息してる人はこんな人です ・マニュアル君(出現率はドラクエのスライム並) ・親切クン ・ググレカス君 ・ヤフレカス君(はぐれメタル級に出現率低い)
お前は?
追加 ・あげ足鳥クン ・御前モナ君 ・嵐君
自分のアイデンティは無いのなw
マニュアルへのリンク出してくれるのが一番ありがたいけどな。 これ以外信用できるソースないんだから。
それで片付く人はこんな所にまで聞きに来ないんだよねぇ・・・
まぁ質問するというよりは、他人のやり取り見てると ( ・∀・)つ〃∩ ヘェーヘェーヘェーヘェーヘェーって話が結構多くて、 マニュアルへのリンクがあると確認しやすいって感じかね。
( ・∀・)つ〃∩ ヘェーヘェーヘェーヘェーヘェーってPHPで作った 初心者の僕には優しかったです。
Linuxでインストールしたいんだけど、Apacheのapxのパスってどこなの? configureオプションについて詳しく載ってるサイトない?
140 :
139 :2009/05/03(日) 18:08:00 ID:???
スマン、自己解決したわ 逝ってくる
141 :
nobodyさん :2009/05/03(日) 19:15:34 ID:XBo5LqsH
Linuxコマンドを実行したときの結果をTrueかFalseかで知りたいのですが、いい方法はありますか? execとかsystemだと出来ないようなので。
142 :
nobodyさん :2009/05/03(日) 19:15:55 ID:RlajZjKv
>>141 何をもってtrueかfalseとするかの定義がされてないので答えようがない
それをここにもってくる
>>144 もマルチ支援者野郎
includeなどで呼び出されたときのみ実行できるようにする方法はありますか? ファイル単体で動作しないようにしたいのですが
147 :
146 :2009/05/04(月) 17:13:32 ID:???
すいません解決しました
148 :
146 :2009/05/04(月) 17:25:08 ID:h7Ju90Gx
すいませんIDを出していませんでした。 まだ解決してないです。
149 :
146 :2009/05/04(月) 17:30:12 ID:???
>>146 たぶん無理
includeされるファイルにはクラスとか単体で実行されても無意味な物を入れとくべき
簡単にできるし $_SERVER['SCRIPT_NAME']が自ファイル名ならNG、セットされてなければ ウェブ経由じゃないからNG、それ以外で実行できるようにすればいいじゃん ほかにもいっぱい方法あるだろ
152 :
nobodyさん :2009/05/04(月) 18:10:12 ID:h7Ju90Gx
実行されたくないってのが、ブラウザからそのファイルを直接指定されたときに 実行されたくないって話なら、ブラウザからアクセスできないディレクトリに 置いとくのが定石じゃない。
>>153 それは、首がもげるほど正論なんですが、
ブラウザからアクセスできないところにファイルを
置けないレン鯖とかもあったりするわけで……。
>>154 スレチになっちゃうんで、あんまり詳しくは聞かないけど、 PHPは使えるけど、
htaccess でaccess denyできないレンタルサバとかも多いの?
>>146 単純にincludeファイルは.incにしてそれをはじけばいいんではないの?
<Files ~ "\.inc$">
deny from all
</Files>
>>154 さすがにそれはダウト。ログすら吐けないじゃんか
phpが実行できる環境ならクラスか関数にしとけばコールしない限り実行されないじゃん
161 :
146 :2009/05/04(月) 23:47:21 ID:???
162 :
161 :2009/05/04(月) 23:48:03 ID:???
↑のミス^^; 違うスレの146なので気にしないでね
まぎらわしいわ
165 :
nobodyさん :2009/05/05(火) 03:23:06 ID:GwyMTYkX
リネームについて質問します。 rename("./filebox/A.txt", "./filebox/B.txt"); このようにあらかじめ「B.txt」と変更後のファイル名が決まっていればいいのですが 決まっていない場合に$で変数を使ってファイル名には出来ないのですか? rename("./filebox/A.txt", "./filebox/$hen.txt"); とかやっちゃうと「$hen.txt」が出来上がってしまうので・・悩んでます。 よろしくお願いします。 OS CentOS 5.1 PHP 5.2.6 なおパーミッション関連は間違いなく合っています。
rename("./filebox/A.txt", "./filebox/{$hen}.txt"); か rename("./filebox/A.txt", "./filebox/".$hen.".txt"); でやってみ
167 :
nobodyさん :2009/05/05(火) 03:57:18 ID:GwyMTYkX
>>166 あっ、出来た。有難うございました。こういうやり方もあるんですね、勉強になりました。
168 :
nobodyさん :2009/05/05(火) 05:08:31 ID:9NxYpwlu
変数をクォートの中にそのまま書き込むと文字として誤認されること多いから俺は常に括弧でくくってるぞ
文字列連結でいいだろ
内部が変数の時は {} が出力されないってのは、仕様としてどうかと思うことは多い。 明示的な指定は${var_name} の形式だけにして欲しかった。
シングルクオート使えばいいのでは?
>>165 $path = "./filebox/";
$bfile = "A.txt";
$rfile = "B.txt";
rename("$path.$bfile", "$path.$rfile");
174 :
nobodyさん :2009/05/05(火) 12:16:27 ID:nXqml1BJ
画像の数字を読み取ることって出来ますか?
””の中を勝手に展開したりするからわかりにくくなる。
>>173 みたいなミスもしちゃうしな。
$path = "./filebox/"; $bfile = "A.txt"; $rfile = "B.txt"; rename($path.$bfile, $path.$rfile);
>>174 白黒のフォント文字サイズ固定なら割となんとかなる
2値に変換できればあとはmatchさせればいいだけだからな。 スキャンしたものとかは無理だがw
ま、画像もデータだからね。バイナリの
てか、キャプチャ破り以外使い道なさそうだから、こういう質問の相手はすべきじゃないとも思う。
じゃ終わり
>>182 キャプチャ破りしか思いつかないのは自分はクラッカー気取りだからじゃないの?wwwwwwwwwwwwwwwwwwwwwwwww
PHP暦1週間です。 peclのzip関数をレンタル鯖で使いたいのですが、初期状態では導入されていないみたいです。 linuxも詳しくないのですが、とりあえず「/usr/local/bin/pecl」は発見しまた。 あとはzip.soを発見してextentions dirに設定すれば動くかなと思ったんですが、zip.soが見つかりませんでした。 これ、何とかして導入する方法はありませんでしょうか? ちなみにphp上で無理やり「pecl install zip」して見ましたがやっぱりだめでした。 もしくは、PHP5 MySQL peclのZIP拡張の入ってるレンタル鯖(年1万以下)ってあります?
189 :
188 :2009/05/06(水) 17:22:50 ID:hSw36pLb
あ、sageってた・・・・
えと、スレ違うと思うんですけど。
>>188 それが何とかできたら怖いわw
レン鯖と同じ環境のサーバー立ててコンパイルしたso持っていくって
手段は無くも無いが、怒られてアカ剥奪されても知らん。
あとレン鯖探したいなら板違い。
pearのFile_Archiveじゃだめなん? 他の人も書いてるとおり、レンタルサーバ探しは、ここで聞いても無駄だけどさ。
つーか標準装備のじゃダメなん?
195 :
nobodyさん :2009/05/07(木) 03:15:22 ID:re6YnlTy
$_SERVER['REQUEST_METHOD'] あとその下のフォームの値も全部$_POSTで
197 :
nobodyさん :2009/05/07(木) 04:00:17 ID:re6YnlTy
>>196 出来ました!感謝。
まだ勉強を始めて10日ほどですがぼちぼちがんばります。
"が""でエスケープされている文字列(ExcelとかのCSV出力と同じ)をパースするために、 以下のようなコードを書いたのですが、Apache上で動作させるとスタック不足で落ちてしまいます。 (ApacheのStatusコード:3221225725) もっとリソースを食わないようにするにはどうすべきでしょうか? 今使っている環境は PHP5.2.9-1 Apache2.2.11 Vista(32bit) Homeです。 $str = '"'.str_repeat("あいうえお", 10).'"'; preg_match('/(([^\"]|\"\")*)\"/A', $str, $matches, PREG_OFFSET_CAPTURE, 1); これぐらいだったら、正規表現あきらめて、コリコリ書いた方がいいのかなぁ。
199 :
nobodyさん :2009/05/07(木) 15:02:34 ID:PzaIUqbE
すいません、さげちゃいました。 よろしくお願いします。
200 :
198 :2009/05/07(木) 15:04:46 ID:???
すいません、訂正。 $str = '"'.str_repeat("あいうえお", 10).'"'; ぐらいなら動きます。これを $str = '"'.str_repeat("あいうえお", 100).'"'; とかにすると落ちます。 重ね重ねすいません。
201 :
nobodyさん :2009/05/07(木) 16:17:39 ID:PzaIUqbE
/(([^\"]*(\"\")?)*)\"/ にしたら動くようになったみたいなんで、しばらくこれで様子見ます。 お騒がせしました。
202 :
みみずん削除 :2011/03/10 07:01:00 ID:MiMIZUNCjA
203 :
nobodyさん :2009/05/07(木) 23:00:22 ID:ymUWK2Mh
ローカルサーバにアクセスするとアクセス解析には127.0.0.1ってログが残ります。 入っているプロバイダ経由でローカルサーバにアクセスすることは可能でしょうか? ローカルサーバですけどアクセス解析にはプロバイダのipでログつけたいと思います どなたかよろしくお願いします
グローバルIP指定すればいいのでは?
205 :
nobodyさん :2009/05/08(金) 04:27:45 ID:8b2MJ03K
phpの動作上からは /usr/local/lib/php/ がインクルードパスに設定されているようなのですが、 php.iniを見ても、このディレクトリをインクルードパスに設定している箇所がありません。 include_pathの設定は;でコメントアウトされています。 どこで設定されているのでしょうか?
>>205 とりあえず本当にパスが通ってるのか phpinfo() で確認したら?
include_path はPHP_INI_ALLだから、アチコチで設定できちゃうんだけどさ。
207 :
nobodyさん :2009/05/08(金) 13:57:36 ID:PQMR/gr5
Array( [300] => "ほげ" [20] => "ほげ" [74] => "ほげ" ) みたいな連想配列を、連想インデックスを保持しつつキーでソートするにはどうしたらいいの? こんな感じで。 Array( [20] => "ほげ" [74] => "ほげ" [300] => "ほげ" ) uasortのユーザー比較比較関数は配列の値しか渡されないみたいで、キーで比較は出来ないみたいだし。
最近のゆとりは質問するときの態度が悪すぎ
210 :
nobodyさん :2009/05/08(金) 14:22:40 ID:PQMR/gr5
public function addOption(commandOption $option) { //////////////////// } 上記のaddOptionメソッドにcommandOption $optionという引数を 与えていますが、どういう意味でしょうか。
どこから拾ってきたんだよ 前後分からないと言えないぞ
213 :
211 :2009/05/08(金) 15:07:33 ID:???
自己解決しましたよっと スレ汚しサーセン
解決したなら解決方法かいてけよ・・・ 最近マナーひどいなほんと
215 :
211 :2009/05/08(金) 15:10:53 ID:???
>>214 わからないから教えてほしいって書けばいいのに
216 :
211 :2009/05/08(金) 15:14:54 ID:???
213は偽者 class aのメソッドにそんな記述があったんだけど、 これはキャストしているんですか?
ID出てないから全員偽者か
218 :
nobodyさん :2009/05/08(金) 15:21:48 ID:wSZsV7Ai
はいごくろう ではさようなら
IDうっかり出し忘れただけで、偽物登場するのはよろしくないと思う。 荒らしに相当する。一体なんなの?
お前2chで何言ってんの?
>>211 質問がイマイチ曖昧だけど、書式について聞いてるなら、PHPでも型チェックが導入されてたはず。
ただ、マニュアルにはどこに書いてあるのか見つけられんかったが。
>>211 $optionがcommandOptionのインスタンスでなきゃいけんということ。
おまいらグダ巻いてないで教えてやれよ
226 :
nobodyさん :2009/05/08(金) 20:03:01 ID:tCM7CGYm
228 :
nobodyさん :2009/05/08(金) 20:43:37 ID:gndL9SHG
【OS名】Freebsd 6.1 【PHPのバージョン】php5 【連携ソフトウェア】なし 【質問内容】 文字列操作の仕方について教えて下さい。 次の三つの文字列がある場合に、 (1) 東京都港区麻布1-5-3 (2) 東京都港区西麻布1-3-5 (3) 東京都港区麻布1-2 処理結果として、三つの変数に共通の「東京都港区」だけ抽出したいのですが、 どのような考え方で実装すれば良いでしょうか? 数学でいう最小公倍数みたいな?考え方です。 宜しくお願いします。
>>228 最長共通文字列を求めたいということならアルゴリズムの問題だから、
LCS(Longest Common Subsequence)問題とかで検索してみたらいいよ。
3つ以上だとどうやるのか知らないけど。
どっちかと言うと、最大公約数じゃないかな^^
確かに先頭からって前提がないとすると、かなり難しい気がするな。
232 :
226 :2009/05/08(金) 22:28:42 ID:???
>>226 誰かよろしくお願いします<m(__)m>
先頭からの一致でいいなら、単純にループをぶん回していけばいい。 (1)と(2)と(3)の共通文字列は、「(1)と(2)の共通文字列」と「(3)」との共通文字列に等しいはずだ。 4つ以上でも同じ。 (1)と(2)の共通文字列を求め、それと(3)の共通文字列を求め、それと(4)の共通文字列を求め…と繰り返せばいい。
235 :
nobodyさん :2009/05/08(金) 23:34:43 ID:gndL9SHG
早速アドバイス頂きましてどうもありがとうございました。 アルゴリズムの問題ですか....LCS問題・・・ 調べて見たのですが、C系で実装されているサンプルはありましたが、 phpでは見つかりませんでした。理解しながら、phpに実装するのは結構大変そうですね。 先頭からではなく、文中からの一致も必要なのですが、 思った以上に難しくて冷や汗です。 追記しますと、10000件以上対象がありまして、 先ほどの例ですと、東京都港区麻布なら2件一致、東京都港区なら3件一致、 と最小+最小から2番目、3番目・・・とできればやりたいのですが、 もっと難しいですよね。う〜ん、困りました。
>>235 いっそ部分文字列を全パターン切り出して、それをキー値にした配列で個数数えたら?
注意しないと東京都西東京市とかは「東京」がダブルカウントされてしまうが。
もう形態素解析の世界だな
Cの実装をPHPに移植する程度で腰が引けてるようなレベルではどうにもならないと思う。 完全にアルゴリズムの世界なので、C、C++、Javaでしかサンプルは存在しないと考えたほうがいい。 つうか、その例だと先頭からの一致しか見てない気がするのだが。 「大阪府大阪市港区」「愛知県名古屋市港区」「東京都港区」の共通文字列は?「港区」検出したいのか?
アルゴリズムじゃなくて、アルゴニズムだろw
240 :
nobodyさん :2009/05/09(土) 03:11:42 ID:6UxgjX3A
includeされたphpスクリプトの中から、 自分をincludeしたファイルのパスを知りたいのですが、 どうすれば分かるでしょうか?
getcwdでとれないか? includeしても実行ディレクトリは親だとおもうけど
>>235 標準関数でありますよ
確か過去スレ83番で俺がそういう質問に答え書いた覚えあります
じゃあ教えろやハゲ
親切に過去スレにあるって書いてあるのに読めない池沼
>>240 試してないけど
inc.php
<?php
$filepath = __FILE__;
hoge.php
<?php
incude_once('./fuga/inc.php');
echo $filepath
hoge.phpへのパスが返ってきちゃうか不安だけど。
>>235 過去スレ84から「比較」で検索すると答えがあります
84じゃなくて83だったな間違え
249 :
nobodyさん :2009/05/09(土) 21:36:48 ID:xpzC4uCd
【OS名】windowsXP 【PHPのバージョン】php5.29 【質問内容】JISからUTF-8の変換について 質問です。 IRCから受け取った文字列を処理したいのですが、mb_detect_encoding()で受け取った文字列の文字コードを調べたところJISと表示されたので mb_convert_encoding($data->message,"JIS","UTF-8")のように変換しようとしても変換後の文字列は相変わらずJISになってしまいます。 JIS->UTF-8は他の変換方法があるのでしょうか?
単純な勘違いと思うよ、引数の順番 string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )
>>250 その通りでしたーっ!
いや、なんかC出身なせいか関数(src,dst)っていう先入観が…
言い訳ですよねリファレンスくらいよめよksgですよね
253 :
nobodyさん :2009/05/09(土) 23:20:03 ID:xpzC4uCd
>>252 仕事?よくわからないですけどただの趣味です。
PHP始めたばっかりでIRCbotでも作ってみようかなと
$fromが省略可能だという知識があれば推測できるけどな。 引数順序カオスだよなぁ、PHP。 多量の引数を取る関数が多いってのもあるが。
仕方ないからエクリプス使ってるよ いまだにエディタしょぼいが
mb系はjcodeを模した外部の機能を組み込んだ関数だからしょうがないんじゃん。 PHP6ではユニコードになるらしいから新しいマルチバイト命令でるかもね。
257 :
nobodyさん :2009/05/11(月) 00:53:38 ID:r24gXu9a
javascriptは hoge.sort(function(a, b) {return (a > b) ? -1 : 1;}) こんな風に、そのソート関数だけで有効なユーザー定義ソート関数が使えるけど phpではどうやるの? function cmp($a, $b){return ($a < $b) ? -1 : 1;} usort($hoge, "cmp"); だと、他の場所にcmpという関数が無いか気にする必要があるし。
258 :
28 :2009/05/11(月) 01:01:59 ID:???
>257 class mySort { public static function cmp($a, $b){return ($a < $b) ? -1 : 1;} } usort($hoge, array('mySort', 'cmp');
PHP 5.3 からは下のように書けるよ。 usort($arr, function($a, $b){ return $a - $b; });
ありがとう! php5.3まで待ちます…
なぜ引き算・・・
262 :
nobodyさん :2009/05/11(月) 03:35:39 ID:3RhlII/w
5.3.0RC2をビルドしようとしたら以下のエラーがでて困ってます。 src/php-5.3.0RC2/ext/mbstring/mbstring.c:4757: error: `php_mb_encoding_detector' undeclared (first use in this function) src/php-5.3.0RC2/ext/mbstring/mbstring.c:4758: error: `php_mb_encoding_converter' undeclared (first use in this function) どなたか解決策ご存じでしょうか?
263 :
nobodyさん :2009/05/11(月) 11:00:53 ID:thXXZ3vj
その手の変更履歴は翻訳するとニュアンスが変わったりするので原文見たほうがいい。 ほとんど箇条書きだし読めるべ?
質問です。 PHPは今や完全に時代遅れなのに、そこそこにこのスレが伸びるのはなぜですか?
スレタイも読めないのかカス
>>266 時代の変化に追随できない人はいつの時代にも存在するものですよ。
>>267 正解) 実は下らなくないからsageた
とか
>>266 全盛期に比べたらこのくだスレもかなり過疎ってはいるけどね
お利巧な人は見切りを付け始めてるのではないかと
>>264 英文を「ちょっと読める」程度の奴に限ってこういうことを言うんだよなw
高卒以上なら普通読めるだろ お前は何を言ってるんだ
学歴コンプレックスのあるやつほど中卒だ、高卒だと騒ぐんだよね 学歴ネタは結構スレ伸びるよw
小卒代ゼミ、中卒代ゼミ、高卒無〜職ニート代ゼミっ 古いCMを思い出してしまった
読める読めないじゃなくて読もうともしないクズなんだから 英語で読めと言ってもしょうがない
いやここで個人的な反省をされても困るんだけど...
お前がクズなのはわかったからこれからは読む努力
をすればいいんじゃない
>>275
なんだ、努力するのがいやなのか。 でも努力するまでもないよ、読むのは。
URL怪しいのでふまないからソースはれ あとID
283 :
267 :2009/05/11(月) 18:50:36 ID:???
ID強制厨はID晒せと言うわりにろくな回答をしないのが特徴
285 :
281 :2009/05/11(月) 19:25:34 ID:xMuv+rlf
Rubyのソースです require 'statistics2' def ci_lower_bound(pos, n, power) if n == 0 return 0 end z = Statistics2.pnormaldist(1-power/2) phat = 1.0*pos/n (phat + z*z/(2*n) - z * Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n) end
>>285 そのまんまでいいだろ
pnormaldistは正規分布表から持ってくるなり別途関数用意する
287 :
281 :2009/05/11(月) 19:44:54 ID:xMuv+rlf
>>286 丁重なご回答ありがとうございます。
無事解決いたしました。
169 :動け動けウゴウゴ2ちゃんねる [sage] :2009/05/12(火) 01:29:42 ID:N8ihSyJ90 (2/2) [PC] だいじょうぶ、だいじょうぶ。 あいつら、プログラマ板にいくと すぐにおとなしくなるから。 「自分よりレベルの高いやつがいないな?」 と思うと、とたんに暴れだす。 「自分よりレベルの高いやつがいるな?」 と思うと、とたんにおとなしくなる。 それがwebプログラマ。 だからレベルの高い集団に放り込んだほうが良い。
289 :
nobodyさん :2009/05/12(火) 09:35:55 ID:V/2qAUy/
CLIでもsapiでも使えるスクリプトを書きたいのですが シバンを書くと、sapiで実行した時にそれが文字として表示されてしまいます こういう場合シバンなしにするしかないですか?
290 :
nobodyさん :2009/05/12(火) 12:37:04 ID:fpNhR8wC
ServerがMacの時は、何もエラーが出なかったのに、Linuxにしたら、session_startでエラーがでるようになった。 Session_startの前に、何かが宣言されているとのこと。 何が原因だかわかる方いらっしゃればお教え願います
291 :
nobodyさん :2009/05/12(火) 12:40:15 ID:lKlDjO5N
> Session_startの前に、何かが宣言されているとのこと。 以下を確認しる ・session_start()の前にrequire_onceなどが入っていないか。そのrequire_onceで何か出力していないか ・headerなど出力していないか←これもアウトだったよな、今確認できね ・文字コードがUTF-8でBOMがついていないか(BOMついてると最初に2〜3バイトくらい出力してるはず)
さすがにPHPは飽きてきたな。
293 :
nobodyさん :2009/05/12(火) 17:54:53 ID:/A/mUsdc
PHPでのwebデータ取得のやり方がわかりません 以前perlを使ってた時はLWP::Simpleで2行くらいでできたのですが どなたかご教授願います
294 :
nobodyさん :2009/05/12(火) 17:55:25 ID:lKlDjO5N
意味がわからん $_POSTと$_GETのこと?
$var = file_get_contents('url'); 1行でできるよ
297 :
質問です :2009/05/12(火) 22:48:27 ID:Ttdyz3C0
【PHPのバージョン】 Version 5.2.6 【症状】 ファイルアップロード時、IEのみページ内リンクへ飛ばせない。 ------------------------------------------------------------------ 【 PHP 】 if (is_set($_FILES)){ header("Location:test.php#koko"); } 【 HTML 】 <form method="post" action="test.php" enctype="multipart/form-data"> <input type="file" name="test_file" /> <input type="submit" value="投稿" /> </form> ・ ・ ・ <a name="koko">ここ</a> ------------------------------------------------------------------ Fx、Opera、safariなどは「ここ」へ飛ぶのですが、 IEのみ飛ばず、URLも#以降が消えています。 解決方法があれば教えてください。
そもそもそんな仕様ないだろ
299 :
297 :2009/05/12(火) 23:11:23 ID:Ttdyz3C0
>>298 ページ内リンクって仕様外のことだったんですか?
知りませんでした。ありがとございます。
つまり、飛ばないIEの挙動が正しいってことだったのか……。
300 :
nobodyさん :2009/05/12(火) 23:14:45 ID:Og9YKcWq
一回しかアクセスできないページがあるとして、 レスポンスヘッダとレスポンスボディの両方を取得したいんですがどうすればいいんですかね? get_headers()だとヘッダしか取得できず、 ile_get_contents()だとボディしか取得できない 両方を一度のリクエストで取得したいのです
fsockopen()でできそうだが
>>297 試した感じheaderでアンカー付きで飛ばした時、IE8でも正常に動作するっぽいけどなぁ。
>>300 使ったこと無いけどcurlとかどうなの?
303 :
nobodyさん :2009/05/12(火) 23:42:50 ID:KBOzcqjj
(1) phpのプログラムの内部で、最初と最後に時間計測用のPGを組み込んで継続的に計測しています。 同じスクリプトで調べると、1分置きに24時間計測して大体0.20秒です。 (2) 他に別のプロバイダーからそのスクリプトにアクセスしてレスポンスが帰ってくるまでの時間を 1分置きに24時間計測して大体0.40秒です。 この0.2のタイムラグは、通信関係の遅延だと思いますが、 1日に20回程度(2)で測ったタイムの中で5秒を超えるものがあります。 (1)では、3回程度です。 この違いは、どこから来るのでしょうか? 改善する方法はありますか?原因が不明で困っています。 宜しくお願いします。
>303 webサーバーで定期的に何らかのプログラムが動いていて、その際に一時的に高負荷になっているんだろう。 例えばアクセスログの集計プログラムとかな。 つうか、実行時間計測なら素直にxdebugでプロファイル取れ。
>>297 アンカーはブラウザが解釈する物なのでjavascriptのようにクライアントサイドでないと本来意味ないらしい
307 :
nobodyさん :2009/05/13(水) 11:18:33 ID:43iecwOZ
【OS名】windowsXP 【PHPのバージョン】php5.26 【質問内容】 whois情報から、登録者名とドメイン更新期限日のみを取り出したいのですが 各問い合わせサーバーから返ってくるwhois情報から、文字列検索する しか方法はないのでしょうか。 非常に困っています。。。教えてください。
>>307 RFC読んでないからわからんけど、たぶんWhoisサーバのリプライに決まった形式はない。
更新期限も Expires On: だったり、Expire-Date: だったりマチマチ。
日付の形式もバラバラ
だから公開されてるライブラリがあったとしても、どれだけ使えるかは
どっちみち自分で確認しないとダメだろう。
なので、レジストリごとに自分で書くのが確実だと思う。
gTLDと.jpとかだけでいいなら楽。
TLD全部引かなきゃいけない場合は...ご愁傷様です。
309 :
nobodyさん :2009/05/13(水) 17:15:40 ID:DEsX7p4W
ログインにセッションを使っています。 ログインしているかどうかの確認を if(!$_SESSION["login_id"]){ //ログインしていない場合はトップページに戻す } のようなチェックを入れているだけなのですが、 これで問題ないでしょうか?
はい セッションの中身は全てサーバーサイドでの管理なので問題ありません
311 :
nobodyさん :2009/05/13(水) 17:39:08 ID:43iecwOZ
>> 308 レスありがd、しかしやっぱりそうですか、、、 TLD全部なんですよ。。。チーン
そもそもwhoisデータはトウシロが安易に扱っちゃいけないことになってる
313 :
軟式PHP :2009/05/13(水) 18:04:41 ID:???
>>309 (1)exit;を入れる
(2)session_regenerate(true)を入れる
(3)php.iniのuse.cookie.onlyとかを1にする
315 :
309 :2009/05/13(水) 22:50:31 ID:DEsX7p4W
316 :
nobodyさん :2009/05/14(木) 12:10:48 ID:YD/DCKSf
XSS対策で質問です。
>>313 のサイトを見ると
「出力時にもhtmlspecialcharsをしろ」とありますが、
それはデータベース内のデータを出力する際もでしょうか?
それともデータベースにINSERTする時に行えば問題ないのでしょうか?
>>316 _______ __
// ̄~`i ゝ `l |
/ / ,______ ,_____ ________ | | ____ TM
| | ___ // ̄ヽヽ // ̄ヽヽ (( ̄)) | | // ̄_>>
\ヽ、 |l | | | | | | | | ``( (. .| | | | ~~
`、二===-' ` ===' ' ` ===' ' // ̄ヽヽ |__ゝ ヽ二=''
ヽヽ___// 日本
_____ _____ ______ _______
| ウェブ | | イメージ | | グループ | | ディレクトリ |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
._________________
|XXS PHP │・検索オプション
└────────────────┘・表示設定
| Google検索 | I'm Feeling Lucky | ・言語ツール
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
○ウェブ全体から検索 ◎日本語のページを検索
>>316 自宅警備中なんだからそれくらい自分で考える時間あるでしょ?
>>318 そこまで316って馬鹿にされるようなレスなのか?
321 :
nobodyさん :2009/05/14(木) 19:17:47 ID:jJzNEQqb
qqq,www,eee,rrr aaa,sss,ddd,fff zzz,xxx,ccc,vvv というファイルtest.txtがあって それを読み込んで$ALという二次元配列に入れるところまではできたのですが($AL[2][2]がcccです)、この$ALを再び同じ形式でtxtファイルに書き込むにはどうすればいいでしょうか? txtファイルに書き込むデータの形式は上記のような感じで、1つの行の要素間はカンマでくぎって、行が終わったら改行します 本来はtest.txtを読み込んで、ソートしてから別ファイルに書き込むのですが、2次元配列のソートは覚えるのに時間がかかりそうなので、まずは読み込んで、読み込んだデータを別ファイルに書き込みたい状態です
>それを読み込んで$ALという二次元配列に入れるところまではできた これの逆をやればいいのでは?
>316 当然、どこかのタイミングではする必要がある。 どちらでも問題ないといえば問題ない。 ただし、普通は画面に出力するその瞬間に行なう。何故なら、その方が忘れにくいからだ。 一年前にエスケープして保存したか、そのまま保存したかを覚えている自信はあるか? 保存先が複数になった場合はどういうポリシーにする?セッション変数は?ファイルに書き出したアレはどうしたっけ? この関数の引数ってエスケープした奴?まだの奴? 保存する場所や、プログラムのほかの場所でエスケープする場合、画面出力するコードを見ただけではXSS対策がなされているかを確認できない。 画面出力をするその場でエスケープする方針ならば、そこを見れば間違いなくXSS対策がなされている事を確認できる。 だいいち、">"という文字列を含むレコードを検索したい時にはどうしたらいいんだっけ?とかいちいち悩みたくないだろ。 保存は生データ、加工は必要な奴が必要な場所でする、が基本。
324 :
nobodyさん :2009/05/14(木) 22:17:07 ID:jJzNEQqb
返答ありがとうございます 繰り返し文で1行ずつ書き込むのはできそうなのですが、fputs(ファイルハンドル,$AL)みたいにまとめてやることは出来ないでしょうか?
自分で関数を作る
早く自分ですらすらコード書きたいな〜♪
>>324 fputs($sp, implode("\n", array_map("joincsv", $AL)));
function joincsv($arr) {
return implode(",", $arr);
}
>>324 おまけ
$text = file_get_cotents("test.txt");
$AL = array_map("splitcsv", explode("\n", $text));
function splitcsv($rec) {
return explode(",", $rec);
}
329 :
nobodyさん :2009/05/15(金) 15:59:24 ID:aGJ1dXbD
【OS名】windowsVista 【PHPのバージョン】php5.29 Apache2.2を使用しています。 PEARはgo-pear.batを叩いてインストールしました。smartyも入っています。 【質問内容】 httpd.confでphp.iniの参照個所を任意の場所に変更してもphpinfoで確認すると Configuration Fileがc:\Windows配下になっています。 それじゃあということでc:\Windowsにphp.iniをおいてそれを編集しているのですが それも反映していない気がします。 (c:\Windows\php.iniのinclude_pathを任意の場所に変更してもphpinfoで確認すると C:\php5\pearになってしまう) Apacheは毎回再起動しています。 環境変数はちゃんとPHPインストールしたフォルダを指定しているのですが ほかに何か設定が必要なのでしょうか。 超初心者質問ですみません・・・。
php5.29というバージョンはありません
>>329 >【OS名】windowsVista
virtualstoreに反映されてない?
エディタを管理者権限で動かしてから編集してみて。
333 :
nobodyさん :2009/05/15(金) 16:55:20 ID:wv3qSkZj
【OS名】Vista 【PHPのバージョン】php5 【質問内容】 AB01、PC002などの品番をAB-01、PC-002のように変換するにはどうすればいいですか? 正規表現で簡単に書けますか?
先頭が2文字と固定されてるなら正規表現じゃなくても可能
335 :
軟式PHP :2009/05/15(金) 17:28:22 ID:???
>>333 あえて正規表現で書きたいなら以下。
$string = "AB01";
$string2 = "PC002";
echo preg_replace("/^([A-Z]{2})([0-9]+)$/","$1-$2",$string)."<BR>";
echo preg_replace("/^([A-Z]{2})([0-9]+)$/","$1-$2",$string2);
336 :
nobodyさん :2009/05/15(金) 17:43:45 ID:wv3qSkZj
>>334-335 ありがとう。
↓これでいけた。
preg_replace("/[A-Z]+/","$0-",$str);
$1ってなに? 数字の変数って使えましたっけ?
>>337 何こいつアホすぎwwwwwwwwwwww
変数は英文字から始めないと使えないってマニュアルに書いてありました ○$test ×$1test ○$test_1 ×$_test1
>>339 例えば
preg_replace("/^([A-Z]+?)-([0-9]+?)$/", "$1-$2");
があったとする
この場合、([A-Z]+?)の部分が$1に、([0-9]+?)の部分が$2に代入されるんだ
全部ひっくるめたのが$0だったっけ?$0は使ったことないからわかんね
$1が使えるようになったの最近じゃなかったっけ? 他の言語では昔から使えるけど。俺もいまだに癖で\\1書いちゃうな
ん、$がかぶってるのはマニュアルのミスか? 英語版は >replacement may contain references of the form \\n or (since PHP 4.0.4) $n, with the latter form being the preferred one. だし。
GDてユーザー定義関数使えないですか? function test(){ 動作確認した文字を描くだけのコード } test(); てユーザー定義関数にしてみると壊れてますと表示されるんですが?
当然できるよ
そうですか、再度考えてみます。 サンクス
349 :
346 :2009/05/15(金) 22:37:58 ID:???
画像リソース渡してなかった・・
350 :
nobodyさん :2009/05/15(金) 23:21:06 ID:/0bJTUf0
下のコードにおいて$aには文字が入っているので$a==0ではなく、bが表示されることを期待しているのですがaが表示されてしまいます。 $aが空かどうかを調べたいのですがどうすればいいでしょうか。 <?php $a=AAAFFDJ; if($a==0){ print "a"; } else{ print "b"; } ?>
>>350 結論から言えば、
$aに文字が入っていない。
'シングルクオーテーションか、
"ダブルクオーテーション
でくくられていない文字列は数値として扱われる。
もし文字列として扱いたいのなら、
$a='AAAFFDJ';
か、
$a="AAAFFDJ";
とすべき。このようにクオーテーションで囲われていると、
「あ、これは文字列なんだな」
ってPHP君がわかって、文字列として扱ってくれる。
そしてさらに if($a===0){ とすればかんぺき。 期待どおりの結果になるはず。
>>351 は間違えてました。
クオーテーションいれないでも、PHPでは
自動的に文字列型になってました。
var_dumpしたら確認できました。ごめんなさい
なので
>>351 は忘れてください
>>350 よって変数がカラかどうかを調べるには
emptyをつかうのがいいと思います。
<?php
$a=AAAFFDJ;
$b=empty($a);
var_dump ($b);
?>
てか、未定義のシンボルを使用すると、そのシンボル名自身として評価されるって仕様は なんとかならんのか。
いま調べたら、emptyはユーザーが0を入力してきたときに、 trueを返してしまうのか。 だからみんなisesetを使うんだな。
自動的にというか、スーパー全自動だなw 定数として評価した後にだからな
>355 Noticeは出るだろ。 開発環境でNoticeを切ってる奴はウンコだから勝手に死ね。
これがnoticeってのは、言語仕様としてどうかと思うけどねぇ。
というか、null値で処理されるんなら、まぁそんなもんかって思うけどさ。
if(ture === isset($_POST['hoge'])) とか一度はやるよな
>>361 すべきなんだろうけど、やらないねぇ。
それって noticeを抑制する以外、意味あるの?
正直どうでもいいとしか思ってない。
ポスト値はやるけどサーバ値はやらない俺
言いたかったのは ture だと思う。 さておき、そもそもコード内で$_POSTに直接アクセスするのが良くない。テストできなくなる。 多くのフレームワークでスーパーグローバルがどっかに格納されるのはこういう理屈。 実行の早い時点で $post = new Post($_POST); $post->get('hoge'); とかにラップすべき(実際はGETとかも放り込んで$request->getPost('hoge')とかいう形が便利)。 まあ、別に配列を引数として直接渡していっても構わないけどな。
すべきなんだろうけどねぇなんて言ってる奴が作ったシステムは使いたくないな
366 :
gugurekasu :2009/05/16(土) 10:56:24 ID:SaZzzxwN
セッションについて ブラウザー側で保存されているセッションIDを ユーザーが適当に書き換えたとします。 サーバーがブラウザーのセッションIDを読み込み tmpファイルの中に、新規にセッションIDに対応したファイルを作成。 これってセキュリティー問題ありなんですか?
gugurekasu
368 :
nobodyさん :2009/05/16(土) 17:35:33 ID:G930vyQ9
imagemagickでconvertするときgetimagesizeで判断しないでも正方形に切り出せる方法あるんかな? いろいろやったけどなんかうまくいかないんだよね。 $img=getimagesize($infile); $scale=($img[1]>$img[0])?'120':'x120'; exec("/usr/bin/convert $infile -resize $scale -gravity center -crop 120x120+0+0 output.jpg");
369 :
nobodyさん :2009/05/16(土) 17:40:55 ID:raJP1QPz
xamppを使用していますが、 require_once "/HTML/QuickForm.php";という記述のところで Fatal error: require_once() [function.require]: Failed opening required '/HTML/QuickForm.php' (include_path='C:\xampp\php\PEAR') in というエラーが出ます。 どうすればいいのでしょうか?
QuickForm.phpはちゃんとあるの? あとincludeパスが通ってないのかもしれんし
お前ら、変数や関数の名前の付け方で 参考にしているものってあります?
372 :
nobodyさん :2009/05/16(土) 17:51:27 ID:raJP1QPz
QuickForm.phpは存在します php.iniには、以下のとおりに設定しています。 ; Windows: "\path1;\path2" ;include_path = ".;c:\xampp\php\includes;C:\xampp\php\PEAR"
C:\HTML\QuickForm.php でパス合ってる?
374 :
nobodyさん :2009/05/16(土) 18:08:29 ID:raJP1QPz
どういうことですか?
375 :
nobodyさん :2009/05/16(土) 18:12:10 ID:raJP1QPz
もしかしてrequire_once に書くべきは絶対パスということですか?
/HTML/QuickForm.php はそういう絶対パスだが。 先頭に.を加えればいいんじゃない?
>372の設定で require_once "HTML/QuickForm.php"; // スラッシュ削除 なら、 C:\xampp\php\PEAR\HTML\QuickForm.php か c:\xampp\php\includes\HTML\QuickForm.php か .\HTML\QuickForm.php にあればいい。
>>366 特に無い。
しかしさっきまでの操作は
当然無効になる。
379 :
nobodyさん :2009/05/17(日) 00:18:22 ID:k2N5f3/W
レス番号を黒色から青色にしたいんですが どうすればいいですか?
<span style="color:blue;">***</span>
381 :
nobodyさん :2009/05/17(日) 00:32:04 ID:dGMXPYwm
文字列の最後の改行を消したいのですがchompみたいのありませんか
rtrim
chop
>>
385 :
nobodyさん :2009/05/17(日) 11:35:53 ID:TGtMBjDr
file_get_contentsがレンタル鯖では機能するのにローカルホストでは機能しません $data = file_get_contents($url); $count = count($data); echo $count; たったこれだけのソースでPHPのバージョンも同じなので、 file_get_contents以外に思い当たることがなく、 php.iniが間違ってるのかもしれないのですがご存じの方いらっしゃらないでしょうか PHP4.42
逆はよくある話だがな。 ところで機能しないってのは具体的にどんな状態?
>>386 ページに何も表示されず、HTMLソースも空っぽな状態です
php.iniのそれっぽい箇所は
allow_url_fopen = On
にしてあります
けっこう複雑なことをやってるスクリプトはローカルで問題なく動いているので、
file_get_contentsだけが機能してないようです
file使えって
389 :
nobodyさん :2009/05/17(日) 15:52:40 ID:xCE67DMN
ファイルのアップロードに関して質問。
マニュアル読んで
ttp://www.php.net/manual/ja/features.file-upload.post-method.php 1. <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
で最大サイズを指定しろよ。
2. サーバー側には upload_max_filesize で最大サイズがあるからな。
という2点は理解した。
で今仮に(1.) が1M (2.)が32Mとしよう。
俺の中では5Mのファイルをアップしようとしたら
(1.)に引っかかるので速攻で処理が終わるのかと思ったら
結局5M全部アップするまで終わらないのよ。
(2.)の最大サイズを超える50Mをアップしたとしても同じ。
『しかしそれでも MAX_FILE_SIZE を指定すべきです。
なぜなら、 巨大なファイルを転送しようとして、実はそれが大きすぎて
転送できないということを長時間待ったあとで知らされるのを 防げるからです。』
MAX_FILE_SIZE を指定する意味と↑の言葉がわからん。
MAX_FILE_SIZE を指定しておけば、鯖側のupload_max_filesize設定値よりデカいファイル うpっても長時間待たせずに知らせてくれる という風に読めるけど違う?
391 :
nobodyさん :2009/05/17(日) 16:04:16 ID:qM+VaA+V
ブラウザが対応していれば転送前にエラー出してくれるってことじゃ?
>>391 動かないってどう動かないの?
どうなることを期待しているの?
394 :
nobodyさん :2009/05/17(日) 16:17:46 ID:qM+VaA+V
>>394 それ、呼び出し元がphp.s3.toかどうかチェックしてるじゃない。
自分の設置したサイトがphp.s3.toじゃないのなら、その部分書き換えないと
396 :
nobodyさん :2009/05/17(日) 16:31:27 ID:qM+VaA+V
>>395 動きました。早速の回答、ありがとうございました。
397 :
389 :2009/05/17(日) 17:14:50 ID:xCE67DMN
レスありがとう。
ファイルサイズをいろいろと用意して
サーバーにアップロードしてみたけど
実際、よくわからん orz
・わかったこと
a) MAX_FILE_SIZE を指定してそのサイズを超えてもアップロードは止まらない(?)
>>392 とりあえず(1.)を指定したからと言って
ブラウザー側で止まってくれるようなものではまずなさそう。
>>390 そんな感じかと思うんだけど、
(1.)の設定有りと無しで終わるまでの時間を計ってみても
どうも変わらないっぽいんだわ。
とりあえず俺が期待していた
「MAX_FILE_SIZE を越える場合、速攻で接続が切れる」
っていうのはなさそう。
>>397 「MAX_FILE_SIZE を越える場合、速攻で接続が切れる」
これはないんだよね。アップした後でないとわからんってこと。
IEだけはvbscriptで事前チェックできるけどセキュリティのためとはいえファイルサイズもわかんないのは面倒だよね。
MAX_FILE_SIZEは効果ないのん? マルチパートでPOST送信するわけだから<form>の直後にMAX_FILE_SIZE書いてもダメかな?
ちうか要はphpがデータを受け取ってからでないと判断できんのがネックね。 MAX_FILE_SIZEもしょせんはフォームの1データであって、ブラウザがそれをつかって何やするわけでないから。
>397 2.はサーバー全体の設定になる。INI_PERDIRだから.htaccessで上書き、くらいはできるが。 1.はクライアントサイドでは無意味。HTMLの仕様にそんなものはない。 受け取ったスクリプトがこの値を見て勝手にサイズチェックをしてくれる、という値。 そして、この値は勿論クライアント側で改竄可能なので、結局何バイトのファイルを送るかはクライアントの自由になる。 結論:その値は無意味で、お前の思っていることは正しく、今日もPHPはウンコ
おもっくそ勘違いしてんなw
403 :
nobodyさん :2009/05/17(日) 21:59:09 ID:k2N5f3/W
直後に回答出てるじゃねーか
>>387 ローカルのPHPのバージョンはいくつなの?
406 :
nobodyさん :2009/05/18(月) 02:31:47 ID:JzE+u3d4
MAX_FILE_SIZEわらたw あれは別にinputじゃなくても普通に人間が読めるようにしておけばいいって話なんだよねw inputにしておけば送信する前に勝手に止まってくれるブラウザがあるかもしれないってだけで。
408 :
nobodyさん :2009/05/18(月) 14:18:01 ID:Auu+frfi
eAcceleratorをインストールしようと思ってるんだけど、 configure: error: Cannot find php-config. Please use --with-php-config=PATH ↑のようなエラーが出てしまう。php.iniのパスは間違ってないし、 /usr/local/Zend/etc/php.ini: line 1: [PHP]: command not found こんなエラーも出てるので、読み込みは成功してると思うんだけど、 何が違うんでしょう?
configureの全文見せろやハゲ。
410 :
軟式PHP :2009/05/18(月) 14:26:34 ID:???
>>408 Cannot find php-configってなってるから
configureの引数が--with-php-config=ではなくphp-configになってしまってると思われる。
Please use
412 :
nobodyさん :2009/05/18(月) 14:41:49 ID:Auu+frfi
>>409-411 レスありがとう。configureオプションはこんな感じです。
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/Zend/etc/php.ini
php.iniの場所を指定するんじゃなくて、php-configの場所を指定するのでは。
414 :
軟式PHP :2009/05/18(月) 14:52:16 ID:???
>>412 php-configのパスが間違ってるね。
iniじゃなくてphp-configのパスだよ。
415 :
nobodyさん :2009/05/18(月) 14:54:05 ID:Auu+frfi
>>413 その発想はなかったわ...
探してみる。
おそらくその環境だと /usr/local/Zend/bin/php-config だろうね。 php-configを実行しようとしてphp.iniを実行したから >/usr/local/Zend/etc/php.ini: line 1: [PHP]: command not found このエラーがでたんだね。 php.iniの1行目に#!で始まるコマンド行が無い、というエラー
417 :
nobodyさん :2009/05/18(月) 14:55:24 ID:Auu+frfi
>>413-414 通ったっぽいw
お手数おかけしました。
そして、ありがとうございました。
418 :
nobodyさん :2009/05/18(月) 15:27:29 ID:4boWXdtt
最近PHP飽きてきたんだけど他にどんな言語始めれば仕事につながりますか?
MAX_なんちゃらについてはphpがそれ以上のサイズを受けると内部的に停止するってだけ。 アップロードはブラウザ側の処理だから延々と処理し続ける。
421 :
軟式PHP :2009/05/18(月) 16:10:44 ID:???
422 :
418 :2009/05/18(月) 18:21:10 ID:???
軟式さんどもっす 英語は読めるので他にないですか?
仕事ならJavaかC++
今からC++って需要あるか? C++.netのほうがよくないか?
>>418 他に何ができるの?
JavaScript?
MySQL?
ま、MySQL・・・!?
427 :
nobodyさん :2009/05/18(月) 22:02:23 ID:JzE+u3d4
SQLが正しいな
PHPで同じようなレベルのコード書いてればそりゃ飽きるわな 御託はZend FrameworkとかPEARレベルのソースを読み書きできるようになってから抜かせ と言いたいところだが、1言語しか使えない奴は総じてゴミなのでひとつくらいは別言語を覚えたほうがいいな RubyとかActionScript辺りはどうだろ、適度に共通項があり適度に相違点があって勉強になると思うが
いまさらRubyなんて言っているのは流行遅れの引きこもり。 今は、.NetかSssP、Oframerとかが旬。
今は akikanだろ
スレみすだ
432 :
329 :2009/05/19(火) 10:19:45 ID:vtfeozSW
遅くなりましたが、とりあえず前に若干進みました。
>>331 インストール後の話なのでちょっと現況とマッチしてはいませんでした
まあ一切合財再インストールしたほうがいい、という意味と思いますし
私もそうして設定デフォルトでやり直したほうがいいかなーと思ったり
でもまあ暫くがんばってみたいと思います
>>332 virtualstoreフォルダは無かったんですが管理者権限でエディター動かして編集したらば
とりあえず反映しました!うーんなんなんだ
ありがとうございました!
とりあえずVistaはもう・・・ぐったり
433 :
418 :2009/05/19(火) 11:42:30 ID:xoc5pFTk
>>425 さんどもっす
SQLでポスグレとMySQLは使えます
jsも使えます(ajaxも)
データフォーマットはxml,json,csv,tsvも絡められます
web言語にとらわれず仕事になるものでしたら何でも覚えたいです
434 :
nobodyさん :2009/05/19(火) 11:43:33 ID:xoc5pFTk
>>428 flashは仕事で使ってるので覚えてます
ASは3.0まで使ってます
どうでもいいがそろそろスレチということに気がつけ。 マ板でもいっときな。まぁPHPは言語してみなされないがw
436 :
nobodyさん :2009/05/19(火) 14:33:32 ID:oPaIAAk+
スミマセン、PHPのスレで質問していいのかわからないですが
[Mon May 18 21:25:02 2009] [error] [client 192.168.0.7] PHP Fatal error: callData::require_once() [<a href='function.require'>function.require</a>]:
Failed opening required 'config.inc.php' (include_path='.:/php/includes: /usr/lib/php/pear: /var/www/php_libs: /var/www/php_libs/Smarty/libs:
/var/www/php_libs/config') in /var/www/html/system/admin/callData.class.php on line 44, referer:
http://192.168.0.2/system/a_new.php apacheを動かしてて、プログラムがエラーを起こしてしまいます。実行するファイル 'config.inc.php' が無いと言われているようです。
でもinclude_pathで指定されたフォルダの中に該当のファイルが存在しています
なぜ認識してくれないのでしょうか? 環境はCentOS5で、apache2、php5です
リナックスを操作するのに慣れていないんですが、実行権限などの関係でしょうか?
.phpは755で指定しています
>>436 config.inc.phpをどこに置いてるかフルパスで書いてみそ。
本当にあるのか怪しいわ。
438 :
436 :2009/05/19(火) 15:39:19 ID:oPaIAAk+
>>437 ありがとうございます
vi /var/www/php_libs/config/config.inc.php で中身が確認できる状況です
気になるのが
ls -la /var/www/php_libs/config とすると、
config.inc.php の他に config.inc.php~ というファイルがあります
Xで見るとそんなファイルないんですが隠しファイルってことでしょうか
削除した方が良いんでしょうか
-rwxr-xr-x 1 root root 4008 May 18 19:16 config.inc.php
-rw-rw-rw- 1 root root 4021 May 20 2008 config.inc.php~
こんな感じです
ls -laってなに?
~付きはemacsかなんかで編集した時の編集前のファイルだろ、消していいよ。 パーミッションの実行もphpの場合(cgiモードで動作させる場合を除いて)関係ない その ディレクトリのオーナーとパーミッション(/var、/var/www、/var/www/php_libs)は どうなってる?
>>438 440の言うようにDSOでPHPが動いているだろうから
Apacheから読めるかどうかが原因のような気がするなぁ。
>>439 雑魚は引っ込んでろw
442 :
436 :2009/05/19(火) 15:55:22 ID:oPaIAAk+
drwxrwxrwx 2 root root 4096 May 18 23:35 config drwxr-xr-x 12 root root 4096 May 16 11:18 www drwxr-xr-x 21 root root 4096 Apr 8 04:17 var パーミッションはこんな感じです 度々すみません
ディレクトリが777、ファイルが666ってわけわからずやってんのか・・・ 逆にそれが災いしてSELinuxが効いてんじゃないの? オーナーをhttpd実行ユーザーと同じにして644の755にしとけ
444 :
436 :2009/05/19(火) 16:08:44 ID:oPaIAAk+
>>443 ほんとに理解不足ですみません
ディレクトリは644 .phpを755ってことでしょうか
とりあえず問題切り分けのために試しにSELinux切ってみては。(切ってなかったら) ディレクトリは755だよ。それよりrootが持ち主だけどApacheはroot以外のユーザーで動いてるでしょ?
446 :
436 :2009/05/19(火) 16:45:26 ID:oPaIAAk+
PHPでドコモの携帯端末情報を取得したくて$_SERVER['REMOTE_ADDR']をやったんですが ipが取得されてしまいました どのようにして携帯端末情報を取得するのでしょうか?
448 :
447 :2009/05/19(火) 17:38:47 ID:CIWntjhX
すいません、ID出し忘れてしまいました 失礼いたしました
いや $_SERVER['REMOTE_ADDR']自体IPを取得するものじゃねーか 何この釣り
その値はhttdがセットする。 たとえばApacheなら、httpd.confでHostnameLookups Onになっていないと 名前でなくアドレスが入る。ちなみにHostnameLookups Offがデフォルトだったかと。
おっと内容見てなかったw 多分間違ったんだろうけど 'REMOTE_HOST'だなw
>>433 PHP
MySQL
ポストグレス
javascript
ajax
xml
json
csv
tsv
これだけできるんだ。なんだ、
なんでもできるんじゃん。
453 :
nobodyさん :2009/05/19(火) 23:47:23 ID:oPaIAAk+
linux環境、apache2です ファイルの読み込みについて質問です。 include_pathをdocumentRootの外に設定したくて、php.iniに open_basedir =/var/www としましたが /var/www/hoge/include.phpを /var/www/html/index.phpが読み込んでくれません。 調べたら、httpd.confでも open_basedirを設定できるということで、 そっちで禁止されてるのかと確認したんですが open_basedir という文言じたいhttpd.confに ありません。 何が原因かわかるでしょうか? 設定するファイルは以下で間違いないですよね? php.ini は、 /etc/php.ini httpd.conf は、 /etc/httpd/conf/httpd.conf あと、/var/www/html/include.phpを読み込むのは成功しています
>>385 いまさらだけど、会社のPCとかからやってない?
プロキシ経由で外に出てる場合、はじかれるよ。
>>453 include_pathの設定の変更は、php.iniのその名の通り「include_path」を設定するんじゃないか?
456 :
nobodyさん :2009/05/20(水) 00:46:36 ID:jL/vKg9a
>>455 どうもです
>「include_path」を設定するんじゃないか?
その通りなんですが、このinclude_pathで設定したパスが open_basedirで設定したパスより
上にあると、それは除外されちゃうらしいんです。
なので、open_basedirをinclude_pathで指定したパスを含むように変更したんですがダメダメで…
参ったなぁ
458 :
453,456 :2009/05/20(水) 00:58:36 ID:jL/vKg9a
>>457 include_pathがopen_basedirの中に含まれてるのに読み込まないのを
読み込むようにしたいんです。
どこに原因があるのかと。php.ini以外に設定するファイルがあるのかなとか。
>php.ini は、 /etc/php.ini
>httpd.conf は、 /etc/httpd/conf/httpd.conf
これは間違ってないんでしょうか? linuxは不慣れで、
操作してるファイル自体勘違いしてないか知りたいです
>>458 apacheの再起動は当然してるよね。
設定ファイルの場所とかはインストールした環境によるからどこってのは無いと思うけど、
php.iniとhttpd.confは、とりあえず適当にエラー出しそうな値に書き換えてみたら
とりあえずいじってるファイルがあってるかどうかわかるんじゃない?
それこそ、php.iniでinclude_pathをいくつか追加してみて、ini_getで呼んでみて
値が変更されてたらOKなわけですし。
461 :
453,456 :2009/05/20(水) 01:10:36 ID:jL/vKg9a
>>459 xamppってwindows用ですよね? linuxでもあったかな
>>460 apacheの再起動は
/etc/rc.d/init.d/httpd restart ですよね? やってます
>php.iniとhttpd.confは、とりあえず適当にエラー出しそうな値に書き換えてみたら
>とりあえずいじってるファイルがあってるかどうかわかるんじゃない?
たしかに! 試してみますね。ありがとう
>>447 ホスト名がほしいんか?端末そのものの情報か?
前者なら$_SERVER["REMOTE_HOST"]でいいけど。
ブラウザやOS情報なんかほしいんなら$_SERVER["HTTP_USER_AGENT"]も必要だな。
463 :
447 :2009/05/20(水) 11:03:52 ID:???
自己解決しました
>>451 がんばって答えてくれてありがとねw
回答してくれるのは嬉しいことですが携帯端末情報を知らない人が多すぎてフイタ
465 :
447 :2009/05/20(水) 11:05:22 ID:???
自己解決しました
>>462 必死で考えてくれてありがとねw
ドコモとか携帯端末情報なんて文字全然見てなかった。 REMOTE_ADDRでそれを取得しようとする間抜けなんて存在するとは思わないもんな
元々知りませんでしたって言えばいいじゃん自称回答者乙w
ドコモの公式サイトも作ってるけど何か?
妄想乙
公式ってコンテンツプロバイダーのことな。 今日来たメールだと >【iモード技術情報】 マイニュース/マイリンク関連情報掲載のお知らせ とかが来るようなとこね。
それのどこがすごいの?
473 :
軟式PHP :2009/05/20(水) 11:54:36 ID:???
まぁ447がクズだということは分かったから今後一切来ないでほしいね。 答えが分かった途端に調子にのるww ちなみに回答側のやつらは殆ど某ライブラリ経由で端末情報取得してるよ。 シコシコ$_SERVERとか書いてろwww
$_SERVER["COME_SHOT"]
たかがドコモの公式の一部に掲載されてるページごときでwwwwwwwwwwwww
俺は三キャリアだけどなにか?
480 :
nobodyさん :2009/05/20(水) 14:54:14 ID:FO/+N7r7
PHP5.1.6+eAcceleratorから、PHP5.2.9+eAcceleratorにアップデートしたのですが 5.1.6の時と比べて、負荷に弱くなったというか反応が重たくなりました。 設定は何も変更していないのですが、5.2.9は重たいのでしょうか? 反応を軽くするようなセッティングはなにかありませんか?
ドコモへお問い合わせください それかドコモ先生の登場をしばらくお待ちください
482 :
453,456 :2009/05/20(水) 16:07:58 ID:jL/vKg9a
すみません、ほんとにしつこくて申し訳ないんですが、open_basedirの値がphpinfo()で 以下のようになっています。 設定1)open_basedir no value no value 設定2)open_basedir / / これはそれぞれlinux上のどのディレクトリにもinclude_pathのパスを指定できると いう意味だと考えて良いのでしょうか? 実際にはどちらを設定していても、/var/www/html以下へのinclude_pathの指定しか 受け付けられず参っています phpinfo()で表示される情報よりも優先される設定がプログラム中の直接指定以外あるんでしょうか?
>>480 eAcceleratorはconfigure > makeしなおした?
>>482 SELinuxは?
っていうかapacheのログに何か出てたりしないの?
apacheのログの見方は apache/logs/error.log だよ
それは設定次第だろハゲ。
487 :
nobodyさん :2009/05/20(水) 17:30:25 ID:FO/+N7r7
>>483 はい、PHPを入れ直した後、eAcceleratorも再インストールしました。
PHPのバージョンアップ後、PHPのページだけ、アクセスが増加する時間帯になると重たくなると言われたので
もしかしたら5.2.9は評判がよくないのか、なんて思ったりしたのですが・・・
488 :
nobodyさん :2009/05/20(水) 17:52:11 ID:mk8mjF0l
userをテキストボックスで、docomo.ne.jpをプルダウンでsubmitを押すと
[email protected] としてMySQLにインサートし、その後ブラウザに表示
させるような事はPHPで可能でしょうか?
user、docomo.ne.jpをそれぞれテキストボックスでsubmitしてインサートした
後に表示させる事はできたんですけど・・。
>>487 何だろうなぁ。5.2.9が重いとは聞いたことないが・・。
>>488 出来る。
<input type="text" name="host" value="">@
<select name="domain">
<option value="docomo.ne.jp">docomo.ne.jp</option>
</select>
あとは分かるな?
490 :
nobodyさん :2009/05/20(水) 18:15:43 ID:mk8mjF0l
>>489 あ、出来た。有難う御座います。
、というかなぜこんな事で2時間唸ってたんだと思うと恥ずかしくなりました。
>487 PHPやeAccの性能問題のほかに、PHP側の仕様変更/バグ修正によってコードに何らかの不具合が生まれた可能性もある。 俺なら実行時間のプロファイルを、いったんeAccを外した状態で取る。 人間が体感できるほどの差なら、5.2.6で検証するまでもなく、5.2.9の実行結果で明らかに時間のかかってる処理が見つかると思う。
>>482 とりあえず、考え方を変えて、
httpd.confのDirectoryをさ
例えば、
/var/www/htdocs
としてやって、htmlやPHPのルートを設定するじゃない。
んで、/var/www/libとか適当なディレクトリを作ってやって、
そこにincludeしたいライブラリとかを設置してやって
ついでに、phpのinclude_pathに、/var/www/libを設定してやるっていうのだと
ダメなの?
493 :
nobodyさん :2009/05/21(木) 00:18:09 ID:M2R0F+Cl
494 :
nobodyさん :2009/05/21(木) 00:19:32 ID:M2R0F+Cl
495 :
453,456 :2009/05/21(木) 00:26:29 ID:dWSTP/J8
>>484-485 レス遅れてすみません
エラーログは以下です
[Wed May 20 07:40:28 2009] [error] [client 192.168.0.7] PHP Warning: include(config.inc.php)
[<a href='function.include'>function.include</a>]: failed to open stream:
No such file or directory in /var/www/html/hoge.php on line 2
[Wed May 20 07:40:28 2009] [error] [client 192.168.0.7] PHP Warning: include() [<a href='function.include'>function.include</a>]
: Failed opening 'config.inc.php' for inclusion (include_path='.:/php/includes:/usr/lib/php/pear:/var/www/php_libs:
/var/www/php_libs/Smarty/libs:/var/www/php_libs/config:/var/www/html:/var/www/html/test12345')
in /var/www/html/hoge.php on line 2
動かしてるhoge.phpは以下です
<?php
include(config.inc.php);
echo _HOGE_VAR;//inc.phpで定義されてる定数
?>
config.inc.phpを/var/www/html/test12345に置いたら動いて
/var/www/php_libs/configに置いたら動きません(上のエラーが出ます
/www関連のファイルは
/var/www/php_libs/config/config.inc.php と
/var/www/html/hoge.php しか存在していない状況でテストしてるんですがエラーが出てしまいます
include("./config.inc.php");
>>495 failed to open stream を日本語に訳せ
読み込み失敗
499 :
453,456 :2009/05/21(木) 01:17:40 ID:dWSTP/J8
>>496 ありがとうございます。それを今試してみましたが、ダメでした
hoge.phpと同一ディレクトリにあるconfig.inc.phpを読み込むという意味でいいでしょうか?
実際にconfig.inc.phpがあるのは別のディレクトリです (/var/www/php_libs/config/config.inc.php)
>>497 読み込みに失敗したってことですよね?
Failed opening 'config.inc.php' for inclusion… はインクルードの設定のパスの中では
config.inc.phpは読み込めなかったって意味で、つまり指定したパスのなかに含まれてないということですよね?
実際にはあるんです…(/var/www/php_libs/config/config.inc.php)
./htmlよりも上位のパスでのphpの配置を許さない、プログラムを動かさないという指定がlinuxにはあるんでしょうか?
今まで回答くれた方ありがとうございました、解決しました 対象のパスに含まれるディレクトリの権限設定が間違ってました しょうもない理由でしたが勉強になりました 本当にありがとう
>>499 config.inc.phpを/var/www/html/test12345に置いたら動いて
/var/www/php_libs/configに置いたら動きません(上のエラーが出ます
この二つのディレクトリ、もしくはその配下に作られたファイルの
アクセス権限に違いはない?
502 :
501 :2009/05/21(木) 01:53:51 ID:???
ぐはww遅かったかwww
>>502 ほんとすみませんw でも助かりました
ファイルそのもののアクセス権限しか見てなかったです
ありがとうございます!
504 :
nobodyさん :2009/05/21(木) 19:00:49 ID:M2R0F+Cl
>>493 >>494 です。
スレ違いで申し訳ないのですが、何とかご回答頂けないでしょうか?
前の席のものが気になってしょうがないと言っていて、私の方もちょっと困っています。
園芸板行って来いよ。スレ違いってレベルじゃねーぞ。
506 :
nobodyさん :2009/05/21(木) 20:49:40 ID:M2R0F+Cl
お返事どうもありがとうございます。 レスがつかないので心配していました。 すみません。その園芸板ってどこでしょうか? そこの方が適切であれば、そちらでお聞きしたいと思います。
507 :
nobodyさん :2009/05/21(木) 20:55:56 ID:M2R0F+Cl
508 :
nobodyさん :2009/05/21(木) 21:19:39 ID:3E8Yd+C8
PHPでブログ作りたいのですが ログイン機能 記事編集 画像アップロード 必要なPEARはなんでしょうか?
>>508 その単位でpearを探すのは大変。(いっぱいある)
それぞれについてどんな機能が欲しいかを決めてからのほうがいいよ。
Pearは中途半端だからいらない 勉強目的なら自作でやってみ 仕事ならZF
513 :
nobodyさん :2009/05/21(木) 22:24:42 ID:A/e/PApt
>>508 Auth ,HTMLQuickform, peager, pearDB2, かなぁ・・・
これにSmartyをつかってぐぐっと大人っぽくなるかも(~'.'~)
514 :
nobodyさん :2009/05/21(木) 23:09:31 ID:3E8Yd+C8
>>509-513 皆さんありがとうございます。
勉強目的なので自分で作ってみます!
またよろしくお願いします
516 :
nobodyさん :2009/05/22(金) 03:20:16 ID:f6PVhhZ1
お願いします。submitボタンが押されて処理開始までに、あるいは処理中の待ち時間を 指定する事はPHP単体で可能ですか?イメージとしては買い物サイトなどの決済処理で 少し砂時計が回る間を待つような感じで。
sleep
518 :
nobodyさん :2009/05/22(金) 03:31:10 ID:f6PVhhZ1
>>517 超即レス有り難うございます。。こんな関数もあったんですね。
ぐぐったんだけどワードが悪かったのかなかなか見当たらなかった。
早速試したところうまくいきました。
519 :
488 :2009/05/22(金) 10:46:02 ID:9hIwxjrZ
【0.php】
<?php
extract($_POST);
echo "
<form action =\"0.php\" method=\"post\">
<input type = \"text\" name = \"host\" size = \"20\">@
<select name =\"dimain\">
<option value=\"docomo.ne.jp\">docomo.ne.jp</option></select>
<input type = \"submit\" value = \"送信\">
</form>";
$meruado = "$host@$domain";//★変数$meruadoは
[email protected] のような形式にする★
if($host == null){//★テキストボックスがnullならメッセ出して処理中断★
echo "入力してください";
exit();}
if($host <>''){//空じゃなければ実行
mysql_connect('xxx','xxx','xxx');
mysql_select_db('xxx');
$sql = "select * from xxx where xxx = '$meruado'";//登録済かどうかチェック
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if($rows == 0){//登録済でなければ処理開始
session_start();
$_SESSION['test01']=$meruado;
echo "$meruadoは登録可能です<br>";
echo "$meruadoを登録しますか?<a href=\"./1.php\">登録する</a>";//クリックで1.php(DB登録)へ
}else{//登録済ならメッセ出して処理中断
echo "$meruadoは登録済みです";
}}?>
520 :
488 :2009/05/22(金) 10:47:28 ID:9hIwxjrZ
【1.php】 <?php session_start(); $meruado = $_SESSION['test01']; 〜SQLコネクト中略〜//INSERT文 header("Location: ./0.php"); session_unset();?> ------------------------------------------------------------------------------------------ 488ですが、追加でお尋ねしたい事があります。 一応の動作はちゃんとしているようですがUndefined variableが以下のようにソースに★を つけた箇所で発生します。 Undefined variable: host in 0.php on line 18 Undefined variable: domain in 0.php on line 18 Undefined variable: host in 0.php on line 19 php.iniに手を加えて隠す事は都合が悪いので、できればソースを見直したいのですが このような場合はどのように書けば発生しないのでしょうか? 環境は Fedora 8 Apache2.2 php5.16 Mysql5 です。 色んなHPを参考に拙い知識で書きましたので、ソースはおかしいですがよろしくお願いします。
521 :
軟式PHP :2009/05/22(金) 10:56:24 ID:???
extract($_POST); 癖になる前にこれはやめれ。 register_global onと同じくセキュリティがザルになるぞ。 あとUndefinedは変数が定義されていないのに使ってるからだ。 $host = "";またはvar $host = "";とかで宣言してから使え。
varはないだろ
523 :
軟式PHP :2009/05/22(金) 11:01:15 ID:???
>>522 すまそ。素で間違った。
varは無視しとくれ。
524 :
488 :2009/05/22(金) 11:07:58 ID:9hIwxjrZ
>>523 $host = "";で解決しました。
>癖になる前にこれはやめれ
ご指摘ありがとうございます。確かにセキュリティ上良くない事は色んなHPで
よく書いてましたから、ある程度理解してはいましたが、今の知識じゃサンプル
からソースを弄って書くのが精一杯でしたがこれを機会に癖になる前に治します。
525 :
nobodyさん :2009/05/22(金) 18:38:53 ID:JSavhF6R
WINDOWSのAPACHEで動かしてたプログラムがあります。 内容は、mb_strlen()でフォームの文字数をカウントするものです。 あいうえお なら 10文字で数えられていたんですが、今回LINUXの環境で動かしてみたら15文字とカウントされました。 どうして? UTF8でカウントされたってことでしょうか? この場合、どこの文字コードを変更したら良いんでしょうか。最終的には、ブラウザにはUTF8で出力したいと思っています。
526 :
525 :2009/05/22(金) 18:40:41 ID:JSavhF6R
書き忘れました httpd.conf も php.iniも Windowsの設定を引き継いだので、どうしてこうなったのかわかりません
527 :
525 :2009/05/22(金) 19:08:17 ID:???
すみません、解決しました 質問自体かなり変なこと書いていました、失礼しました
どう解決したのさ?
529 :
nobodyさん :2009/05/22(金) 20:10:49 ID:z1xOHJCG
以下のようなコードを書いてSQLiteのデータベースの情報を得ようとしているのですが、 全く何も返してもらえません。 SQLiteのバージョンは3、PHPは5.2.6でWindows環境のphp.exeを使用しています。 接続もクエリ送信もできるのになぜか帰ってきません。 どなたか分かる方回答or誘導をよろしくお願いします。 try { $dbh = new PDO('sqlite:../wn.db','', ''); } catch (PDOException $exception){ echo "MAKEING PDO:"; echo $exception->getMessage(); echo "\n"; exit(); } $query = "select * from sqlite_master;"; $stmt = $dbh->prepare($query); $stmt->execute(); $cols = array(); while ($cols = $stmt->fetch(PDO_FETCH_ASSOC)) { var_dump($cols); } echo "Completed \n"; 実行結果: R:\>php sqlite.php Completed
$query = "select * from sqlite_master";
try { $dbh = new PDO('sqlite:../wn.db','', ''); $query = "select * from sqlite_master;"; $stmt = $dbh->prepare($query); $stmt->execute(); $cols = array(); while ($cols = $stmt->fetch(PDO_FETCH_ASSOC)) { var_dump($cols); } } catch (PDOException $exception){ echo "MAKEING PDO:"; echo $exception->getMessage(); echo "\n"; exit(); } にすればいいんじゃね?
>>530 セミコロンの有無は関係ないみたいです・・・
>>531 catchでエラーは出ませんでした・・・。
.dbファイルもちゃんと存在しますし、おかしくならないはずなんですけど。。
どうでもいいですがMAKEINGって酷いですねorz
じゃ結果セットが0件なんじゃね?
データが空っぽ
>>529 PDOはデフォルトだとエラー吐かないのでエラーモードの設定を。
$dbh = new PDO('sqlite:../wn.db',null,null,array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
ついでにPDOStatementオブジェクトはforeachで回せるよ。
一般で配布されているdbは異常がなくて、結果もsqlite_masterテーブルには必ず内容があることが保証されてるんですよね。
だから空ってことはないと思うのですが。。。
>>537 の通りエラーモードを設定した後、わざとdbのパスを間違えて指定しても、エラーが何も出ませんでした。
こんなことってあるんですかね?
539 :
529 :2009/05/22(金) 22:17:48 ID:???
すいません、存在しない名前を指定したら勝手にDBが作られるらしいです。 勘違い申し訳ないです。
どっ
んまい
542 :
529 :2009/05/22(金) 22:46:58 ID:???
>>529 のwhile中にあるfetchの引数「PDO_FETCH_ASSOC」を取ると値が取れるようになりました。
どうしてか分かりませんが、Webのコードを鵜呑みにコピペすると酷い目に遭いますね・・・orz
以上解決です。ありがとうございました。
>>542 もうみてないとおもうけど
PDO_FETCH_ASSOC
ではなくて
PDO::FETCH_ASSOC
だな。
PDOのconst。
544 :
529 :2009/05/22(金) 23:05:03 ID:???
>>543 だったみたいですね・・・
そのように変えたら何事も無く動作しました;;
545 :
nobodyさん :2009/05/22(金) 23:08:21 ID:JSavhF6R
お願いします。php5です。別ファイルの読み込みで失敗してます。 以下の場合、読み込み失敗します require_once('../hoge.php'); //相対パス。実際にはファイルはある require_once('/hoge.php'); 以下の場合は、読み込み成功します require_once('hoge.php'); //読み込むスクリプトと同じディレクトリの場合 require_once('hoge.php'); //php.iniのinclude_pathで指定されたパスにある場合 何が原因でしょうか? 相対パスでの読み込みを許さない設定などがあるんでしょうか? hoge.phpやそれを含むディレクトリのパーミッションは、成功時も不成功時も同じです。
そのrequire_onceは、実際に叩いたスクリプトに書いてあるの? index.phpを叩いたら、index.phpの置いてある場所からの相対を引くよ。 つまりindex.phpから、別の「nantoka.php」をrequireして、そのnantoka.phpのなかで requireしたファイルは、nantoka.phpからの相対ではなくてindex.phpからの相対だよ。
547 :
545 :2009/05/22(金) 23:59:17 ID:???
>>546 ありがとうございました。
原因がわかりました、パスの問題ではなかったです。
読み込み対象のファイルが、hoge.phpとHoge.phpのように名前の大文字小文字が違ってました
Windowsでは大文字小文字の判別してなかったのに、Linuxではエラーになっていました
ほんとにお騒がせしました
548 :
nobodyさん :2009/05/23(土) 02:46:08 ID:JnoRZVY9
すみません、if文覚えたて厨です。 <?php $namae = $_POST['namae']; $kana = $_POST['kana']; $mail = $_POST['mail']; if($namae == ""){ echo "警告:名前空っぽ"; } if($kana == ""){ echo "警告:カナ空っぽ"; } if($mail == ""){ echo "警告:メール空っぽ"; } echo "テスト" ?> 1つ前のhtmlの送信ボタンから各POST値を受けています。 この晒したphpファイルを確認画面として使いたいのですが前画面の 3項目(名前 ふりがな メアド)のうち、一つでも不備があったら次の ステップに進ませないようにしたいのですがどうすればよいですか? 3項目が全部空っぽでもecho "テスト"の文字が出てるって事は警告が 出た後でも処理はスルーされて最後まで進むようだし、 echo "警告:名前空っぽ"; exit();} とかににすれば全て空でもスルーはされないけど1つしか警告は出せません。 空っぽの項目を的確に警告が出せて、かつecho "テスト"まで進ませない ような書き方を教えてくれませんか? if文でなくても良いです。
>>548 echo "警告:カナ空っぽ";
}
if(!$mail || !$kana || !$namae ){//ここから挿入
exit;
}//ここまで挿入
echo "テスト"
これで進ませないことはできる。
551 :
nobodyさん :2009/05/23(土) 08:10:08 ID:xzc/N9L3
//
http://example.com/a.php function go(){
senddata="from=index";
url="b.php";
httpoj = new XMLHttpRequest();
httpoj.open("POST",url,true);
httpoj.onreadystatechange = function(){
if(httpoj.readyState==4){clipboardData.setData("Text",httpoj.responseText);alert(httpoj.responseText);process(data,mode);}
}
httpoj.send(senddata);
}
//
http://example.com/b.php <?php phpinfo();exit;?>
各ファイルの中身はこうで、a.phpからgo();を実行し、postでデータを転送しているつもりなのですが
b.phpのphpinfoを見ると
PHP Variables
_SERVER["REQUEST_METHOD"] POST
_SERVER["QUERY_STRING"] no value
_SERVER["argv"] Array()
_SERVER["argc"] 0
と、データが全く受け取れていないようです。
//
http://example.com/c.php でjsを使わず
<form method="post" action="./b.php">
<input type="hidden" name="from" value="index" />
<input type="submit" value="hoge">
</form>
と、すると正常に処理出来ているのですが。
552 :
nobodyさん :2009/05/23(土) 08:10:56 ID:xzc/N9L3
サイトー企画の横取り丸のInetspyを見ると
POST
http://example.com/b.php HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument,
application/xaml+xml, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, application/x-silverlight, */*
Referer:
http://example.com/c.php Accept-Language: ja
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Sleipnir/2.8.5)
Host: hushi.x0.com
Content-Length: 93
Proxy-Connection: Keep-Alive
Pragma: no-cache
from=index
POST
http://example.com/b.php HTTP/1.1
Accept: */*
Accept-Language: ja
Referer:
http://example.com/a.php Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; Sleipnir/2.8.5)
Host: hushi.x0.com
Content-Length: 10
Proxy-Connection: Keep-Alive
Pragma: no-cache
from=index
と、ちゃんと両方b.phpにpost出来ているようにしか見えないのですが。
原因と解決策を教えて下さい。よろしくお願いします
よくわからんがPHPとJavaScriptが混ざってねーか? Ajaxを勉強しているっぽいのはわかるけど。
554 :
nobodyさん :2009/05/23(土) 13:58:49 ID:xzc/N9L3
えと、では
>>551 の一番上の
http://example.com/a.php は
http://example.com/a.html と置き換えていただいて結構です。
そしてjsはスクリプトタグで囲って
<script language="javascript">
function go(){
senddata="from=index";
url="b.php";
httpoj = new XMLHttpRequest();
httpoj.open("POST",url,true);
httpoj.onreadystatechange = function(){
if(httpoj.readyState==4){clipboardData.setData("Text",httpoj.responseText);alert(httpoj.responseText);process(data,mode);}
}
httpoj.send(senddata);
}
</script>
こんな感じです。
そう、ajaxに挑戦しています。
しかしpostでデータが全く送られない
厳密には、送ってはいるらしいが、受け取れてない様子なのです。
jsは正常に送信しているらしく、phpの受け取りに異常があると思ったので、phpスレに質問させて頂きました。
>548 <?php function validate(){ $err = array(); if(!isset($_POST['namae']) || '' === $_POST['namae']){ $err[]= "警告:名前空っぽ"; } if(!isset($_POST['kana']) || '' === $_POST['kana']){ $err[]= "警告:カナ空っぽ"; } if(!isset($_POST['mail']) || '' === $_POST['mail']){ $err[]= "警告:メール空っぽ"; } return $err; } $errors = validate(); if(count($errors) > 0){ foreach($errors as $eachError){ echo $eachError . '<br />'; } } else{ echo '問題なし'; }
>>554 httpoj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
httpoj.send(senddata);
557 :
nobodyさん :2009/05/23(土) 19:16:48 ID:6DL8AN4q
すみません、変な質問ですが、 自分が作ってるアプリで、GDを使ってサイズ変更+複製したら error.logに Allowed memory size of 1234567890 bytes exhausted と出たので php.iniのmemory_limitで上限値を上げました。 たかがGDでメモリが足りないなんてことになるのは普通なんでしょうか? 作り方が悪いんでしょうか? 最大、一度に7ファイル画像UPしてそれぞれGDするんですが…
1ファイルずつ変換し、変換が終わってファイルに書き出した時点で変数をunset()すれ。 BMPとして丸ごとデータを持ってるようなものなので、それなりにメモリは食う。
と思ったが1.2GBはあり得ない気もするな。 無限ループとかしてんじゃね?
vista + xdebug がクラッシュしまくりで使い物にならないんだけど、なんとかなりませんか? イベントログにはxdebug.dllが原因でapacheがクラッシュしたと残ってる。 ステップ実行でも、通常のリクエストでも起こって、再現性はない。 zend_extension_ts でロードしてるけど extension=xdebug.dll でロードすれば ステップ実行はできないけど安定するみたい。 xdebug.dllは、オフィシャルとactivestate(KomodoIDE用)のバイナリで試したけど、大差なかった。 誰かお助けを vista sp1 x86, apache 2.2, php 5.2.6-5.2.9-2, xdebug 2.03-2.04
変数はnull代入がおぬぬめ
コメントするにはログインする必要がありますってよくありますが どんな感じになってるんですか?
563 :
nobodyさん :2009/05/23(土) 22:44:58 ID:HvWc9rw9
ID忘れました
564 :
nobodyさん :2009/05/23(土) 23:46:03 ID:6DL8AN4q
>>562 ログインっていうのは基本的にセッションを使って行っています。
セッションというのはそのユーザがWebサイトに入ったときにWebサーバから発行されるもので、
色々な情報を保持することができます。
このセッションは、ユーザがブラウザを閉じたりすると無効になります。
ログインするときに入力したIDとパスワードで認証を完了すると、そのユーザに発行されるセッションには、
「IDパス認証済み」という情報が付与されます。
一方、ユーザしか見れないページには『「IDパス認証済み」というセッション情報があるかどうか』を検査するコードが存在し、
存在する場合にはユーザにページを見せるような構造になっています。
ユーザがログインに使ったIDとパスワードをそのまま使わせているダメなサーバもありますが、
主にこんな形でメンバー制サイトは運用されていると思います。
>このセッションは、ユーザがブラウザを閉じたりすると無効になります。 ならねーよ、馬鹿。
なるよ、馬鹿。
セッションはブラウザを閉じると自動的に消去されます。
そんなのセッションの有効期限をいつにするかによって違うでしょ。
570 :
nobodyさん :2009/05/24(日) 05:19:52 ID:1c4u+X3P
それはクッキー?
クッキーですね
ならないようにもできる、が正解。 クッキーの有効期限を指定しない場合はブラウザを落とすと消える。 つうか、実際にブラウザ閉じてもセッションが継続するサイトなんぞ山のようにあるだろ馬鹿。
残念ながらそれはクッキーといいます
>>556 何も変化ありませんでした。
phpinfoで見ると、ちゃんと
_SERVER["CONTENT_TYPE"] application/x-www-form-urlencoded
と送信されています。
恵子かわいい
576 :
575 :2009/05/24(日) 15:39:39 ID:???
ごめん誤爆した
携帯で画像をランダム表示したいのですが どのようなスクリプトが使えるのでしょうか?
マルチ乙
579 :
nobodyさん :2009/05/24(日) 20:20:37 ID:luv0xO7F
mb_strcutの挙動について確認させて下さい。 切り出す開始位置の値によって最後の一文字が欠落してしまいますが、これは開始位置が 文字の途中(バイトシーケンス中)と重なってしまうことにより起こる仕様なのでしょうか。 // SJIS-WINでのmb_strcut mb_internal_encoding('sjis-win'); $str = "12345678901234567890ー"; echo mb_strcut($str, 15). "\n"; // 出力: 8901234567890 echo mb_strcut($str, 10). "\n"; // 出力: 678901234567890ー // UTF-8でも同様でした。 mb_internal_encoding('UTF-8'); echo mb_strcut(mb_convert_encoding($str, "UTF-8", "sjis-win"), 15). "\n"; // 出力: 678901234567890ー echo mb_strcut(mb_convert_encoding($str, "UTF-8", "sjis-win"), 10). "\n"; // 出力: 45678901234567890 PHP 5.2.9-2、Windows Vista SP2
581 :
nobodyさん :2009/05/25(月) 22:50:10 ID:1PMYVgsN
すみません、質問させてください。 今、PHP5とmysql、phpMyAdmin、 CentOS5(不慣れ) でサイト作っています、そこでブラウザから以下の クエリを実行したら mysql_affected_rowが-1を返します。 実行したクエリ> delete from `hoge` where `uId`=100 and `category`='foo' が、phpMyAdminのクエリ画面で直接上記のクエリを実行すると、正しく削除実行されます。 どんな原因が考えられるでしょうか? あと、このクエリのページでは、上のクエリの前にもう一つクエリ($sql_1)を実行してて、トランザクションさせようとしてます。 $DB -> Execute("BEGIN");//Pearのadodbを利用してクエリ $sqlResult_1 = $DB -> Execute($sql_1);//これはちゃんと実行されます if(!$sqlResult_1){ $DB -> Execute("ROLLBACK"); } $DB -> Execute($deleteSql);//これが失敗します、$deleteSqlの中身が上記のものです $deletedNum = mysql_affected_rows(); if($deletedNum != -1){ //成功した場合の処理。実行されません… } $DB -> Execute("COMMIT");//トランザクション本実行 変でしょうか? $DBで定義されてるユーザ情報、サーバ情報は共通で使っています。 よろしくお願いします
582 :
nobodyさん :2009/05/25(月) 23:24:26 ID:KRPzGQP0
ある程度初歩的なコーディングができるようにはなったのですが、ぐちゃぐちゃで汚いんです。 お手本になる、シンプルでエレガントなスクリプトあったら教えてください。
シンプルでエレガントなコードは概して参考に出来ない罠
>>582 マニュアルかPearかZendFrameworkあたりがおすすめ
585 :
nobodyさん :2009/05/26(火) 10:37:03 ID:e9nrbvXe
引継ぎで前の人のソース見たらひどいことになってた PHP内にJavaScriptベタ書きってなんだよwwww しかも、一部動作しない部分があってデバッグしてみたんだが コメントで 「○○をする関数」って書いてあった いやこれコメントアウトしてねーじゃんwww こういうソース回されたときってどう対処してるよ 明らかにひどいやつ、しかもまだリリース前なんだぜ?
こんな所で愚痴らないで上司に相談する
リリースまで時間がある→最初から組みなおす リリースまで時間がない→見なかった振りをして未実装部分に取り掛かる
>>585 つーかそんなスキルの人間を使い潰してるような会社にいて大丈夫か?
589 :
nobodyさん :2009/05/26(火) 10:50:54 ID:e9nrbvXe
>>588 オフショアで外人が組んでたスクリプト
XHTMLすら同じIDを2つ以上使ってるんだぜ?まじひどい
お前 「引き継いだソースが使い物になりません」 上司 「どのくらいダメなんだ?」 お前 「動かないとは言いませんけど、構文とか滅茶苦茶です」 上司 「動くなら問題ないだろ。お前のセンスに合う合わないなんてどーでもいい」 お前 「・・・・・・」 上司 「ほら、さっさと作業にもどれ! リリースは来月頭なんだからな!」
591 :
nobodyさん :2009/05/26(火) 11:02:58 ID:e9nrbvXe
よく見たら会員登録削除部分なんてフラグ立てないで直接DELETE文で削除してるじゃねーか
592 :
軟式PHP :2009/05/26(火) 13:09:39 ID:???
本当全盛期に比べスレ過疎ってるな。
プログラム関連板全体に言えるが。
>>591 マテ。あわてるな。
トリガーでdeleteされたら別テーブルにコピーしてるに違いない。
593 :
nobodyさん :2009/05/26(火) 16:41:29 ID:UQeZnrko
質問があります。 無料レンタルサーバーでPHPを動かした場合、メモリはおよそ幾らくらい使用可能でしょうか? 多すぎると、エラーで停止しますか? もしくはHDDに移されて動作が遅くなりますか?
594 :
nobodyさん :2009/05/26(火) 16:43:25 ID:e9nrbvXe
レンタルサーバーに質問しやがれカスです
595 :
nobodyさん :2009/05/26(火) 16:51:53 ID:UQeZnrko
C/C++のCGIとPHPはおよそどちらが高速かわかりますか?
596 :
nobodyさん :2009/05/26(火) 16:56:15 ID:UQeZnrko
どうやら、cgiはだめみたいですね。速度は速くても短時間で処理が終わる場合は 実行開始までにかかる部分で負荷が大きいようでした。
597 :
軟式PHP :2009/05/26(火) 17:09:04 ID:???
>>593 使用可能なメモリはphpinfoしてmemory_limitを見るべし。
オーバーするとエラーで停止する。
>>595 fastCGIだったらオーバーヘッドも少なく、C/C++の方が速いと思う。
思うだけでやったことはない。
598 :
nobodyさん :2009/05/26(火) 17:10:36 ID:UQeZnrko
トンクス
599 :
sage :2009/05/26(火) 18:12:49 ID:???
【OS名】CentOS 5.3 linux 【PHPのバージョン】php5.2 【連携ソフトウェア】qmail(sendmailコマンドは使用可能) 【質問内容】受信したメールに添付されている画像等を 特定のフォルダへ投げるようにするにはどうすればいいでしょうか。 .qmailに転送用のものを置けばいいとは思うのですが、どのようなものを置けばいいのか サンプルなどあれば教えてください。
600 :
nobodyさん :2009/05/26(火) 18:31:35 ID:UQeZnrko
>>597 atpageとtok2で調べたのですが、atpageはアクセス拒否でtok2は8Mでした。
>>595 そこまで速度を求めるならmoduleにした方が良いと思う
602 :
nobodyさん :2009/05/26(火) 20:56:23 ID:UQeZnrko
moduleとは標準関数やDLLみたいな物のことでしょうか。 無料サーバーでも導入可能ですか。 PHPを高速化させる部品があるみたいですがこれは導入出来ないと思いました。
無料サーバーという時点で高速化なんて無理だよ。 ただでさえ他ユーザーとリソースの食い合いするんだから。
>>599 |/usr/bin/php -q /example/example.php >& /dev/null
./Maildir/
とかやって example.php でなんとかする
>582 そういう時は、「完成品」を見るのは微妙。 自分のコードを、どうやれば「完成品」に近づけられるのかが分からないからな。 「完成品」のどこがどういいのかも、実際に書き換えたりメンテしたりしないと分からない事が多い。 指導するにしても、おまいの現時点でのレベルが分からんから他人にはどうしようもないしな。 上手い人に自分のコードを渡して、考えている事を聞かせてもらいながら目の前で「美しく」書き換えてもらうのが一番分かりやすい。 …んだが、まあ難しい事が多いしなぁ。
606 :
nobodyさん :2009/05/27(水) 00:31:02 ID:Cc/G0jS5
あの他人のコードを改良して自分の物にするのはアウトですか?
うん
608 :
605 :2009/05/27(水) 00:55:02 ID:???
>606 できりゃ構わないけどな MVC構造のフレームワーク使ってるのに何故かテンプレートにロジックが書いてある、とか、そういう事になるのがオチだと思う 使いまわす価値のあるコード作法ってだいたいデザインパターンという形で既に体系化されてるから、ある程度のレベル以上の奴はそっちを座学した方が早いしな
>>582 きれいなコードを書くために心がけること
・関数名は分かりやすい名前を付ける。イミフな省略はしない。多少長くなってもキニシナイ。
・同様に変数名も分かりやすい名前を付ける。
・空行を多く入れてみる。
藤原博文さんの本だったかな?
フォントを小さく(5ptとか)して見て、コードが黒々してたら、たいてい読みづらい、って書かれてた気がする。
・一つの関数内のコードをダラダラと書かない。意味の単位で小分けする。
理想は、コメントや空行を含めても、スクロールせずに一つの関数のコードがみえること。最悪100行以内に押さえる。
・同じ処理の塊をいろんな箇所に書かない。極力、関数としてまとめる。
まとめすぎて、かえって分かりづらくなるかもしれないが、最初は気にせずガンガンまとめてしまう。そのうち常識の範囲内がどの程度かわかるようになる...はず
・フラグの多様は控える。気がつきゃ万国博覧会になっちゃうよ。
・トリッキーなことはしない。
有名どころでは、ループ抜けるのに例外使うとか
いずれは、そんなトッリキーな手段に頼らざるを得ないといけないかもしれないが、始めは完全禁止の気持ちで。
関数分けしていくと、呼び出しが深くなって遅くなるとか言われるかもしれないけど、そんなところがボトルネックになるのはまずないから、キニシナイ。
610 :
nobodyさん :2009/05/27(水) 01:25:42 ID:vJelIhGL
>>610 ルールというような縛りではなく、ただの心がけ。
612 :
nobodyさん :2009/05/27(水) 02:08:35 ID:Cc/G0jS5
関数名とか変数名がどうしても$hensuとかになっちゃうんですけど 英語も勉強するべきなんでしょうか
>609 ・変数への再代入の禁止 原則、ある変数には一度しか値を代入しない。次に代入する時はケチケチ使い回さず新しい変数を用意する 配列の合計を求める時など、何かをまとめる時だけは例外だけど ・多重ネストの回避 ifのネストが深くなったら、if内の処理をごっそりそのまま関数に切り出す事をまず考える foreach、switchなども含め、どんな複雑な処理であっても、関数内のネストを一重だけにする事も可能 特にswitchは、その部分を単独の関数として切り出すことを真っ先に考えるべき ・グローバル変数の禁止 まずは、使う変数は全て関数の引数にする すると、同じ引数を取る関数群がいくつか見えてくる。これが、どこをクラス化するかを判断する一番安全な方法 ・手続き的にではなく、宣言的に書く 「Aに処理Xを加えて変数Bに、それに処理Yをして変数Cに」という思考を捨てる 「CはBにYをしたもの」「BはAにXをしたもの」という順序で、つまり定義を記述する感じでプログラムを書く 一時変数を同名の関数に置き換えていく感じで、一時変数を削っていくのが分かりやすい手順 >613 ローマ字より英単語のほうが読みやすいだろjk まあ、そういうレベルじゃなく、$variableでも命名としては最低の部類に入るけどな
マニュアル,入門書,良いオープンソースなどを見て学ぶ柔軟性が必要かと
616 :
nobodyさん :2009/05/27(水) 03:39:43 ID:vJelIhGL
趣味でやってると、変数の命名規則が気分次第になってしまう。 ・ハンガリアン記法っぽいの $intUserId, $strBody ・アンダーバーで繋ぐ $user_id, $regex_str ・どうでもいいカウンタ変数 $i, $j, $k ・その他 foreachをネストして多次元配列を展開する場合に使う最初の一時変数は 何かこうもっと良い命名がある気がするけど思いつかないからv_を接頭辞にした。 foreach ($array as $v_array) { foreach ($v_array as $key => $value) { } }
一か月ぐらい前に書いたコード読み直してみると良いよ。 絶対悪態付きたくなるから、何が問題か分かる。
>>614 ・手続き的にではなく、宣言的に書く
「Aに処理Xを加えて変数Bに、それに処理Yをして変数Cに」という思考を捨てる
「CはBにYをしたもの」「BはAにXをしたもの」という順序で、つまり定義を記述する感じでプログラムを書く
一時変数を同名の関数に置き換えていく感じで、一時変数を削っていくのが分かりやすい手順
$B=X($A);
$C=Y($B);
は分かるが、「CはBにYをしたもの」「BはAにXをしたもの」ってどういう事?
書きたいように書けよ 型にハマったんじゃ新しいもの生み出せない ゾと
>616 foreach($years as $eachYear){ foreach($month as $eachMonth) }
手が滑って途中で送信しちったが、まあ分かれ。
622 :
nobodyさん :2009/05/27(水) 21:58:18 ID:tZbxcqT7
教えてください。 A.csv ID 名前 00001 あああああ 00002 いいいいい 00003 うううううう B.csv 00004 えええええ 00005 おおおおお 00006 かかかかか csvファイルAからBへ特定の行だけを移動したいと思ってます。 チェックボックスで選ばれたIDの行をAから削除しBへ書き込むプログラムはどうすりゃいいんでしょうか? IDは重複する事はありません。
phase1.A.csvを読み込んで行単位にIDに紐付けたチェックボックスをつけつつ表示 phase2.postされたチェックボックスのID値を見てA.csvを読み込み該当の行を特定、B.csvを追記モードでopenして追記。A.csvから該当行を削除。 こんなもんか
>>621 thx
確かにeachが良さげ。お陰ですっきりした。
625 :
nobodyさん :2009/05/28(木) 02:36:09 ID:PcD3hYBe
【OS名】linux 【サーバー】Apache (Unix) PHP/5.2.8 mod_ssl/2.8.28 OpenSSL/0.9.7j 【PHPのバージョン】php5.2.8 【連携ソフトウェア】mysql 【質問内容】 通常のサイトから、SSLのサイトへ向けてPOST送信でデータを渡す際、 hidden だと値が渡らないという現象に見舞われてるのですが、 どうすれば解決するでしょうか。 サンプルソースです (改行が多すぎるってエラーが出たので、次に続きます)
626 :
625 :2009/05/28(木) 02:37:02 ID:PcD3hYBe
(625の続き)
サンプルソースです
「送信元」(test.html)
<html>
<body>
<form action='
https://xxxxxxxx.net/test.php ' method='post'>
<input type='text' name='test' value='12345'>
<input type='hidden' name='kakushi' value'abcd'>
<input type='submit' name='submit' value='送信'>
</form>
</body>
</html>
「送信先」(test.php)
<?php
print_r ( $_REQUEST ) . "<br />";
print_r ( $_POST );
?>
「結果」
Array ( [test] => 12345 [kakushi] => )
Array ( [test] => 12345 [kakushi] => )
「期待すること」
Array ( [test] => 12345 [kakushi] => abcd )
Array ( [test] => 12345 [kakushi] => abcd )
よろしくお願いします m(__)m
627 :
625 :2009/05/28(木) 02:53:41 ID:PcD3hYBe
すいません、追加です。 先ほど、「通常のサイトから、SSLのサイトへ向けて」って書きましたけど、 同じSSLのサイト内でも同様にhiddenの値が渡りませんでした。 これはひょっとしたらスレ違いなのでしょうか。
value'abcd'> ↓ value='abcd'>
心の底から脱力できる要因だなwww
630 :
625 :2009/05/28(木) 04:34:02 ID:PcD3hYBe
(´・ω・`)/
世の中、解決できない問題はないんだな
>>628 dクス
世の中解決できない問題は多々あるがお前のはうっかりさん過ぎる
632 :
nobodyさん :2009/05/28(木) 14:50:53 ID:rnletbDk
Web系プログラミングの雑誌で、みなさんが定期購読している雑誌ってなんですか? お勧めがあったら情報共有しましょう。 ちなみに私は日経ソフトウェアとDB Magazineくらいです。
それらのどの辺がお勧めですか?
DB Magazineとか高いし毎号買うほどのものでも・・
635 :
nobodyさん :2009/05/28(木) 18:37:52 ID:a/iG0y0p
www.hoge.jp/hoge.phpでドキュメントルートの外の画像を表示したい時、 どうしたらいいですか? zendFWでアプリケーション領域に蓄積されてる画像を、zendFWとは別に単独で 動いてるphpの中で動かしたいんですが…
絶対パスで指定すればいいのでは?
>>635 ZFにある画像データをstreamするphpを用意すれば良いだけなんじゃないの?
>>635 hogeだのhageだのは……。
example.com
が例文用にが予約されてる。
639 :
nobodyさん :2009/05/28(木) 20:06:58 ID:cUediPPl
switch ($textbox1){ case ""; print("BOX1が未入力<br>"); break; case(strlen($textbox1) < $minlen); print("規定の文字数以下<br>"); break; case(ereg("^/", $textbox1)==true); print("先頭に/を含んではいけません<br>"); break; } switch ($textbox2){ print("BOX1が未入力<br>"); break; 〜以下同じような事がずらずら } //ここまでにbreakがあったらここで処理を停止したい XXX //ここ以降に別の処理とかSQLに書き込み等 YYY XXXの所までにbreakに掛からなければexit等を使い、進ませないように書くにはどんな 書き方がありますか? if (breakがあったら){ exit; } のような事はできないんでしょうか?
フラグを立てる
XXXで止めたいcaseのところでフラグでも立てて判定すれば良いんじゃねーの
642 :
nobodyさん :2009/05/28(木) 20:30:56 ID:a/iG0y0p
>>637 おおー
それが正解っぽいですね! どうもありがとう
他の方もありがとう
643 :
nobodyさん :2009/05/28(木) 20:41:12 ID:pePXJ68I
買うほどのものでもなくね? 本とwebで十分。
644 :
nobodyさん :2009/05/28(木) 21:25:31 ID:cUediPPl
>>640-641 ありがとうございました。「フラグを立てる」の意味が解らなかったのでぐぐったけど
意外と少なかった気がしますが試行錯誤の末、解決できました。まず
$flag = 0;を宣言、caseのケツに$flag = 1;を書いておいてXXXの部分に
if($break){
exit();}
を書いたらうまく行きました。この場合の「フラグを立てる」というのは
こうした事をさすのでしょうか?
重ね重ねくだ質ですがお願いします。
645 :
nobodyさん :2009/05/28(木) 21:26:46 ID:cUediPPl
>>644 訂正・・if($break){ではなくてif($flag){ でした。
$breakなんて変数初めて出てきてるんじゃ?
yes
>639 >555
649 :
馬鹿ですみません><! :2009/05/28(木) 22:35:16 ID:ib08ur5F
$request_keys = array_keys($_REQUEST); if ( in_array('_GET', $request_keys) || in_array('_POST', $request_keys) || in_array('_COOKIE', $request_keys) || in_array('_FILES', $request_keys) || in_array('_SERVER', $request_keys) || よく見るソースコードで書いてあるんだけど これって誰得なんですかぁ?
その次からの処理に答えが書いてあるんじゃないかな
651 :
馬鹿ですみません><! :2009/05/28(木) 22:39:15 ID:ib08ur5F
次の処理はdie('Disallowed request variable found. Exited.'); です。
>>649 なんだその馬鹿丸出しのソースは…
そんなの見るな馬鹿が移る
公式に乗ってるようなソースで勉強しろ
Disallowedって…
655 :
馬鹿ですみません><! :2009/05/28(木) 22:43:52 ID:ib08ur5F
グローバル変数の添え字が'_POST'だと駄目ってことなのぉ?
656 :
馬鹿ですみません><! :2009/05/28(木) 22:49:01 ID:ib08ur5F
みんなぁググッテル・・・ 俺分からないぁ〜馬鹿だから・・・ PHPer
array_keyとかあまり使わない関数だから何やってるんだろうと真面目に読んでみたけど 何がしたいのかわけわからんw
>>655 を書かなければ単なる馬鹿扱いだったんだがな・・・
660 :
馬鹿ですみません><! :2009/05/28(木) 22:55:42 ID:ib08ur5F
// // Disallow requests that contain some _XYZ global variables // $request_keys = array_keys($_REQUEST); if ( in_array('_GET', $request_keys) || in_array('_POST', $request_keys) || in_array('_COOKIE', $request_keys) || in_array('_FILES', $request_keys) || in_array('_SERVER', $request_keys) || in_array('_ENV', $request_keys) || in_array('_REQUEST', $request_keys) ) die('Disallowed request variable found. Exited.'); // // Unset global variables // if ( ini_get('register_globals') ) { foreach ( $_REQUEST as $var_name => $null ) unset($$var_name); unset($null); }
661 :
馬鹿ですみません><! :2009/05/28(木) 22:58:19 ID:ib08ur5F
グローバル変数に許されないリクエスト_XYZが含まれているって何?w 誰得なの? まじで。。。
ああ、何となく意図するものがわかってきた…… けどそれって、んな大層に書くようなことかなあ。 窓硝子は防犯上危険だといって、でかい南京錠をかけてるようだ。 まず先に窓硝子を止めればいいのに。
はい次の人
register_globals がもし、ONだったら、 $_REQUEST 経由で入ってきた変数を サニタイズする、ってところかな。
665 :
馬鹿ですみません><! :2009/05/28(木) 23:29:14 ID:ib08ur5F
if ( ini_get('register_globals') ) { foreach ( $_REQUEST as $var_name => $null ) unset($$var_name); unset($null); } ここは馬鹿でもわかったwwwwwwwwwww
>>623 流れ的にはそのような処理かと思います
色々やってみたのですがなかなかうまくいきません
どなたか例文でもいただけないでしょうか?
むしろその色々が何故駄目なのか、考えることに価値があるんだよ。
まず色々やってみたソースを貼るかうpれ 話はそれからだ
>666 phase1.A.csvを読み込んで (普通に表示) 行単位にIDに紐付けたチェックボックスをつけつつ表示 phase2.postされたチェックボックスのID値を見て A.csvを読み込み 該当の行を特定 B.csvを追記モードでopenして 追記。 A.csvから該当行を削除。 どこが分からないんだ?
どーせ課題か何かの丸投げなんだろうな
>>666 <?php $f=fopen("A.csv","r+") or die("x.");$fb = fopen("B.csv","a") or (fclose($f) and die("x."));echo '<form action="?" method="post">';
$al = array(join(",",fgetcsv($f)));while (($d = fgetcsv($f))){if( $_POST["sb"] == "ex" && in_array($d[0],$_POST["c"])){fputcsv($fb,$d);}else{echo '<input type="checkbox" name="c[]" value="'.$d[0].'">'.$d[1].'<br>';$al[] = join(',',$d);}
}echo '<input type="submit" name="sb" value="ex"></form>';rewind($f);fputs($f,join("\n",$al));ftruncate($f,strlen(join("\n",$al)));fclose($f);fclose($fb); ?>
これで我慢しとけ。
673 :
nobodyさん :2009/05/29(金) 22:49:20 ID:sUbabdXe
仕事でPHPを使う場合、仕様書はどんな形式のを渡されるんですか? UMLとかを使うことが多いんでしょうか?
仕様書って何それ?おいしいの?
「なんかこう、グァーって感じでお願い」 とかかな…
「あー、ホラきみ、アレ知ってるよね。そうそうアレアレ。あんな感じで一つ頼むよ。 簡単でしょ?」 とかもあるな。
>>673 渡されるのは要件の箇条書きとかイメージシートで、なぜか仕様書は作ったやつが書くことが多い世にも不思議な物語。
すべては俺の頭の中にある
>>677 が現実だな。
どちらかというと仕様を忘れないための仕様書になる。
家建てた後に設計書を作るイメージだなwwww
680 :
nobodyさん :2009/06/01(月) 09:21:13 ID:Q4RGmDnB
転送されたメールを本文と添付に分けて保存したいんですが 転送されてきたメールはどこに格納されるんでしょうか? サーバーがqmailだったので.qmailでphpに飛ばす事は出来るようになったんですが 飛ばされた時にどこに格納されているのかわからないので、どうやって取り出して分割すればよいのかがわかりません。 そういったことをやってるサンプルとかあれば教えてもらえないでしょうか。
>>680 どこに格納とかじゃなくて、qmailからphpに飛ばせてると言うことは、
標準入力(stdin)から受け取れば良い。
file_get_contents("php://stdin");で受け取り
Mail_mimeDecodeとかで本文・添付を分ければ良いと思う。
682 :
681 :2009/06/01(月) 09:58:26 ID:Q4RGmDnB
>>681 サンクス。
php://stdin ってのを知らなかった。
ちょっとやってみます。
683 :
nobodyさん :2009/06/01(月) 10:45:30 ID:J3ZG9zzj
サーバーサイドでCookieが有効か確認する方法はないですか? $_COOKIE['cookie'] = true; if($_COOKIE['cookie'] !== true) { die("Cookieは無効です。"); } これでCookieが無効かどうか判別しようとしたのですが、CookieをOFFにしてもtrueになります
684 :
nobodyさん :2009/06/01(月) 10:58:47 ID:4hjBfWfC
質問です。 PHP5、Windows XP Proにて、コマンドラインアプリを作ってます。 動的にフォルダ名を指定して、エクスプローラー(またはその他のファイラー)で開こうとしています。 コンソール画面上・プログラム上ではなく、エクスプローラーに、特定フォルダを開かせるにはどうすればよいでしょうか?
まず先にsetcookie()などで値を送信して、次に呼ばれたphp内で if(isset($_COOKIE['hoge'])) みたいに確認する
>>684 phpからエクスプローラをどう呼んでるのか知らんが
explorer.exe <フォルダのpath>
じゃダメなん?
>>686 system('explorer C:\');
これでいけました!
systemとかコマンドラインオプション渡せばいいことはわかっていたのですが、
どうも自分の使っていたファイラーだとコマンドラインオプションが違うようで、
つまらないところではまってしまってました・・・。
ありがとうございました。
688 :
nobodyさん :2009/06/01(月) 12:39:59 ID:Sqhg3GlC
$moji = "あいうえお
>>21 かきくけこ
>>12 さしすせそ
>>112 たちつ
>>1 てと";
みたいな文字列があったとき、>>数字のペアだけを抜き出して配列に格納できるような関数はありますでしょうか?
explodeみたいなやつで、かつ正規表現でマッチできるような感じです。
preg_matchである程度対応できたのですが、
$mojiは可変で、>>数字があったりなかったり、これよりも増えたりして、
さらに>>数字を抜き出す数もこちらで指定したときにpreg_matchでは難しかったので、
とりあえず>>数字ペアだけでも全て抜きだせればいいなぁと思いました。
抜き出す方法、または便利な関数があれば教えてくださいよろしくお願いします。
689 :
nobodyさん :2009/06/01(月) 12:40:54 ID:J3ZG9zzj
>>688 preg_matchで余裕
お前の書き方が悪いだけ
690 :
nobodyさん :2009/06/01(月) 13:01:18 ID:Sqhg3GlC
自己解決しました preg_match_allで思い通りの挙動になりました。
691 :
nobodyさん :2009/06/01(月) 13:43:18 ID:FEmWlQvb
<?php
$moji = "あいうえお
>>21 かきくけこ
>>12 さしすせそ
>>112 たちつ
>>1 てと";
$pattern = "/[^0-9>]/";
$result = preg_replace($pattern, "", $moji);
$result = explode('>>', $result);
print_r($result);
初心者だけどこれぐらいしか思いつかねえwww
自動アフィブログでも作る気か
質問です。 ある配列変数が、メモリ上で使用しているバイト数を調べるにはどうすればいいでしょうか?
ダンプすりゃ出て来るんじゃね?
2chでスレを立てるとスレのURLにはユニークなタイムスタンプが付いてるけど これって複数の人が同時にスレを作成した場合どういう処理をしてるのでしょうか? 早勝ちでずらしてるのかな? その場合、極端な話1000人の人が同時にスレを立てたら1000回待ちが入ることになりますよね。
先に立てた者が勝ち、つまりファイルロック
やってみれば?
698 :
nobodyさん :2009/06/02(火) 09:21:15 ID:w20GGpoy
【OS名】CentOS5.3 【PHPのバージョン】php5.26 【質問内容】 OS上でpingやdigを叩いて結果を表示できますが、PHPからコマンドを叩いて 結果を受け取るにはどの関数を使用すればいいですか?
exec,systemなど
複数プロセスから同時にdatが作られるからスレタイが適当に混ざるよ
おまえは何をいってるんだ。
702 :
nobodyさん :2009/06/02(火) 19:00:26 ID:gh4uNvVX
centOS5.3でphp5.26使っています mysql5を対象に、SELECT文をテストしてます。 これで、帰って来た行数を取得する処理は以下のようなやり方で良いんでしょうか? //クエリ(pear のadodb利用) $sql = "SELECT * FROM `".$table."` WHERE `uId`=".$uId." and `uType`= ".$uType." and `ken`='Tokyo'"; $sqlResult = $DB -> Execute($sql); //戻って来た数を数える $selectNum = 0; while(!$sqlResult->EOF){ $selectNum ++; $sqlResult -> MoveNext(); } echo "対応するデータが".$selectNum."件ありました"; DELETEやUPDATEなら mysql_affected_rows()がありますが、SELECTは こんな感じです。もっとスマートなやり方あったら教えてください。
704 :
nobodyさん :2009/06/02(火) 21:00:45 ID:csgf+sFw
<?php
session_start();
$mad = $_SESSION['meado'];
$message = '';
require('ransu.php');
echo $message;//乱数確認の為にとりあえず表示、ここでは正常に表示される
echo "$mad<br>";
$to = "$mad";
mail ("$mad", "test", "$message","From:***@***.***");
session_unset();
?>
ransu.phpで乱数を発生させた結果を$messageに代入してメール(非日本語)を送信するには
どうすれば良いでしょうか?乱数発生させるスクリプト(ransu.php)はこちらの
サイト様よりお借りしたものをそのまま使ってます。
ttp://phpress.enjoy-life-style.com/archives/72 このソースで実行するとメール送信は出来るものの、本文が空っぽになってしまいます。
バージョンはphpinfoではphp5.2.9でしたがOSは表示されなかったので不明ですが
Linuxのようです。よろしくお願いします。
変数をわざわざ"$mad"みたいに囲う必要ないと思うが
707 :
nobodyさん :2009/06/03(水) 04:45:48 ID:LqzRRvqm
いま、ZendFrameWorkと普通の/www/html/以下のドキュメントルート下で動く スクラッチのアプリケーションを併用して動かしてます。(centOS) そこで、 自前のアプリケーションにアップローダを作って、ファイルの最終的な保存場所を zendのアプリ領域にしたい場合どういう処理したら良いんですか? パスの設定の仕方がわかりません。 /www/html/uploader.php のアップローダから /www/Zend/hozonImg/ フォルダに入れたいということです。 よくある /www/html/dummyImg/ に保存する場合は以下で良いはずですが、 copy($tmpFile, '/dummyImg/fixName.jpg'); documentRootの上のディレクトリに保存するのがわかりません。どうしたら?? すみませんがアドバイスお願いします。
絶対パスで書けばいいのでは? 相対パス「..」でもいいけど
>>708 ありがとうございました
普通に、/www/html/uploader.phpから../で /www/htmlにアクセスできました。
ですが、絶対パスで指定とはどうするんでしょうか?
試しに
/../を指定してみましたが上手く行かないです。
/www/Zend/hozonImg/
711 :
nobodyさん :2009/06/03(水) 11:08:48 ID:LqzRRvqm
>>710 ありがとうございます
説明がヘタな部分があったのかもしれませんが、ドキュメントルートは
/www/html/ のhtmlの部分です。
/www/html/index.html が
http://www.hoge.com/index.htmlに当たります これだと/www/Zend/hozonImg/の指定は無理ですよね?
Zendのディレクトリは /www/Zend/の位置にあります。
現状では、 www.hoge.com/uploader.phpから copy($file,"../Zend");で
/www/Zend/に保存することが出来たんですが(相対パス指定)
絶対パス指定を copy($file, "/../Zend");という形で試してみても上手く行かないんです。
エラーは以下です
[Tue Jun 02 18:01:16 2009] [error] [client 192.168.0.3] PHP Warning: copy(/../Zend/image.jpg)
[<a href='function.copy'>function. copy</a>]: failed to open stream: No such file or directory in---
712 :
nobodyさん :2009/06/03(水) 11:11:55 ID:I103Ja+X
そもそもお前の言う絶対パスってなんなんだ?
そりゃ絶対パスが /www/Zend/ なら /www/Zend/ で指定しなきゃダメだろ。 なんで /../Zend/ なんて愉快な指定になるんだ?
>>711 copy($file, "/www/Zend/hozonImg/");
でやってみなって
715 :
nobodyさん :2009/06/03(水) 11:38:39 ID:enMSGl6d
ぶっちゃけPHPでSJISの「ソ」とか「表」とかを文末に置いてもエラーがでない仕様になる予定は無いのですか? もうSJISは無理なの? 完全に終わったの? EUCやUnicodeは文字数のわりにバイト数が多いのでSJISでなんとかしてほしい。
716 :
nobodyさん :2009/06/03(水) 11:39:39 ID:I103Ja+X
EUC-JPってマルチバイトは2バイトじゃなかったっけ?
3byteもある、がそれを理由にsjisにこだわる奴も珍しいなぁ
エラーを出すのはやりかたがまずいだけなのに他人に文句を言うのはどうなんだろ
719 :
711 :2009/06/03(水) 13:48:47 ID:LqzRRvqm
>>712-714 本当に度々すみません、copy($file, "/www/Zend/hozonImg/");でやってみましたが
失敗します。
以下、www.hoge.jp/upload.phpのソース
//ユーザごとのイメージフォルダを作る
$dirName = "/www/hoge/"; //これが "../hoge/"ならエラー起きない
if(!file_exists($dirName)){
mkdir($dirName, 0700); //この行に対して、エラーが出ます
}
//一時保存用ディレクトリに置かれているファイルをリネームしてコピー&移動
if(file_exists($_POST['file_keep'])){
$newFile = mysql_insert_id().".jpg";
copy($_POST['file_keep'], $dirName.$newFile);
chmod($dirName.$newFile,755);
unlink($_POST['file_keep']);
}
出るエラーです。
PHP Warning: mkdir() [<a href='function.mkdir'>function.mkdir</a>]: No such file or directory
おかしいでしょうか?
あと、「絶対パス」って、documentRootのディレクトリを/とした場合のパスで
/index.html は www.hoge.jp/index.html と同義ですよね??
いままで酷い勘違いを延々して来たんだろか?
720 :
nobodyさん :2009/06/03(水) 13:53:01 ID:enMSGl6d
"表 ";とか "表\";とか めんどくさくてやってらんないよ。
>>719 >あと、「絶対パス」って、documentRootのディレクトリを/とした場合のパスで
違う。それはあくまでブラウザから見た絶対パス。
phpで扱うのは「サーバー上」の絶対(Full)パス。 wwwディレクトリのFullパスが違うんじゃない?
>>719 「No such file or directory」ってそんなディレクトリ無いって言われるんじゃん
>>719 documentRoot + /www/Zend が本来の絶対パスでしょ。
phpinfoとかでSCRIPT_FILENAME見てみ。
素人がZF使うんじゃねぇw 生PHPで勉強しろ。
725 :
711 :2009/06/03(水) 14:31:15 ID:???
解決〜! ほんとにありがとうございます。 >phpで扱うのは「サーバー上」の絶対(Full)パス。 >documentRoot + /www/Zend が本来の絶対パスでしょ。 知らなかったw よく知らずにいままでやってこれたなぁ、変な感心してます ほんと助かりました。すっきりした! ありがとう、みなさん
見てはいけない暗部を見た気がする
documentRootの下にwwwってどういうこっちゃ?
例えるなら、実際には /var/www/html がDocumentRootで、本来は /var/www/Zend
途中で送信しちまった。 例えるなら、実際には /var/www/html がDocumentRootで、今まで /var/www/Zend を相対で指定してたのを 絶対パスにしようとして何を思ったか /www/Zend を指定してたってことでしょ。
711はDocumentRoot [/var/www/html] の下に [/www/Zend] を作成してZFを入れていたってこと? てかZendディレクトリってZF自体のコンポーネントが入っているディレクトリ? そこに画像保存フォルダを作成? ワケワカメ
>>729 「documentRoot + /www/Zend」で解決したって言ってるんだから違うんでないの?
しらねーよ。単にヒントになったってだけで実際にその通りやって解決したかもわかんねーし。
俺は
>>719 見て
>>729 書いただけだ。
いやその下の725くらい見ろよw
だからな、
>>725 見たって引用されてるってだけで「実際にその通りにして解決したかどうか」
なんてわかんねーだろつってんの。アンカーも貼れない素人は半年ROMってろヴォケ
735 :
nobodyさん :2009/06/03(水) 15:18:25 ID:uN/QnhGZ
PHPから別サーバーにHTTPリクエストを投げたいのですが その際、レスポンスを待たずに、先のスクリプトを実行したいと思います。 レスポンスは必要なくなるべく早く先の処理を続けたいのです。 そんな関数はありますか? javascriptで自鯖にあるPHPをAjaxで呼んで、そのPHPで file_get_contents('~~); すれば、ページをすぐ返せそうなきはしますが、PHPだけで出来たら楽かなとおもいまして また、その方法だとページを閉じるタイミングによって、起動しない確立も少しはあるかなと。 お願いします。
タシロ砲か
>>735 接続するために最初のレスポンスは受け取らないといけんと思うけど、
fsockopenとかでソケット通信するのが速度的に速いんじゃない?
738 :
nobodyくん :2009/06/03(水) 15:44:21 ID:YYq96a9O
PHPで作られたオープンソースなどを読解しているのですが どこで関数が定義されているか調べながらお菓子を食べているんです。 お菓子を集中して食べるためにはどうしても'どこで'関数が定義されているか 探さない方法ってあると思うんですけど みなさん何か方法があれば教えてほしいものです。
おかしを食べると あっ ここおかしいな なるほど おかしい理由が分かったなどのメリットがある
grepでいいじゃん
741 :
nobodyくん :2009/06/03(水) 16:05:27 ID:YYq96a9O
自分・・・かなり怒っています。
grepでtagファイル作ってエディタでジャンプ それも面倒ならEclipseやNetBeansにプラグインでも入れて使えばいいと思うよ。
>>734 おめー自閉症の疑いがあるぞ
普通は引用して解決したとか知らなかったとか書いている場合はそれが解決要因だったというニュアンスになるんだよ
日本人なら行間を読もうぜ。
746 :
nobodyさん :2009/06/03(水) 16:36:05 ID:isB4yDuL
空気読まずに質問 ごめんね preg_replaceでとある文字列を抜き出して、抜き出した文字列をそのまま関数に投げたいんだけどうまくいかない 具体的に例えると $val = "_BBS_hoge_\.xxx.ne.jp"; でhogeの部分をaaaaaって関数に投げて、返ってきた結果をhogeのあった場所に代入したいんだけど、 $val = preg_replace("/_BBS_(.+?)_/", aaaaa($1), $val); ってな感じで書くと「変数名の一文字目に数字は使えないよ」って怒られてしまう $1を${1}や{$1}、'$1'にしてみたけどやっぱりうまくいかなくてどうしていいものやら……誰かわかる人いたらお願いします
747 :
734 :2009/06/03(水) 16:37:02 ID:???
>>743 もう俺が自閉症って事で良いからつまんねー話題いつまでも引っ張るなヴォケ
あと今後は気軽に自閉症の疑いとか口走るんじゃねーよヴォケ
PDT
>>746 むしろ空気を呼んだといえるw
ちなみに答えは「$$1」か「\${1}」な。
750 :
nobodyさん :2009/06/03(水) 16:57:33 ID:isB4yDuL
>>749 ありがとう
でもそれでもうまくいかない……
$$1って書くとやっぱり
Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$'
で、
\${1}だと今度は
Warning: Unexpected character in input: '\' (ASCII=92) state=1
Warning: Cannot modify header information - headers already sent by 〜
って怒られる
関係あるかどうかわからないけど文字コードはUTF-8
$val = preg_replace("/_BBS_(.+?)_/", "aaaaa($1)", $val);
752 :
nobodyさん :2009/06/03(水) 17:06:49 ID:isB4yDuL
>>751 それもやってみたけどaaaaaが実行されずに
$val = "_BBS_aaaaa(hoge)_\.xxx.ne.jp";
となってしまうんだ
preg_replace_callback perlとは違うのだよperlとは
悪ぃ、元をよく読んでなかった
それだったら
>>753
755 :
nobodyさん :2009/06/03(水) 17:16:08 ID:isB4yDuL
なるほど、それ専用の関数があったのか とりあえずやってみるわ みんなありがとう
while(true){
if(
>>749 が反省するまで) break;
echo "良く読んで回答しろ!";
}
breakでwhileを抜けるのって何か気持ち悪く感じるんだよな。
759 :
nobodyさん :2009/06/03(水) 18:57:53 ID:2UFTgxS5
ID変わったけど704です、
>>706 に教えていただいたようにLF付けてやったんですが
やはり空だったので別の方法を模索中です。
今回の質問の趣旨はrequireで得た内容はセッションに引継ぎは出来ないのでしょうか?
ソースは以下になります、requireするべきtext.txtの内容は1文字のみ数字です。
AA.php実行して、BB.phpにジャンプすると真っ白な画面で何も出ません。
<?php // AA.php
$message = '';
require('text.txt');
$message = $xxx;
session_start();
$_SESSION['s01']=$xxx;
echo $_SESSION['test01'];//ここでは表示される
echo "<br><a href=\"bb.php\" >BB.phpへ</a>";
?>
<?php //BB.php
session_start();
echo $_SESSION['s01'];//ここでは表示されない
session_unset();
?>
echo $_SESSION['test01'];//ここでは表示される echo $_SESSION['s01'];//ここでは表示されない なんでキーが違うのさ
761 :
nobodyさん :2009/06/03(水) 19:07:08 ID:2UFTgxS5
>>760 あ、すいません、タイプミスです。
実際はキーは同じものを使っています。
格納した同スクリプトでは表示されないはずだぞ
763 :
nobodyさん :2009/06/03(水) 23:25:02 ID:YYq96a9O
<?php // AA.php $message = ''; require('text.txt'); $message = $xxx; session_start(); $_SESSION['s01']=$xxx; echo $_SESSION['test01'];//ここでは表示される echo "<br><a href=\"bb.php\" >BB.phpへ</a>"; ?> requireってなんなの? ここで出力されているからSESSION使えないんじゃない?
764 :
nobodyさん :2009/06/03(水) 23:37:33 ID:YYq96a9O
aa.php <?php session_start(); $message = ''; $fp = fopen("text.txt", 'r'); $message = fgets($fp); $_SESSION['test01']=$message; echo $_SESSION['test01'];//ここでは表示される echo "<br><a href=\"bb.php\" >BB.phpへ</a>"; ?> bb.php <?php //BB.php session_start(); echo $_SESSION['test01'];//ここでは表示されない session_unset(); ?> オレならこうするけど・・・
765 :
759 :2009/06/04(木) 03:06:56 ID:DxUnkjaQ
>>763 勉強になりました。
>>764 そのように書けば
>>704 も解決できました。fopenを使う手があったんですね。
レスくれた方、ありがとうございました。
766 :
nobodyさん :2009/06/04(木) 08:09:44 ID:f7spCjC/
質問です。 Windows上のPHP5で、以下のコマンドを、execコマンドで実行しても何も起こりません。 なぜでしょうか。 "C:\Program Files\X-Finder\XF.exe" "C:\Documents and Settings\myself\My Documents\Work\20090604" XF.exeはX-Finderというファイラーで、引数の20090604というフォルダを開こうとしています。 前提として ・引数を消して、単純にXF.exeを起動するだけならできる。 ・上のコマンドは、execに渡したものと同じ変数をechoして、コンソール上でコピペしたものなので、エスケープのミスとかではない。 execではコマンドライン引数は渡せないのでしょうか? systemを使っても特に変わりません。
また、同じコマンドを、「ファイル名を指定して実行」すれば、期待通りの動作をしてくれます。
phpはどうやって実行してるの? exec呼んだあとタスクマネージャのプロセスのとこには無いか? もしhttpd経由で実行していて実行ユーザーが自分以外だったら Httpdのサービスのプロパティのログオンのところで 「デスクトップとの対話をサービスに許可」にチェック入れたらどうなる? ↑これは確認のためにやるので、恒久的にはやらんほうがいいけど
>>767 cmd.exeをPHPインストールしたフォルダにコピーして置いとけ
>>769 httpd経由でなく、コンソール上からの起動です。
PHPスクリプトと同じディレクトリに.batファイルを置いて、
php WorkDir.php
としています。
もちろん、パスは通しているので、スクリプト自体はちゃんと起動しています。
>>770 cmd.exeとはMS-DOSのことですよね?
php.exeのディレクトリにコピーしましたが、動作変わりませんでした。
セーフモードとスペース入りの引数で""でくくる必要があるかを調べたり試してみて
773 :
nobodyさん :2009/06/04(木) 17:17:32 ID:F3Dggw/W
utf16のコードから文字の実体に変換するには pack('H*', $code); で変換できるのですが、 この方法だと、 JIS X 0213の一部の漢字が変更できません。 たとえば、 2A6B2 (「月」へんに「亀」という字です) を変換しようとすると、うまくいきません どうにかして変換する方法はないでしょうか? よろしくお願いします。
774 :
nobodyさん :2009/06/04(木) 18:00:27 ID:U8QiT/yT
PHP勉強し始めて2日目です。 $this->arrJob = $masterData->getMasterData("mtb_job"); とかのソースの ->の意味がよくわかりません。 どなたかお教えいただけたら幸いです。
Oracleのクォート処理をしてくれる関数、もしくは静的メソッドないですか? もちろん信頼できるので。 実際に接続するわけではないので、MDB2で捨て接続作るのもアホらしいし・・・。
取り急ぎこんなの作ってみたけどダメなんだろうか?w 文字列と数値にしか対応していないのはとりあえず置いておくとして、 インジェクションとか起こるかな? function _ociQuote($str = '', $mode = 'text') { if ( ( $mode === (string) 'integer' or $mode === (string) 'int' ) && is_int($str) ) { return $str; } else { $str = mysql_real_escape_string($str); $str = "'".$str."'"; return $str; } }
インデントしてみる。 function _ociQuote($str = '', $mode = 'text') { if ( ( $mode === (string) 'integer' or $mode === (string) 'int' ) && is_int($str) ) { return $str; } else { $str = mysql_real_escape_string($str); $str = "'".$str."'"; return $str; } }
utf16よく知らんけど、775読んで書いてみた。 $code = '2A6B2'; $vd = hexdec($code) - 0x10000; $w1 = ($vd >> 10) | 0xD800; $w2 = ($vd & 0x3FF) | 0xDC00; echo pack('n*', $w1, $w2);
780 :
nobodyさん :2009/06/04(木) 21:36:05 ID:ygVccNwT
質問なのですが レイアウトの都合で ポストされた文字を半角で入れた場合は20文字で、全角で入れた場合は10文字に制限したい。 もし全角と半角が混合されていた場合、それに合わせて文字数を制限したいんです。 全角が1文字入った場合は半角は18文字、というようにしたいのです。 今はループで一文字づつ調べて半角全角文字数を数えているのですが もっと楽な方法ありませんか?
783 :
nobodyさん :2009/06/04(木) 22:07:17 ID:EBVfDvxX
PHPのプログラムでwebサーバと通信させたいと思っています。 (製作するプログラムはクライアント側ということになります) ある(やや大きめの)htmlファイルをダウンロードし、そのファイルの 中盤くらいに書いてあるデータを必要としているのですが、 通信相手のサーバに負担をかけないようにいくつかの条件を設定しました。 ・gzipエンコーディングに対応 ・htmlファイルのダウンロードとその解析を並列して行い、 必要となるデータが書かれている部分をダウンロードし終わったら転送を打ち切る 後者だけならfsockopenで簡単にできるのですが、 前者にも対応するとなるとちょっと簡単なやり方が思いつきませんでした。 cURL拡張を利用して製作した実験用コードを次のレスに書き込みます。
784 :
783 :2009/06/04(木) 22:15:48 ID:EBVfDvxX
$mh = curl_multi_init();
$conn=curl_init('
http://www.example.com/foo.html ');
curl_setopt($conn,CURLOPT_RETURNTRANSFER,1);
curl_setopt($conn,CURLOPT_ENCODING, 'gzip');
curl_multi_add_handle($mh,$conn);
$active = null;
$mrc = curl_multi_exec($mh,$active);
//php.benscom.comのコピペ
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $active);
$tmp = curl_multi_getcontent($conn[0]);
if (strlen($tmp)>=1)echo mb_substr(curl_multi_getcontent($conn[0]),-10)."<br>\r\n";
ob_flush();flush();
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
785 :
783 :2009/06/04(木) 22:22:44 ID:EBVfDvxX
ループ内のechoで今現在の通信内容の最後の10文字を切り出しています。 (全部出力したら画面が訳の分からないことになるので…) このコードでとりあえず目的は達成することができました。 長くなりましたがここから質問とさせて頂きます。 もっとスマートなやり方は無いものでしょうか? 言い訳のつもりではないのですが私はなにぶん初心者でして 皆さんにとって常識であることが分かっていないのです そんなめんどくさい事やらんでもこれで一発じゃん というコードがもしあるのでしたらお教えいただけると幸いです
gzopenじゃだめなの?
787 :
783 :2009/06/04(木) 22:25:15 ID:EBVfDvxX
20行目と21行目を間違えていましたので訂正します 失礼しました $tmp = curl_multi_getcontent($conn); if (strlen($tmp)>=1)echo mb_substr(curl_multi_getcontent($conn),-10)."<br>\r\n";
788 :
783 :2009/06/04(木) 22:48:51 ID:EBVfDvxX
>>786 gzopenって通信にも使えるんでしょうか?
まずそこが分かっていません
第一引数がファイル名だし、できなそうに見えるんですがどうなんでしょうか
鯖管として言わせて貰うと、HTMLを全部落とそうが途中まで落とそうが、たいした差はつかんからどうでもいい。 むしろダラダラセッションを張りっぱなしにされると面倒だ。解析とか後にしてとっとと切ってくれ。 サーバのためを思うなら ・適当にsleep()して間隔をあけてダウンロードする。curl_multi()で大量にコネクション張って並列DLとか最悪 ・複数落とすならKeep-Aliveでセッションを張る。技術的詳細はぐぐれ。これだけでサーバへの負荷はかなり落ちる
791 :
nobodyさん :2009/06/04(木) 23:46:25 ID:f7spCjC/
>>780 オレなら
<html>
<form method="post" action="">
<textarea name="body"></textarea>
<input type="submit">
</form>
</html>
<?php
$value = trim( $_POST['body'] );
echo '[' . $value . ']';
$mb_length = mb_strlen($value);
$length = strlen($value);
echo "全角";
echo ($length - $mb_length) / 2;
echo "半角";
echo $mb_length - ($length - $mb_length) / 2;
>>791 そのコード、UTF-8だと恐らくコケルよ。
793 :
nobodyさん :2009/06/05(金) 00:10:20 ID:NOP8aSiI
>>792 適当に書いたけど、どの変がまずかった?w
UTFで試して特に問題なかったんだけど
[aaああ]全角0半角6
>>793 UTF-8は、全角が3バイトとかだよ。
>793 こんなもんは常識だと思うのだが。UTF-8には2バイトより大きい文字が多数存在する。 漢字の大半は3バイトだし、特殊な一部文字は4バイト。
UTF8は全角が3バイトなんじゃなくて文字が1バイト〜5バイトのどれか
798 :
783 :2009/06/05(金) 00:37:17 ID:fALDRgQl
>>789 >むしろダラダラセッションを張りっぱなしにされると面倒だ。解析とか後にしてとっとと切ってくれ。
これはもう完全に実装後のチューニングの後考えるべき問題で
手法自体を否定する根拠にはならないと思います
>複数落とすならKeep-Aliveでセッションを張る。
今回は一つしかファイルを必要としないのでkeep-aliveは必要としないのですが
それはそれとして個人的な意見を言うとIE8もFF3もRFCなんか無視して
サーバ当たりの接続数を増やしている昨今 一度に3桁のファイルを落とす
なんて事がない限りもうkeep-aliveやHTTPパイプライニングにこだわる必要は無いと思います
>>790 ヒントください
800 :
nobodyさん :2009/06/05(金) 00:59:34 ID:NOP8aSiI
EUC-JPにしたらええの?
802 :
783 :2009/06/05(金) 02:22:20 ID:fALDRgQl
>>801 ありがとうございます
勉強になりました
ただこの手法、今一つやりたい事と噛み合わない気がするので
ちょっと調べてみます
803 :
nobodyさん :2009/06/05(金) 06:11:10 ID:iw3Rl46Q
たとえば200行くらいから成るdatファイルをfopenで開いて、 fgetsする際に、150から200行だけの情報をゲットしたいときに forで200回くりかえしif で$i >150 のときだけゲットするようにしたのですが、 この何もしない150回分を省きたいのです。 例えば、fopen( $dat , "r" , 150 , 200 )というように 指定できたら、と思います。 そういった方法はありますでしょうか、またそれに取って代わる関数など 方法があればよろしくお願いします。
SPLが使える環境ならSplFileObject->seek($line_pos)
805 :
nobodyさん :2009/06/05(金) 07:05:34 ID:iw3Rl46Q
>>804 なるほど、少しぐぐってみました
こんな便利なものがあったとは
ありがとうございました。
curlにせよスレッドにせよ、「複数コンテンツを並列に取得」する場合だけ「クライアントの処理」が早くなる。対向サーバそれぞれの負荷とは関係が無い クライアント側でも単一ソースを取得するだけなら意味が無いというか、空回りしてるwhileが無駄 zlibは圧縮ストリームの終了フラグを見ているはずなので、そのコードではコンテンツが全て取得されてから処理されているか圧縮転送されていないだろう パケットを拾ったりベンチマークして確認してみたほうがいいと思う 基本的にストリーム圧縮はチャンクごとに展開できないので平行解析は両立しない。適切なほうを選ぶのがいいのでは 関係ないが接続数が多い「から」Keepaliveが重要になる こだわれよ
cURLは各コネクションに割り込めるわけじゃないからね。 帯域をケチりたいなら2ch伝統のRange + Deflateでしょw
808 :
803 :2009/06/05(金) 12:24:44 ID:iw3Rl46Q
<?php
$inputs = new NoRewindIterator(new SplFileObject("
http://pc11.2ch.net/php/dat/1240835951.dat " , "r"));
$min = 150;
$inputs->seek( $min );
foreach($inputs as $line)
{
echo $line;
}
?>
とやってみたのですが、apache.exe終了ダイアログがでてきて
終了してしまいます。(seek以降のforeach文の部分がなくてもエラーがでます)
イメージ的には、$minまでシークさせておいて、
そこからforeachで、
という感じでできるのかなと思ったのですが・・
アドバイスよろしくおねがいいたします。
php 5.2.6 apache2.0.63
そのseekって行指定できるの? というか固定長でも無い限り普通に150回分の空回しするほうが早いと思うんだけど。
810 :
nobodyさん :2009/06/05(金) 12:43:56 ID:iw3Rl46Q
>>809 一応最高で500回くらいの空回しを考えているのですが、
そのまま空回ししておくほうがよいですかね、
今のところは空回しでやる方向でいこうと思います。
ありがとうございました。
811 :
783 :2009/06/05(金) 13:48:15 ID:fALDRgQl
検証用コードその1サーバー側 header("Content-Type: text/html"); header("Content-Encoding: gzip"); $fp=fopen('target.gz','r'); if($fp!==false){ while(!feof($fp)){ $tmp = fread($fp,1024); echo $tmp; ob_flush();flush(); sleep(1); } fclose($fp); } サーバー側においてある15kバイトのgzipファイルを1024バイトずつ読み込み、 一秒おきに標準出力に吐き出します
812 :
783 :2009/06/05(金) 13:52:02 ID:fALDRgQl
検証用コードその2 クライアント側
>>784 を若干書き換えて、ループ内で現在利用できる
デコード後の文字の数を返すようにしています
$mh = curl_multi_init();
$conn=curl_init('
http://www.example.com/foo.html ');
curl_setopt($conn,CURLOPT_RETURNTRANSFER,1);
curl_setopt($conn,CURLOPT_ENCODING, 'gzip');
curl_multi_add_handle($mh,$conn);
$active = null;
$mrc = curl_multi_exec($mh,$active);
//php.benscom.comのコピペ
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $active);
$tmp = curl_multi_getcontent($conn);
if (strlen($tmp)>=1) echo "今の文字数は".strlen($tmp)."だよ<br>";
ob_flush();flush();
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
813 :
783 :2009/06/05(金) 14:12:21 ID:fALDRgQl
結果:
今の文字数は8150だよ
今の文字数は12001だよ
今の文字数は16370だよ
今の文字数は20521だよ
今の文字数は25237だよ
今の文字数は29685だよ
今の文字数は34473だよ
今の文字数は39667だよ
今の文字数は44072だよ
今の文字数は47822だよ
今の文字数は51734だよ
今の文字数は53975だよ
今の文字数は53975だよ
今の文字数は53975だよ
となり、きっちり段階的に取得できています。
(最後の文字数が同じものがいくつか並ぶのは
$mrcがCURLM_CALL_MULTI_PERFORMでなくなるタイミングが遅れるからのようです
本来ならfeofでループ判定するべきなのでしょう)
>>806 というわけでできます
サーバー側が平文の出力を全部バッファしてから圧縮するような実装だと
無意味ですけどね
814 :
783 :2009/06/05(金) 14:13:44 ID:fALDRgQl
>>807 curl multiだと終了前にcurl_multi_getcontentで部分取得できます
2ちゃんに関していうとrangeで部分取得すると
圧縮せずに送ってくるのであんまり意味無いんですよね
これが一般的なサーバの実装なのかは分かりかねるんですが
range+無圧縮が全体+圧縮より効率的に働くのは
rangeの範囲を相当限定できるようなケースだけだと思います
余談ですがそもそも2ちゃんのdatファイルは最大保持期間5秒とされているので
(あぼーん対策?)
一般的な2ちゃんブラウザで行われてるrangeで新着分を継ぎ足していく
手法は不適切だと思うんですよねー
PHPスクリプト内でSQL文を書くとき、可読性を上げるための工夫ってしていますか? 私はこんな感じです。 $sql = "SELECT ". " article_id, ". " subject, ". " name, ". " mail, ". " url, ". " comment ". "FROM ". " articles ". "WHERE ". " article_id = 1 ". "AND ". " del_flg < 0 "; (等角フォントのエディタにはればうまくいくはず)
やり過ぎだろJK
そういう書き方するならヒアドキュメント使うかな
俺は $sql = "SELECT a, b, c, d, e FROM hoge LEFT JOIN hage USING (h_id) WHERE foo = :foo AND bar = :bar" みたいな感じでやってるよ もしくはオブジェクトのメソッドチェーンとかでもいいんでない?
ってスペース全部消えた $sql = "SELECT a, b, c, d, e FROM hoge LEFT JOIN hage USING (h_id) WHERE foo = :foo AND bar = :bar";
820 :
nobodyさん :2009/06/05(金) 16:56:40 ID:qGPfEtmY
チンポ
>>813 いや、目的に対して何の検証になってないんだが・・・
バイト数からすると転送コーディングのchunked dataサイズだな
まあ予想通りだ
>>819 俺もそんな感じだけどログが見づらくならない?
PEARのMDB2+PostgreSql8.3.7で開発してるんですが、 テーブルのID(Serial型)へのInsertがうまくいきません。 autoExecuteメソッドに、 $values = array( //'id'(Serial型なので書かない) 'clm1' => 'text1', 'clm2' => 'text2' ); こんな感じでデータをセットしていますが、何故かclm1の値が0で 挿入されてしまいidフィールドのシーケンスもインクリメントされません。 何か対処方法があるのでしょうか?
俺は . を行頭にしてる。arrayはアイテム末尾だけど $sql = "SELECT " . "* ...
>>814 783さんの例のように作りおきのgzipに対してはrangeヘッダーが使えるはずですよ
>>821 cURLがチャンクサイズみて内部バッファを決めてるとは思えないなあ。
4k決めうちと思うけど。
828 :
783 :2009/06/05(金) 19:37:51 ID:fALDRgQl
>>821 >>811 のサーバ側プログラムは15kBのgzipファイルを1kずつ吐いているので
当然終了には15秒かかります。
これを
>>812 で読み込むとgzipファイルを全部DLしてから解凍しているのであれば
最初の「今の文字数は8150だよ」が表示されるまで15秒以上かかるはずです。
しかし実際には
>>812 を表示してすぐに「今の文字数は8150だよ」と表示されます。
これはcURLがDLした部分のgzipを段階的に解凍している証拠です。
あとは実際に$tmpの中身が解凍された文字列なのか?という問題ですが
これはechoで簡単に確認できます。
検証できてないというのなら反証するコード出してください。
それがプログラマーっつうもんじゃねえのかクソが
結局 ID:fALDRgQl は何が聞きたいんだ? 変な検証とかは自分のblogとかでやって欲しいんだが
830 :
783 :2009/06/05(金) 20:43:27 ID:fALDRgQl
>>829 聞きたいのは
>>785 の、
gzipでエンコードされたファイルをダウンロードしながら並行して解析するための
スマートなコードです
(自分のコードでも目的自体は達成しているのですが糞コードなので)
gzipでエンコードされたファイルをダウンロードしながら並行して解析すること自体が
不可能という意見を頂いたので、それを否定するための検証がダラダラと長くなりました
ご迷惑をおかけしました
>>827 すまん。考えてみれば当然か
いずれにせよgzip/deflateのブロックじゃないな
よそでやらせないのがこのスレの意義だろ 全方位天然くん歓迎だよ
gzipは最後まで読み込まないと解答できないよ
>>822 ログってどこに表示される何のログじゃろ?
某StringIOみたいなオブジェクトってない?
837 :
nobodyさん :2009/06/05(金) 23:24:35 ID:u1D4YO7O
mixiに以前登録した時のメアドがわからずログインが出来なくなりました… 解約して新規で携帯を買うしかないですか??
>>837 新しく作ればいいよ 大変だけど
SNSとかならオープンソースあるっしょ
>>839 サンキュー検討するわ
つーかお前の発想の柔軟さに驚いた
なにこの偉そうな口調・・・
842 :
840 :2009/06/06(土) 00:10:59 ID:???
すまんまじすまん
843 :
783 :2009/06/06(土) 01:07:42 ID:nrE5UTqJ
検証関係はウザいでしょうからこれで最後にします(レスは歓迎します) >811のサーバ用で使っているgzipファイルを ある程度長くて著作権フリーなもの、ということで太宰治の人間失格を 圧縮した物を用います(本当は日本国憲法あたりにしたかったけど短すぎた) サイズは非圧縮時で151,900バイト、圧縮時で67,671バイトとなっています この圧縮ファイルを1秒に8192バイトずつ送信します。(9秒後に終わる計算になります) クライアント側のコードは下記の通り書き換えて、 経過時間、解凍された文字列の文字数、解凍された文字列の最後の文字列 を表示するようにしています
>>834 PHPつうかハンドラのバッファ
ソケット叩いて回るようなレベルじゃパフォーマンスでねーから
845 :
783 :2009/06/06(土) 01:13:14 ID:nrE5UTqJ
$time = time();//コードの実行開始時間
$mh = curl_multi_init();
$conn=curl_init('
http://www.example.com/foo.php ');
curl_setopt($conn,CURLOPT_RETURNTRANSFER,1);
curl_setopt($conn, CURLOPT_ENCODING, 'gzip');
curl_multi_add_handle($mh,$conn);
$active = null;
$mrc = curl_multi_exec($mh,$active);
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $active);
$tmp = curl_multi_getcontent($conn);
if (strlen($tmp)>=1){
echo '現在の経過時間は'.(time() - $time).'秒です<br>';
echo '解凍された文字数は'.strlen($tmp).'文字です<br>';
echo '解凍された文字列の最後「'.mb_substr($tmp,-64).'」<br>';
ob_flush();flush();
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
846 :
783 :2009/06/06(土) 01:17:54 ID:nrE5UTqJ
結果 現在の経過時間は0秒です 解凍された文字数は4738文字です 解凍された文字列の最後「たぎ越えるための頗る実利的な階段に過ぎないのを発見して、にわかに」 現在の経過時間は0秒です 解凍された文字数は16750文字です 解凍された文字列の最後「ました。ほとんど完全に近く人をだまして、そうして、或るひとりの全」 現在の経過時間は1秒です 解凍された文字数は16750文字です 解凍された文字列の最後「ました。ほとんど完全に近く人をだまして、そうして、或るひとりの全」 現在の経過時間は1秒です 解凍された文字数は35377文字です 解凍された文字列の最後「ナした。自分なども、ゴッホの原色版をかなりたくさん見て、タッチの磨v 現在の経過時間は2秒です 解凍された文字数は35377文字です 解凍された文字列の最後「ナした。自分なども、ゴッホの原色版をかなりたくさん見て、タッチの磨v 現在の経過時間は2秒です 解凍された文字数は53886文字です 解凍された文字列の最後「、邸宅と召使いを提供して置くのも、むだな事だとでも考えたのか、(」 現在の経過時間は3秒です 解凍された文字数は53886文字です 解凍された文字列の最後「、邸宅と召使いを提供して置くのも、むだな事だとでも考えたのか、(」 現在の経過時間は3秒です 解凍された文字数は72654文字です 解凍された文字列の最後「好都合な事になり、やがて自分が自殺幇助(ほうじょ)罪という罪名で」 現在の経過時間は4秒です 解凍された文字数は91351文字です 解凍された文字列の最後「オなけれゃいけないんですから。いいえ、でも、せっかくの御自慢のおav (略)
847 :
783 :2009/06/06(土) 01:21:00 ID:nrE5UTqJ
>>833 というわけで、gzipの最後がサーバから送られてくるのは
>>843 の通り9秒後なのですが
9秒後以前に途中まで解凍できています
>>839 ありがとう
ほとんどコンストラクタだけのクラスでごまかせそうだ
849 :
836,848 :2009/06/06(土) 02:07:31 ID:JWHRbWFk
なんか騙られたと思ったらID必須ってことを言いたかったのか? いやはや申し訳ない また何かあればよろしくお願いしますー
某rubyとか隠す必要あんの?
>>850 Rubyの専売じゃないと思うけどな。
PHPでは文字列型は可変だし、IOというinterfaceがあるわけじゃないから
個人的にはあまり必要ないと思ってしまう。。
みんな意外にOOPしてるのだろうか。
>>851 ごくたまにファイルと文字列を透過的に
扱いたいことはある
>>845 一切変わってなくてワロタ
分かっててやってるなw
>>852 データ型によってコードをわけないということだよね。
しかし組み込みのinterfaceはないのだし、
オレ仕様のやつを自前で用意するものなのか。
例外についても同じく。。
>>854 わからんけどインターフェースが必要ない動的言語だからこそアドホックにファサードつくればいいって話じゃね?
javaじゃあるまいし
もうネロ
ネットワークプログラミングって受信は甘く送信は仕様に厳しくとかいうけどさぁ、 おまえら守ってる? 俺は時間なくて手抜き実装してるううううううううう!!!!!!1 ハァースッキリした
858 :
nobodyさん :2009/06/06(土) 08:26:27 ID:C5LE110H
例えば1000人同時にログインしたらMYSQLのデータって外部に漏れるもんなんでしょうか?
じゃあ、Yahoo!とか漏れまくりで大変だな
関係ないけどちょっと聞いてくれよ ケータイSoftbankに替えてありきたりなメールアドレス登録したんだよ そしたら前にそのアドレスを使ってた人へのメールが知人やらメルマガやらどんどん入ってきて個人情報だだもれなわけ 今じゃすっかりその人に詳しくなって、おばあちゃんとのメールも無難にやりとりできるまでになったぜ オマエラもSBのメールアドレスを手放すときは気をつけなさいってこった
862 :
nobodyさん :2009/06/06(土) 18:12:17 ID:aSUnZuuU
日本語の文書を一文字ずつ配列に入れたいのですが どのようにすれば可能でしょうか?
mb_splitとかpreg_match_allとかならできそうだが
>>862 mb_strlen + mb_substr
utf8ならpreg_splitを//でできるよ
866 :
783 :2009/06/07(日) 01:49:50 ID:QFeNdjN7
>>786 ,790
gzopen('
http:www.example.com …
とやろうとしたのですが、この方法だと
Accept-Encodingヘッダを出力してくれないため
サーバーからは圧縮されないままレスポンスが返ってきます。
fopenで使えるようなコンテキストがgzopenでも使えれば
ヘッダの設定ができたんですけどね
>>801 教えていただいた
>$fp = fopen("compress.zlib://
http://some.website.org/example.gz ", "r");
これならいけそうかな、と思ったのですがコンテキストが設定できるのは
一番左のcompress.zlib://だけでhttpには設定できないようです。
という訳でこれも圧縮されないままレスポンスが帰ってきてしまいました。
gzopenにしろこれにしろ、もともとgzipに圧縮されているファイルにしか
使えないのではないかと思います
867 :
783 :2009/06/07(日) 04:18:14 ID:QFeNdjN7
>>821 chunked転送コーディングに対して誤解をされているように感じます。
chunked転送コーディングは
・http1.1でkeep-aliveを行った際に
・Content-Lengthがヘッダ発行時に未知であるため
どこがレスポンスの区切りとなるのか分からない
場合に用いるものです。
今回の例では1秒ずつsleepさせているのでいかにもそこでchunkedされそうな気がしますが、
そもそもkeep-aliveを行っていないので、サーバ側にとってchunkedする必要は全くありません
とは言っても納得できないでしょうから、
cURLをchunked転送コーディングの使えないHTTP1.0に設定しても
curl_setopt ( $conn , CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_0 );
同じ結果が得られました まんこ
868 :
nobodyさん :2009/06/07(日) 06:11:53 ID:TrHKanMz
フォームの値の渡し方について教えてください
入力>確認>登録 の流れのフォーム作ってます、そこで
事情より、確認画面では <input type="hidden" value="serialize($_POST);" />して、情報を登録画面にもちこんでます
(実際のvalueはシリアライズ値を入れた変数です)
このとき、入力画面で
<input type="text"> に「Don't let me down」を入力し、
<textarea> に 以下(Youtubeの動画の埋め込みタグ)を入れるとhiddenタグが壊れてシリアライズした中身が
画面に出てしまいます。
<object width="425" height="344"><param name="movie" value="
http://www.youtube.com/v/-O7PnvVgQvA&hl=ja&fs=1& ">
</param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always">
</param><embed src="
http://www.youtube.com/v/-O7PnvVgQvA&hl=ja&fs=1& " type="application/x-shockwave-flash"
allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
「$_POSTをserializeして引き渡し」の仕様を変更することなく、このトラブルを解決する方法あるでしょうか?
すみませんが、アドバイスお願いします
869 :
nobodyさん :2009/06/07(日) 07:49:10 ID:e7V9OxY3
$data = array("1","2","3"); //1 $fp = fopen("log.dat",r); fwrite(join("\n",$data)); fclose($fp); //2 $fp = fopen("log.dat",r); while (list($tmp, $data2) = each($data)) fwrite($fp,$data2."\n"); fclose($fp); どちらが鯖に優しいですか?
urlencode(serialize($_POST))かな? あとhiddenにname属性がないけど
>869
> fopen("log.dat",r);
'r'と文字列で指定しろ。
ついでにrは読み込み専用だから書き込めない。詳細はfopenのマニュアル嫁。
ttp://jp2.php.net/manual/ja/function.fopen.php どっちが優しいかといえば、そんな下らない部分を最適化する時間を他の処理を見直す時間に回すのが一番鯖に優しい。
ファイルでデータを保持するって時点でかなり高コストなんで、とりあえず2chで下らん質問してる時間でDBの勉強でもするのがベスト。
どうしてもどちらかというならば、fwriteの呼び出し回数が少ないほうが鯖に優しい。つまり前者。
(調べてないが、もしかしたら書き込みを一時的にメモリに保持(バッファ)して、ファイル書き込みは閉じる瞬間に行なう仕様かもしれん、だとしたらどっちでも同じ)
初心者ながら自作サイトを作成しているのですが、なぜか作成したページが 「疑わしいWebページを遮断しました」とノートンが反応するようになりました。 ソースが長いので記載はできないのですが、内容はmailtoで送信するための 名前やメアドを入力した後の「以下の内容で間違いないですか?」みたいな 画面です。値はメアド入力画面から$_POSTで受けとってます。 遮断される可能性としてはどのようなものがありますでしょうか? すいませんがアドバイスを御願いします。
すいません。テンプレみてませんでした。上記の質問は取り消します。 お騒がせしました。
874 :
nobodyさん :2009/06/07(日) 23:51:57 ID:B+22q93B
カウンターのデータがたまに吹っ飛びます。 PHPのカウンターのサンプルを公開してるサイトはいくつもありますが 作る人によってロックするタイミングが違うみたいです。 fopenした後、ロックしてからカウント増やすのか、カウント増やしてからロックするのか、 どちらが正しいのでしょうか? 自分が使ってたのは $f=file("log.log"); $f=$f[O]+1; $fp=fopen("log.log","w"); ロック fwrite($fp,$f); クローズ これって消える可能性ありますか? wで飛ばした時には既に$fに数字が入っているからちゃんと書き込めると思うのですが。
ロックは一番最初だろ
>>874 それだと、読み〜ロックの間に他の人が読んだら値がおかしくなるよ。
でも消えるかなぁ。。
ロック失敗したときどうしてる??
それ用のロックファイルかディレクトリを作るのが確実 file()はロックされてても読めるんじゃなかったっけ。 そのせいで書き込み途中のファイルを読み込んでしまい 結果飛んでしまうと。
878 :
874 :2009/06/08(月) 01:22:30 ID:f7LhTlLY
>>875 ー877
ありがとうございます。
>>877 さんので納得しました。
ロック用のファイルってどういう事ですか?
一時的にバックアップ取るという事?
>>876 ロック失敗とか全然気にしてないです。
失敗したら書き込めないようにif構文とか作った方がいいのですか?
880 :
軟式PHP :2009/06/08(月) 11:08:46 ID:???
flockをfopenした時にlockが効くと勘違いしてる人が多い。 flockはflockとの競合を防ぐだけだから、他のプロセスがflockしてても fopenのwで開けば0バイトで作成されるからそりゃ壊れる。 予めファイルを作成しておいて、r+で開いてflockかけるとか877の言うように 別ファイルでロックするのが定石だろう。
881 :
nobodyさん :2009/06/08(月) 12:22:26 ID:SxkJ/CwY
メール送信時にヘッダに含めるFromの値に、次のような文字列を入れようとするとエラーが出てしまいます。 hoge-hoge.com<info@example.com> エラーの内容は、この文字列のバリデーションに失敗、というものです。 サーバーがSMTP認証を行うようになったのに合わせて、 mb_send_mailからPEAR::Mailに変えたところ、このエラーが出るようになりました。 hoge-hoge=>ドットを含まない英字や、ドットを含むがMIMEエンコードした日本語=>ほげ-ほげ.コムでは大丈夫なので ドットに対して何らかのエスケープをすればよいと思うのですがわかりません。 mb_send_mailが中で対処してくれていたのか・・・ 処理方法があればおしえてください。
質問です。
file関数でエラー検出するとき、よくあるのは
@file("
http://hoge.com ") or die("Error!");
というように、or dieがありがちだと思うんですけど、
orのあとって、return falseとかできないんですかね?
どうもエラー出るみたいなんですけど。
関数内でエラー検出し、エラーならfalseを返すというようにするには、そうすればよいでしょうか?
自己解決。 こんな感じでいけました。 function get2ch() { $err = 0; $lines = @file("htp://2ch.net") or $err = 1; if ( $err ) { return false; } return true; } でもreturn使えないのはめんどいですね。
884 :
868 :2009/06/08(月) 16:53:33 ID:5Fnyhx60
>>870 どうもありがとうございました
思ったんですが、確認ページから登録ページへの値の渡し方って
$_SESSION['postAry'] = $_POST; ってやって、
登録ページでは
INSERT INTO $table (`var`) VALUE($_SESSION['postAry']['var']);
とかした方がいいんでしょうか?
みんなこんな感じでやってるんですか?
>>883 fileやfopenは失敗するとFALSEを返すから
$lines = @file(filename);
if (!$lines) return FALSE;//失敗すると$lines===FALSEとなる
見たいな感じでも大丈夫だよ
returnで真偽を判定するまでもなくfile()で判別すりゃいいじゃん
もともと 偽が返ってきたら右側も判定する、という or の性質を利用してるだけなんだから 真偽を返すもの以外を使うなら普通にif文でいいわな。
888 :
nobodyさん :2009/06/08(月) 18:33:42 ID:9VTPEhgM
PHPでGD使ってるんですがサーバーにeAcceleratorとか入れたら処理速度あがりますか?
ファイルオープンとsessionについて教えてください。 通常の動きはAのページで フォームに入力したデータをPOST送信⇒Bのページへジャンプ BのページでPOSTされてきたデータをsessionに保存⇒Cのページへリダイレクト Cのページでsessionに保存されたデータを元にページを表示 この動きをフォームを使わずにCのページを期待通りのページで取得したいんですが まず、fsockopenでBのページへ直接、POSTデータをfputsして file_get_contentsとかfileとかreadfileでCのページを読みに行くと sessionが違くなってしまうためか期待通りのページが取得できないんです file_get_contentsとかでsessionを引き継いだままページを取得する方法ってありますか? 教えてください偉い人
Bでレスポンスのヘッダー内にCookieが帰ってくるはずだから、それを次のCのヘッダーに入れる
891 :
889 :2009/06/08(月) 20:06:04 ID:RF6d0qBM
>>890 var_dump(apache_request_headers());
コレと
<?php
// ストリームを作成します
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
// 上で設定した HTTP ヘッダを使用してファイルをオープンします
$file = file_get_contents('
http://www.example.com/ ', false, $context);
?>
コレですか?
スパム業者乙
スパムならここで質問するのはやめていただきたい
894 :
889 :2009/06/08(月) 20:27:36 ID:RF6d0qBM
895 :
890 :2009/06/08(月) 20:30:50 ID:???
おれも教えないほうがよかったか・・
>>889 なんの処理に使うの?
ってかそのABCは自分のサイトのページではないよね?
896 :
889 :2009/06/08(月) 20:38:58 ID:RF6d0qBM
ランキングサイトへの情報更新に使います 沢山あるから一括してやりたいんですよ すぱむじゃねーよ
やっぱすぱむだったかw
ワロタ
899 :
889 :2009/06/08(月) 22:43:46 ID:RF6d0qBM
でけた
$context_options = array (
'http' => array (
'method' => 'POST',
'header'=> "Content-type: application/x-www-form-urlencoded\r\n"
. "Content-Length: " . strlen($data) . "\r\n",
'content' => $data
)
);
$context = stream_context_create($context_options);
file_get_contents("
http://example.com/ ",false,$context);
var_dump($http_response_header);
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Cookie: foo=var\r\n"
)
);
$context2 = stream_context_create($opts);
$file = file_get_contents("
http://example.com/owner.php?mode=update ",false,$context2);
var_dump($file);
>888 GDの処理速度自体は当然変わらない。 PHPスクリプトが動き始めるまでの時間は普通どおり短くなる。どの程度速くなるかは検索でもしてみれ。 ざっと考えたけど、リクエスト数が大きめならスループットは改善すると思う。 リクエストが多いわけじゃないなら、それほど高速化は期待できない。
901 :
nobodyさん :2009/06/09(火) 04:19:06 ID:k9to3OUt
902 :
nobodyさん :2009/06/09(火) 04:29:07 ID:7d8qt2bF
>>901 wgetのことは全然詳しく無いので月並みに言えば
オプション減らしたり普通のWebページが取れるか試してみたりして原因の切り分けしてみては?
904 :
nobodyさん :2009/06/09(火) 06:18:41 ID:k9to3OUt
>>903 書くのを忘れていましたがosはwindowsでしたすいません。
そして、あれからいろいろと試していると
どうやらwindowsだとwgetだけでは無理みたいでして、
タスクスケジューラーを使うとうまくいきました。
ありがとうございました!
エラーログを出力し、メールで送信してくれるクラスライブラリを探しています。 PHP内部エラーではなく、自分で指定した条件 (例えば、DBから取得したデータにバリデートをかけたらfalseだった、とか) に応じてログファイルに時間やエラー内容等を記録し、 最後にメールに通知してくれるようなのを探しています。 自分で作れないこともないとは思いますが、多くの人に利用されていて、 実用に耐えているものであれば、そちらを使ってみたいと思っています。
ライブラリ作って公開するまでもなく即行で書けないか? メール送信くらいは既存ライブラリ使ってもいいけど
ちょっとPHPとは離れてしまうけど PHPでエラーが起きたときにメールでアラートをあげるって事だよね? PHPでログ出力するんだから同時にメールも送れれば良いと考えるのはわかる。 でもそういう時に俺なら、ログ監視(というかサーバ監視)する別アプリをたてるけどな。 商用ならJP1とかopenviewとか千手とか、フリーならzabbixとか。
素朴な疑問なんだが、処理が書かれたphpをブラウザで接続したとき その処理に一回数分かかるとして、処理するのもphpだけだとすると その処理中にブラウザ閉じられても処理は最後までやってくれるのかお echoとかはなしとして
909 :
nobodyさん :2009/06/09(火) 12:42:17 ID:1S65lMji
>>908 開いてリクエスト全部送信したら処理始める
だったような気がする
閉じても処理は続く
910 :
nobodyさん :2009/06/09(火) 13:30:37 ID:OwEGJi1t
変な質問ですけど、2,3年前にEUC-JPで作ったプログラムを カスタマイズする必要性が出てきたのですが、 自分は今UTF-8で作ってて、ライブラリもすべてUTF-8です。 そこで質問ですが、古いプログラムに手を加える時 文字コードはどうした方が良いですか?新しくするべきですか? それともそのままの文字コードで作っていった方が良いですか?
911 :
nobodyさん :2009/06/09(火) 13:33:06 ID:1S65lMji
>>910 新しくってUTF-8がECU-JPより新しいという概念で文字コード決めてるのか?
912 :
nobodyさん :2009/06/09(火) 13:42:24 ID:OwEGJi1t
>>911 いえ。フリーライブラリなど、UTF-8の文字コードが多いので
それらを使う時使い勝手が良いと思ったからです。
しかし、手間がかかるし、通常はどうするべきなのか悩んでいます。
通常は動作に問題無いものに手を加えたりはしないな。 今後会社としてUTF-8で統一するから、カスタイマイズついでにUTF-8にしておこうというのも有りだとは思うけどね。
914 :
nobodyさん :2009/06/09(火) 14:08:30 ID:OwEGJi1t
そうですよね。今動いているのをあえて変更すると バグやエラーの原因になりますよね。 今のまま拡張していきます。アドバイスありがとうございました。
amazonの新刊情報を抜き出すプログラムって素人がすぐ作れるもの?
毎日1時にcronでプログラムを実行すればいいらしいまでは分かったのですが・・・
下記サイトと同じようなものを作りたいのです。
さくらのレン鯖プレミアム契約してます
ttp://booksales.seesaa.net/
>>915 どういう方法で新刊情報が入手可能かしらないけど、
・アマゾンがRSSを提供してたら簡単。「php rss」とかで検索
・アマゾンAPIを使用するとちょい厄介。「php amazon web service」等で検索
・アマゾンサイトのHTMLから抽出だと知識によっては困難。これは正規表現の知識が必要。
3番目以外は検索すればサンプルが結構出てくる。
>>916 RSS配信されてました
Parser.phpとRSS.phpとかいうスクリプトがあるのでそれ使ってやってみます
ありでした
918 :
908 :2009/06/11(木) 09:56:02 ID:KxCPVwHi
<?php
$id = 1;
if($id === 1)
{
echo "成功";
//ここに数分かかる処理 ・・[1]
}else{
echo "失敗";
//ここに数秒で終わる処理・・[2]
}
?>
というものがあって、今は[1]の処理が終わるまで、
ブラウザにはechoした結果が表示されないと思うのですが、
何よりも先にとまでは行かなくとも、
長い[1]の処理が始まる前に、ブラウザの読み込みの間を無視して
成功の文字を表示させることはできますでしょうか?
考えたのが、コマンドを使って[1]の処理を別に実行させて、
成功の文字を表示させて、というものなんですが、
もっとお手軽な方法があれば教えてください。
>>909 さんの言われる通り、ある程度ブラウザを開いてから
読み込み中であっても途中で閉じても、実行されていました。
ここまで処理ができたら、ここから下はこちらでやっておくのでブラウザ閉じようが何しようがおk
みたいな処理ができれば、と
php 5.2.6ですよろしくお願いします。
919 :
nobodyさん :2009/06/11(木) 10:44:21 ID:uw+H+MOK
10000000*3/100/12*(1+3/12/100)^(20*12)/((1+3/100/12)^(20*12)-1) という複雑な計算を行いたいのですが、 ^(20*12)の部分で数字が膨れ上がりすぎてINFという文字を返してきてしまいます。 どういう記述を行えば計算することが可能でしょうか。 ご存じのかたいらっしゃいましたらご教授いただけると幸いです。
php、多倍長とかで検索してみるといいかも
921 :
nobodyさん :2009/06/11(木) 11:48:34 ID:JdN0MC7Y
ページングするときページやアイテムの合計数はどうやって受け渡ししするのが一般的ですか? セッション(クッキー)、クエリなどありますよね。 セッションはなんか不安定そうで避けてるんですが。
>>918 flush()で文字だけ先に表示させることは可能だけど、ブラウザは閉じたら処理もとまるから、コマンド投げる方法しかないと思うよ。
>>921 渡すデータが4,5個くらいまでだったらGETクエリで良いと思うよ
あと合計件数はそのページをブックマークされると困るし変動する可能性もあるから、
一般的にはリクエスト時に毎回DBとかから合計件数を取得してから必要なデータを抜き出す。
924 :
nobodyさん :2009/06/11(木) 12:15:06 ID:JdN0MC7Y
速度を上げるために一回目のSQLクエリで総数を出して、GETクエリで渡してるんですが 毎回カウントするのが普通なのでしょうか? あまりGETクエリで渡してるサイト見かけないのでセッションが多いのかと思ったんで...
その「総数」が毎回カウントしなくても平気なモノならいいけど 別セッションから書換えられるようなモノなら毎回取得しないとまずいんじゃないの? その「総数」をDBから取得する処理は、速度が気になる位、重い処理なの?
926 :
nobodyさん :2009/06/11(木) 12:51:22 ID:JdN0MC7Y
管理者側でしか書き換えないテーブルが多いので毎回カウント必要ない部分が多いです。 たしかに掲示板とかは書き換わる可能性があるので毎回取得したほうがいいですね。 件数はせいぜい数千件までぐらいです。 問題はトラフィックが非常に多いサイトもあるので少しでもサーバーの負担を減らしたいなと思っての処理です。
>>918 phpファイルをcgiみたいに扱って
コマンドラインでバックグラウンド実行させればいい。
実行したいPHPが、test.phpなら本体のphpから
exec('php test.php &');
みたいにすると、test.phpがバックグラウンドで動く。
まぁ一般的には総件数は毎回取得。 負担が気になるならDBのキャッシュを有効にしたりとかしてもいいし。 ネックにならないような箇所をクオリティを下げてまで最適化するのは推薦はしない。 総件数をどうしてもセッションで保持するならついでにページもセッションの方がいいかもね。
929 :
nobodyさん :2009/06/11(木) 13:37:12 ID:JdN0MC7Y
>>928 ありがとう、参考にさせてもらいます。
みんなそんなには件数もちまわしてないってことですね。
930 :
nobodyさん :2009/06/11(木) 14:47:08 ID:N6MijVRo
strcmp と strncmpの違いを教えてくださいな☆
スペルが違う
932 :
nobodyさん :2009/06/11(木) 21:29:54 ID:M7ie+miU
サーバー上でメモリにデータを常駐させて、アクセスきたらそのデータを参照したいのですが どのようにしたらいいですか? 0から起動するプログラムしか扱ったことがありません。
何のデータを常駐させたいの?
934 :
nobodyさん :2009/06/11(木) 21:33:48 ID:M7ie+miU
検索のためのindexデータです。
ん?それを何故常駐させる必要が?
936 :
nobodyさん :2009/06/11(木) 21:38:08 ID:M7ie+miU
メモリに頻繁にアクセスされる部分が乗っていれば、速度が上がり負荷が減ります。
937 :
nobodyさん :2009/06/11(木) 21:42:27 ID:M7ie+miU
PHPの動作がよくわかっていないのですが、 アクセスが同時にきたらメモリは別に生成されるんですか? 共有できるメモリもありますか。 共有できるメモリを初期化せず使い続けることは出来ますか。
アクセスが来たら必要なデータは全てメモリに載るんだから一緒なのでは?
>>937 php単体だとちょっと厳しい。memcacheは要件に合わないかな?
940 :
nobodyさん :2009/06/11(木) 21:53:04 ID:M7ie+miU
トンクス
941 :
nobodyさん :2009/06/11(木) 21:57:42 ID:M7ie+miU
標準のPHPには入ってないですね。 無料か追加インストール出来ないサーバーで可能な方法はないですか? namazuは無料サーバーにも対応していますが、毎回データをロードしてるんですか。
レン鯖じゃいくらなんでも無理だよ・・・。 namazuはインデックスをファイルキャッシュしてるだけ。
というか無料鯖とか言ってる時点でメモリキャッシュとか意味無ぇだろjk
944 :
nobodyさん :2009/06/11(木) 22:31:53 ID:M7ie+miU
使用可能メモリが8M前後です。 5MのデータのPHPでロードする時間が0.3秒でした。 小細工なしで直にディスクアクセスしようと思います。 ありがとうございます。
2人アクセスしたらどうなるんだろかw
プロセスは別になるから問題はなかろう
あー、PHPで8M制限されてるだけで、サーバの制限じゃないのねw
PHPで自動投稿スクリプトを組もうと思います。 (是非知ってもらいたい有意義な情報を共有する目的です) $url="書き込みたい掲示板のフォームのあるページ"; $txt=file_get_contents($url); そこから先が分かりません。 想像ですが echo $txt.<script> var form=document.formname.texterea.value; form="書き込みたい内容"; form.onsubmit(); </script> みたいなのでいいんでしょうか?
死ね
人はそれをspamと呼ぶ・・・。ちなみに全然違う。
自動投稿ならuwscやfirefoxの動作の記録とプログラムできるやつ がある
やってみてから言えよカス つうかスレタイくらい読めよウンコ
>>948 スパム目的に使用されると予想されますのでここでは回答を得られないと思いますよ
954 :
nobodyさん :2009/06/13(土) 09:06:29 ID:nmHEpXwF
ごにょごにょ処理した後、headerで飛ばせばいい
ごにょごにょごにょ ピューーーーン あれ?。
$str = str; $patterns = array( '/pattarn1/' , '/pattarn2/' ); $replace = array( 'replace1' , 'replace2' ); echo preg_replace( $patterns , $replace , $str ); で、arrayの中のシングルクオーテーションを""にしたら 文字化けして表示されたんだが、これは普通?というか バグでもなんでもなくて ' じゃないとダメな決まり? だとしたらどうしてなんだろうか。php5とfirefoxで表示させてみました。
文字化けしたということは漢字コードでしょ? 実際のものが書かれていないとにんともかんとも
>957 id。スレタイ。 replaceとpatternの詳細。
960 :
nobodyさん :2009/06/14(日) 00:01:40 ID:RcvJrKuJ
>>958-959 すまそ
マニュアルに書いてあったやつっす
マニュアルのシングルクオーテーションをダブルクオーテーションにしたやつ
↓
<?php
$patterns = array ("/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/",
"/^\s*{(\w+)}\s*=/");
$replace = array ("\3/\4/\1\2", "$\1 =");
echo preg_replace($patterns, $replace, "{startDate} = 1999-5-27");
?>
イメージ的にはこんな感じで表示される
↓
[::]/[::]/[:][:]
array_keys() と array_values() って順序は対応してるの? str_replace(array_keys($hash), array_values($hash), $source) をやりたいんだが
962 :
961 :2009/06/14(日) 01:19:52 ID:OOFPIqTL
おっと、下げてしまった
シングルクォートとダブルクォートの違いを考えれば何となくわかる気がする
>>960 ダブルクォートではエスケープシーケンスと変数が解釈されるゆえ、
\1〜\4がエスケープシーケンスとして解釈されてしまっている。
後方参照では\の代わりに$が推奨されている。
>>961 元の配列と同じ。要素ごとに再走査しなくていいのならstrtr($source,$hash)でいい。
>>964 早速参照を\を$に代えてやってみたらちゃんとできたー
とんくす!!
>>963 違いで調べてみたら、"は特殊文字も解析される
みたいなことが描いてあった・・
なんか前に見た内容だったけど完全にわすれてた、
'と"は大体同じみたいな印象だけが先走ってしまった情けない・・
967 :
961 :2009/06/14(日) 10:45:59 ID:OOFPIqTL
968 :
nobodyさん :2009/06/15(月) 03:03:27 ID:3Vzgmpyn
教えてください imagecreatefromstring関数で壊れたファイルを開いてしまうとプログラムが途中で終了してしまうようなのですが、 何か対策することはできませんでしょうか?
壊れてないファイルでやればOK
>>969 ネットを巡回するプログラムなので、難しいです。
せめて直前に調べることはできないでしょうか?
強制終了してるならエラーでてるんじゃない? まずそれをご参考に
@つけろ
余計だめじゃないかw
975 :
nobodyさん :2009/06/15(月) 14:41:08 ID:yF6IPEz8
header(location:〜);関連での質問です。 HTMLのフォームに記入させて送信ボタンを押したらメーラが開いて bodyの中にその内容が入っているという状態にしたいのですが、 auのケータイだとURLが正しくありません、docomoだと無効なデータを受信しました(302)と表示されます。 formのactionに下のようなphpファイルを指定して、POSTデータを受けて順番を組み立てて、headerでメーラを開こうと思っています。 各変数 header("Location:mailto:" . $mailaddress . "?subject=" . $subject . "&body=" . base64_encode($body)); exit; PC(メーラはbecky)では問題ないようです。 ケータイではlocationでmailtoは使えないんでしょうか、それとも使えるけど使い方が違うんでしょうか。 フォームだけでデータを送る方法ではなく、メーラに入力済みにしておく方法で他に実現することができるのであれば教えてください。 ちなみにフォームのあるページもphpファイルもShiftJISで作っています。
Locationでmailto使ってるやつ初めて見た ってか、今のブラウザってこれで動くんだなすげぇ・・・ mailtoは普通リンクじゃね? <a href="mailto:アドレス?パラメータ">ここをクリック!</a> のように使うもんでしょ
977 :
975 :2009/06/15(月) 15:02:36 ID:???
mailtoは普通リンクで使いますよね 他のまともな方法で同様のことが実現できれば一番いいんですが思いつきません。 最悪、actionの飛び先で<a href="mailto:***@***.com">メール</a>するぐらいしか。
まともな方法の意味がわからん 何がしたいの? 何でheaderでmailtoが使いたいわけ?
979 :
975 :2009/06/15(月) 16:16:28 ID:???
>まともな方法の意味がわからん 976さんの最初の2行を読む限りこの方法は普通ではないとのことでしたので。 >何でheaderでmailtoが使いたいわけ? 使いたいわけではありません、この方法でできないので他の方法はないのでしょうか?ということです submit等のボタンを押したらメーラが開いてフォーム内の内容が本文の中に入ればそれでいいんです phpを使う理由はbase64でエンコードしたいからです、ケータイ相手なのでJavascriptは使えません。
だから <a href="mailto:***@***.com">メール</a> の使い方が普通なんだって言ってるの
981 :
975 :2009/06/15(月) 16:35:15 ID:???
その使い方が普通なのは知ってます パラメータの部分にフォームの内容を動的に書けないので困っているということです。 980さんがいう普通の方法でメール本文にフォーム内の内容を入れられるなら教えてください。 『フォーム内容』の意味が不明瞭でしたね、フォーム内容というのは<form>...</form>の中の<input type="text" name='nick'>等で取得できる内容のことです。 formのactionにmailtoを指定すれば近いことは実現できますが、base64でエンコードできないので困ります。
982 :
nobodyさん :2009/06/15(月) 16:58:18 ID:nxZJRVKz
PDOのSQLiteについて質問です --- phpinfo();でpdo_sqlite の項目を確認すると SQLite Library 3.3.17undefined になっているのですが、このバージョンの「undefined」って何者なんでしょうか
undefinedは未定義って意味 つまりSQLiteのライブラリが入ってないって事
984 :
nobodyさん :2009/06/15(月) 17:10:13 ID:nxZJRVKz
>>983 返信ありがとうございます。
ライブラリは導入済みです。
PDO Driver for SQLite 3.x enabled になっており、PDOでSQLiteへの接続・操作もできます。
接続・操作ができるのだから、undefinedが付いていようと、特に支障はないといえばないのですが、調べても情報が出てこないため気になったので。
985 :
nobodyさん :2009/06/15(月) 17:11:44 ID:nxZJRVKz
大事なことを書き忘れていました。 PHP 5.2.5 ext/php_pdo_sqlite.dllの差し替えなどは行っていません。
987 :
nobodyさん :2009/06/15(月) 17:32:56 ID:nxZJRVKz
ああ、OSも書いていなかった……すみません
WinXP SP3 , PHP5.2.5 です
>>986 ありがとうございます。
>でもpdo_sqliteの欄のLibraryがundefinedとなっていて気持ちわるかったので、もう一度php.iniファイルを開いて、php_pdo_sqlite.dllの前だけに;をつけたしてみました。
php_pdo_sqlite.dll をコメントアウトしたところ「ドライバがない」と接続の時点でPDOがエラーを吐きました
PHP 5.2.9をダウンロードしてきて、php_pdo_sqlite.dll だけを差し替えてみましたが
やはりバージョンは 3.3.7undefined でした
気にしたら負けなのかな、これは
988 :
nobodyさん :2009/06/15(月) 17:50:20 ID:nxZJRVKz
連続投稿すみません PHP5.2.5 の WindowsBinary に初期で含まれる php_pdo_sqlite.dll を有効化 → SQLite Library 3.3.17 undefined PHP5.2.9 の WindowsBinary に初期で含まれる php_pdo_sqlite.dll を有効化 → SQLite Library 3.3.7 undefined 微妙にバージョンはあがってるようですが、やっぱりundefinedが付いてきてます。 # Windowsなんかでやってるからかな とりあえず気持ち悪いですが無視しておきます。 失礼しました。
windowsXPでunix linuxサーバー用のPHP拡張を作るには、 同一環境のマシンとOSがなくても出来ますか? XP用のPHPバイナリのディレクトリをのぞいたところ、SOではなくDLLでした。
990 :
nobodyさん :2009/06/15(月) 18:55:21 ID:AYiL75q4
マッチして0を返してるからOK出ないんじゃ
>>991 &992
ありがとうございます。
暑さでてんぱってました。ちがうか・・・
>>989 各環境でコンパイルしないとだめだと思うよ
作ったことないけど
配布するならソースか、だれかにバイナリ作成を協力してもらうか
いつもお世話になってるので次スレ建ててきますね
997 :
nobodyさん :2009/06/15(月) 22:59:43 ID:gEjyaahW
埋め
埋め
このスレは1000の風になりました
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。