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

このエントリーをはてなブックマークに追加
1nobodyさん
質問者はまず>>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等)・フレームワークは各該当スレへ
2nobodyさん:2009/04/27(月) 21:40:06 ID:???
■過去ログ
【PHP】下らねぇ質問はID出して書き込みやがれ 82
http://pc11.2ch.net/test/read.cgi/php/1236532468/
【PHP】下らねぇ質問はID出して書き込みやがれ 81
http://pc11.2ch.net/test/read.cgi/php/1234958956/
【PHP】下らねぇ質問はID出して書き込みやがれ 80
http://pc11.2ch.net/test/read.cgi/php/1233479457/
【PHP】下らねぇ質問はID出して書き込みやがれ 79
http://pc11.2ch.net/test/read.cgi/php/1231850905/
【PHP】下らねぇ質問はID出して書き込みやがれ 78
http://pc11.2ch.net/test/read.cgi/php/1230026935/
【PHP】下らねぇ質問はID出して書き込みやがれ 77
http://pc11.2ch.net/test/read.cgi/php/1228667259/
【PHP】下らねぇ質問はID出して書き込みやがれ 76
http://pc11.2ch.net/test/read.cgi/php/1226517332/
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/
【PHP】下らねぇ質問はID出して書き込みやがれ 74
http://pc11.2ch.net/test/read.cgi/php/1221909788/
【PHP】下らねぇ質問はここに書き込みやがれ 73
http://pc11.2ch.net/test/read.cgi/php/1220440493/
【PHP】下らねぇ質問はここに書き込みやがれ 72
http://pc11.2ch.net/test/read.cgi/php/1218855685/
3nobodyさん:2009/04/27(月) 21:41:27 ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/
■Smartyマニュアル  http://www.smarty.net/manual/ja/

(以下英語)
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smarty       http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
4nobodyさん:2009/04/27(月) 21:43:26 ID:???
【簡易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プログラムとして実行された結果になる。
5nobodyさん:2009/04/27(月) 21:44:07 ID:???
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に保存?
 → 好きにしてください
6nobodyさん:2009/04/27(月) 21:47:13 ID:???
姉妹スレ。IDをどーしても出したくない人はこちら。

【PHP】ID出さなくても質問OKなスレ【初心者歓迎】
http://pc11.2ch.net/test/read.cgi/php/1233590976/
7nobodyさん:2009/04/27(月) 21:58:17 ID:???
8nobodyさん:2009/04/27(月) 22:11:17 ID:ngOdqG7u
$a = (ほにゃら) ? false : true;
if文だと思うんですがマニュアルでこのことについて書かれている箇所に誘導してもらえないでしょうか
9978:2009/04/27(月) 22:18:38 ID:skcV1wh3
お礼が遅くなってすいません。ありがとうございました
10nobodyさん:2009/04/27(月) 22:22:21 ID:???
11nobodyさん:2009/04/27(月) 22:36:38 ID:ngOdqG7u
>>10
ありがとうございます。
マニュアルの例のように結果によって同じ変数に別な値を入れるときは
if分よりこの書き方の方がすっきりしますね。
使い分けてみることにします。
12nobodyさん: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(); が宣言されているのでページのリロード時には必ずセッションは
初期化されるわけですが、それでもあえて最後にセッションをアンセットしなければならない理由はなんでしょうか?
13nobodyさん:2009/04/28(火) 00:12:44 ID:???
>>12
>ページの先頭には session_start(); が宣言されているので
>ページのリロード時には必ずセッションは初期化されるわけですが

まずここの解釈が間違ってる。session_startのリファレンスをよく読んでごらん。
14nobodyさん:2009/04/28(火) 10:54:03 ID:???
毎度初期化されて茶セッションの意味ないじゃん
15nobodyさん:2009/04/28(火) 14:28:24 ID:PkQXIDSH
【PHPのバージョン】php5.26  【連携ソフトウェア】Apache
入力されたマルチバイト文字列(SJIS)を、配列ではなく、予め用意した変数に、
一文字ずつ分割して格納したく思っています。例えば、
$koe = "ありがとう";
なら、
$ichi ="あ";  $ni ="り";  $san ="が";
$yon ="と";  $go ="う";  $roku ="";  $nana ="";
という風に変換する関数を設定したいのです。 具体的に、どういう処理をすればよいのでしょうか?
どうかご助力、お願いいたします。
16nobodyさん:2009/04/28(火) 14:33:27 ID:???
foreachかforでまわしながら連想配列で代入してからextract($array)
SJISはちょっとイヤンな感じだからUTFにしたら?
17nobodyさん:2009/04/28(火) 15:22:47 ID:???
utf8ならlist($ichi, ...) = preg_split("//u", ..)みたいな感じでおkと思われる
18nobodyさん:2009/04/28(火) 15:25:45 ID:???
つmb_split
19nobodyさん:2009/04/28(火) 15:28:01 ID:???
// 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;
}
2019:2009/04/28(火) 15:31:09 ID:???
ごめん間違えた
$array[$key] = mb_substr($string, $i, 1, "Shift_JIS");
これは
${$key} = mb_substr($string, $i, 1, "Shift_JIS");
にしてくれ
21nobodyさん:2009/04/28(火) 15:39:37 ID:???
まだ訂正すべき点があるようだが
2219:2009/04/28(火) 15:40:57 ID:???
うん、もう気づいたけどめんどくさいからいいや
23nobodyさん: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の方を取得してしまいます。
どういう正規表現を書けばいいのでしょうか?コードの指摘をお願いします。
2412:2009/04/28(火) 20:19:52 ID:hPvdrkqO
>>13-14
2回目以降のsession_start()はセッション変数の取り込みに奔走するんですね。
それでしたらわざわざ最後にunsetでセッション変数を破棄しなくても、
再度session_start()が実行されれば最新の$_SESSION['captcha_keystring']が
読み込まれて特に問題なく動作するような気がするんですが・・・
25nobodyさん:2009/04/28(火) 20:38:49 ID:???
>>23
条件がよくわからんがa:linkに指定されたcolor値で#000000の形式のみを取得ってこと?

/a:link[^\}]*[^\-]color\s*:\s*#(\w{6})/is
26nobodyさん:2009/04/28(火) 20:50:55 ID:???
>>24
お前は何を言ってるんだ
2723:2009/04/28(火) 22:10:29 ID:7p1vmHWL
>>25
こういう書き方するんですね。勉強になりました。ありがとうございました。
28nobodyさん:2009/04/28(火) 22:20:22 ID:???
>>24
とりあえず例題で動かしてから、自分でunset外して動作を見てごらん。
ソース眺めて悩むよりそっちの方が早いよ。
2912:2009/04/28(火) 23:31:23 ID:hPvdrkqO
>>28
↓のようにコメントアウトして実行してみました
//unset($_SESSION['captcha_keystring']);

結果は・・・、なぜか、というか予想通り何の問題もなく正常に動作しました。

やはり最後のセッション変数のunsetは不要だったんでしょうか。
あるいは古いブラウザでの互換性を重視しておまじない的に書いたんでしょうか。
30nobodyさん:2009/04/28(火) 23:51:01 ID:???
>>29
そこで「なぜか」で止まっちゃダメだ。
$_SESSION['captcha_keystring']には、どの時点でどんな値が入っていたのか追ってみよう。
3112:2009/04/29(水) 03:02:23 ID:I34g5E5l
>>30
$_SESSION['captcha_keystring']にはアンセットされる直前までは
現在表示されてるものよりひとつ前のCaptchaの数字が格納されていました。

ただアンセットしてもしなくても次にsession_start()されるときに次のCaptchaの数字が
上書きされるようです。

う〜む・・・、なぜわざわざアンセットしているんでしょう( ´・ω・)・・・
32nobodyさん:2009/04/29(水) 03:41:14 ID:???
複数回実行するときのためにアンセットしてんじゃないの?
33nobodyさん:2009/04/29(水) 05:05:58 ID:???
顔文字とか真面目に質問する気あんの?
34nobodyさん:2009/04/29(水) 05:39:51 ID:???
認証に使うライブラリなら、一度認証に使用したらさっさと廃棄しないと危険だからじゃないの。
35nobodyさん:2009/04/29(水) 05:46:01 ID:???
つーかそもそもCaptchaって何かわかってんだろうか
36nobodyさん:2009/04/29(水) 06:00:07 ID:???
>>31
>次にsession_start()されるときに次のCaptchaの数字が上書きされるようです。

違う。$_SESSION['captcha_keystring']をセットしてるのは誰かよーく調べてみなさい。
37nobodyさん:2009/04/29(水) 06:20:53 ID:???
提示されたコードばかり見てて全体のフロー、つまり裏でKeystringが発行されてるとこが見えてないんじゃないかな
unset() はキーを発行する処理に対応してるから、そっちの実装を見ないと処理の流れは分からない

新規/リロードなら再発行、ポストなら検証までスルーって実装にすれば unset() いらなくなるかな
38nobodyさん:2009/04/29(水) 06:30:11 ID:???
これ、「表示されているアルファベットを入力してください」とか、いうヤツでしょ。たぶん。
unsetしなかったら、同じキーで何度でも使えちゃうじゃん。
アカウント取り放題とか、メール出し放題とか。

キー値はサーバ側に保存しなきゃならんのだし、unsetまたはそれと同等な処理しなくて
良いパターンってないと思うけど。
39nobodyさん:2009/04/29(水) 06:43:06 ID:???
バリデーションに成功すればキーは破棄出来るわけだから同じキーが2度以上使われる可能性は排除できるよ

発行と検証の2フェーズあって、検証中でなければ前回の残りがあったとしてもそれを破棄して再発行すればいいわけ
検証中で無いことは empty($_POST["key..]) && !isset($_SESSION['key..]) で判別可能

unset() をクライアントスクリプト側に任せているのは、例えば3回まではトライ可能、といった
キーを無効にするタイミングを選択できるようにしたいとかそういうことじゃないかと予想
40nobodyさん:2009/04/29(水) 06:45:38 ID:???
うっぷす!
× empty($_POST["key..]) && !isset($_SESSION['key..])
○ empty($_POST["key..])
再発行条件が empty($_POST["key..]) && isset($_SESSION['key..]) かなw
41nobodyさん:2009/04/29(水) 06:53:22 ID:???
シンプルで不足分はユーザが書く小さなライブラリ > 柔軟なAPIがありクライアントのコード量が少なく高機能で汎用性が高く大きなライブラリ
42nobodyさん:2009/04/29(水) 07:00:53 ID:???
>>38
いや、機械と人間の識別に使うもの。
これだけだと、人間ならアカウント取り放題、メールし放題、コメントし放題だよ。
後半はその通り。
43nobodyさん:2009/04/29(水) 07:07:51 ID:???
>>42
多分、この認証ライブラリの動作を完全に勘違いしてると思う。
自分はもう面倒なんで、これ以上言わんが。
44nobodyさん:2009/04/29(水) 07:37:23 ID:sqsMUdXV
Prepared statementって扱うの難しいですね・・・
オブジェクト指向とかさっぱりだし
ぶっちゃけ mysql_real_escape_stringで十分と思ってたら
えらい目に会いますか?
45nobodyさん:2009/04/29(水) 08:09:15 ID:???
>>44
趣味のレベルなら全然問題は無い。
お仕事なら規模にも依るが、苦労はすると思う。
46nobodyさん:2009/04/29(水) 12:10:15 ID:???
formから入力された文字列をmysqlに保存するサンプルスクリプトを教えてください

DB名:sample_db
テーブル名:sample_tbl
user名:sample
pass:pass
4746:2009/04/29(水) 12:10:56 ID:5Db2GJA3
ID出し忘れましたすみません。。。
48nobodyさん:2009/04/29(水) 13:18:40 ID:???
>>46
マニュアル
49nobodyさん:2009/04/29(水) 13:24:45 ID:???
本当にくだらねぇ質問でわろた
50nobodyさん:2009/04/29(水) 13:24:55 ID:???
>>46
【PHP】Lvうpしたいので宿題ください
http://pc11.2ch.net/test/read.cgi/php/1147830986/
5146:2009/04/29(水) 13:49:34 ID:5Db2GJA3
わかりました
移動します
すいませんでした
52nobodyさん:2009/04/29(水) 16:23:34 ID:???
誘導先で48が暴れてますよ
53nobodyさん:2009/04/29(水) 16:25:55 ID:???
君が論破されてよっぽど悔しかったのね
54nobodyさん:2009/04/29(水) 16:27:51 ID:???
>>53
こっちまで荒らしに来ないでおk
向こうのスレで>>46と共食いしてろや
55nobodyさん:2009/04/29(水) 23:16:13 ID:bTfRl/qJ
headerで出力した内容を後から削除(上書きでなく)したい場合は
どうしたらいいですか?
たとえば、Content-Script-Type: text/javascriptをheaderで吐いてから、
ケータイなので取り消したい場合などです
56nobodyさん:2009/04/29(水) 23:19:19 ID:???
分からないうちから吐かない
57nobodyさん:2009/04/29(水) 23:20:27 ID:???
明らかに設計ミス
58nobodyさん:2009/04/29(水) 23:25:22 ID:???
>>55
無理
設計からみなおせ
59nobodyさん:2009/04/29(水) 23:26:01 ID:???
>>55
取り消しはできんと思うが、 headerを実行するタイミングはずらせたはず。
http://jp.php.net/manual/ja/function.ob-start.php
60nobodyさん:2009/04/29(水) 23:49:25 ID:???
できるとすればmod_headersでアンセットくらいかな
61nobodyさん:2009/04/29(水) 23:50:48 ID:sqsMUdXV
>>45
なるほど。ありがとうです
62nobodyさん:2009/04/30(木) 09:35:33 ID:???
>>55
headerで違うページに飛ばしてやり直し
63nobodyさん: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;
6463:2009/04/30(木) 11:56:30 ID:29t/7geC
$fooに確率を設定します
$rに1〜100まで範囲でランダムで数字を代入します
foreachで$fooのキーと値を回していき、値がランダムの数字$rより低いか同じなら$キーを表示します


>>63のコードは確率のアルゴリズムでありますでしょうか?
65nobodyさん:2009/04/30(木) 12:00:36 ID:???
は?
質問の意図がイミフなんだが。
66nobodyさん:2009/04/30(木) 12:09:31 ID:???
A〜Eが正しく指定された確率で出力されるかってことじゃないかと予想
67nobodyさん:2009/04/30(木) 12:30:14 ID:???
>>65
コードのまんまだと思うけど
68nobodyさん:2009/04/30(木) 12:32:14 ID:29t/7geC
>>63は有名な?確率のアルゴリズムらしいんですが
これで確率が出せるのかがわかりません
69nobodyさん:2009/04/30(木) 12:38:19 ID:???
出せるんでは?
70nobodyさん:2009/04/30(木) 12:41:55 ID:???
このスレには以下の初心者も閲覧しています

65 名前:nobodyさん[sage] 投稿日:2009/04/30(木) 12:00:36 ID:???
は?
質問の意図がイミフなんだが。
71nobodyさん:2009/04/30(木) 12:44:25 ID:???
普通に意味不明だろ
72nobodyさん:2009/04/30(木) 12:44:46 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";
}
73nobodyさん:2009/04/30(木) 12:45:25 ID:29t/7geC
$vのキーと値がAと60のとき、確率は60%ですが
$rの値が1〜60の場合ですと当たりってことですよね
Bと20のときは1〜20のときが当たりってことですよね

ってことはAの60%から判定されるってことで完全な確率のアルゴリズムではない気がするのです
74nobodyさん:2009/04/30(木) 12:46:41 ID:29t/7geC
>>71
すみません、私の説明ではこれ以上無理なのでここ読んできてください
ttp://q.hatena.ne.jp/1170658225
75nobodyさん:2009/04/30(木) 12:49:30 ID:???
>>73
Aの60%から判定されるってどういうこと?
曖昧な表現はやめてくれ
76nobodyさん:2009/04/30(木) 12:52:14 ID:29t/7geC
>>63のコードより
$fooの配列の戦闘は"A"=>60なのでforeachで回すと"A"=>60のところから回ります
77nobodyさん:2009/04/30(木) 12:52:23 ID:???
>>74
有名な確率のアルゴリズムって誰が言ってたの?
78nobodyさん:2009/04/30(木) 12:53:44 ID:???
さっきからイミフしか言わない人は出てこなくていいよ^^;
79nobodyさん:2009/04/30(木) 12:54:06 ID:???
>>76
"A"=>60のところから回って
1〜100からランダムに得た値と比較して小さかったらそれを答えとするんだから60%じゃん
80nobodyさん:2009/04/30(木) 13:00:48 ID:???
なんとなく言いたいことはわかるし、コードも正しい気がするが、>>73は本格的に意味不明。
81nobodyさん:2009/04/30(木) 13:13:35 ID:???
PHP言語以前に日本語が解読できん
82nobodyさん:2009/04/30(木) 13:15:48 ID:???
質問者は>>73にあるように「60%から検証を始める」と問題がありそうだと考えているようだが
どの目が出るかは rand(1, 100) を実行した時点で決まる
あとは検証してるだけなので、どのアルファベットから始めても確定した過去は変わらない

狐につままれたように思っているのは確率分布の上側を除いていく処理が、なぜ指定された割合と一致するのかということだと予想
これが確率論から導けるのか、それともたまたま計算結果が一致する別のアルゴリズムなのか

それが「この処理は確率のアルゴリズムであるのか?」という表現に至ったのではないかね
83nobodyさん:2009/04/30(木) 13:22:20 ID:???
どんな回答が欲しいのか知らんが、とりあえずエスパー能力を発揮して答えるならば

>>68
出せます。安心してお使いください。
84nobodyさん:2009/04/30(木) 13:22:21 ID:???
だったら「人に教えてもらったコードなんですがこのアルゴリズムでなぜ確率が計算できるのですか?」とでも聞くべき.
他人に対する配慮が足りない.
85nobodyさん:2009/04/30(木) 13:24:04 ID:???
86nobodyさん:2009/04/30(木) 13:24:45 ID:???
まあこのアルゴリズム体操でも見ておちつくといい
ttp://114.182.140.15/~user/public_html/cgi-bin/bbs18/bbsdata/20.gif
87nobodyさん:2009/04/30(木) 13:25:14 ID:2iRqPJM5
>>82
突っかかる部分もありますが、納得できましたので閉めます
88nobodyさん:2009/04/30(木) 13:25:21 ID:???
>>85
64のどこに84の内容が抑えられてるんだ?
89nobodyさん:2009/04/30(木) 13:26:16 ID:???
>>87
突っかかる部分って?
90nobodyさん:2009/04/30(木) 13:26:41 ID:???
>>84
で、そういう風に聞いたら答えられるの?
91nobodyさん:2009/04/30(木) 13:28:58 ID:???
横から煽ってるだけの奴は何だ? ヒマなのか?
92nobodyさん:2009/04/30(木) 13:30:05 ID:???
>84

人に教えてもらったコードなんですがこのアルゴリズムでなぜ確率が計算できるのですか?
93nobodyさん:2009/04/30(木) 13:30:51 ID:???
ググレ
94nobodyさん:2009/04/30(木) 13:38:39 ID:???
>>84
まだすか?wwwwwwwwww
95nobodyさん:2009/04/30(木) 13:41:45 ID:???
答えは>>82で出てるわけだが
96nobodyさん:2009/04/30(木) 13:48:02 ID:???
>>82先生と>>84先生は別人でしょwwwwwwwwwww
84出て来いよwwwwwwwwww
97nobodyさん:2009/04/30(木) 14:24:02 ID:???
>>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() に依る
その確率をアルファベットに結び付けているのがこのアルゴリズムというか処理ということになる

と俺なら考えるが、アルゴリズムがなぜ動くかなんて自分の頭で納得するしかないよ
98nobodyさん:2009/05/01(金) 15:12:10 ID:???
test
99nobodyさん:2009/05/01(金) 20:43:21 ID:???
最近人少ないですね
PHPの時代は終わりでしょうか
100nobodyさん:2009/05/01(金) 20:50:02 ID:???
昔からこんなもんだろ
たまにくだらない話題で議論はじまって100スレぐらい一気に伸びるだけ
101nobodyさん:2009/05/01(金) 21:28:59 ID:???
100スレ?
102nobodyさん:2009/05/01(金) 21:46:18 ID:???
100レスの間違いだろjk
103nobodyさん:2009/05/02(土) 08:08:46 ID:???
これからはJavaの時代
104nobodyさん:2009/05/02(土) 08:27:18 ID:???
100年に一度の不景気だとなにを根拠にだか言う人が多いから
マインドは冷え込んでるのは間違いないし、金のかかるJavaさんはもう論外になってる
105nobodyさん:2009/05/02(土) 08:29:37 ID:???
phpとperlでちまちまとした仕事を数こなしてる俺は勝ち組。

もってあと一ヶ月だな俺。
106nobodyさん:2009/05/02(土) 11:57:49 ID:???
ようやく規制解除。

>63
$rを減算する処理が直感的じゃないな。良くないアルゴリズムの部類に入る。
実際>63は意図を読み取れなかったわけだし。
性能上も、$rへの再代入が発生するので最適化がかけづらいはず。

正しく動くプログラムはサルにでも書ける。いいプログラマは人間に理解できるプログラムを書く。
107nobodyさん:2009/05/02(土) 12:07:54 ID:???
>>106
多摩動物園のサルにパソコン渡せば書けるんですね
108nobodyさん:2009/05/02(土) 12:46:46 ID:???
シェイクスピアだって書けるんだから、10行程度のスクリプトくらい書けるだろ。
109nobodyさん:2009/05/02(土) 13:13:06 ID:???
>>104
安かろう悪かろうのPHP使うぐらいならJava採用する企業のほうが多いだろ
バグバグによる経済的損失に比べたらその単価差なんてたいしたことない
110nobodyさん:2009/05/02(土) 13:23:21 ID:???
javaってtomcat入れないと使えないジャン
111nobodyさん:2009/05/02(土) 13:32:03 ID:???
大規模案件はそれなりにコストのかかる投資。不況ならばそら発注数は減るだろう。
小規模案件はどうだろうな。大規模がスケールダウンして降ってくる数とやめる数とで、あんまり総数は変わらない気がする。

あと、PHPは始まってすらいないが、Javaは終わりつつあると思う。
いや、COBOLだってまだ頑張ってるんだし、俺らの現役期間中に食いっぱぐれる事は無いと思うけどな。
112nobodyさん:2009/05/02(土) 13:53:15 ID:???
なんか最近.Netにゴリっと持ってかれることが多い。
そんなに開発しやすいのかねアレ。
113nobodyさん:2009/05/02(土) 17:10:55 ID:???
クラサバでWindows+.NETやUnix+Javaならわかるけど
Webで.Netはそんな多くはないぞ?
114nobodyさん:2009/05/02(土) 17:20:42 ID:???
俺もそう思ってたんだが、去年くらいから洒落にならんペースで食われてる。
社内システムとWEBシステムが連動し始めたってのもあるかもしれんが。
115nobodyさん:2009/05/02(土) 17:30:09 ID:???
スレ違いの話題です
こちらへどうぞ

さまざまな言語仕様について熱く語る闘技場
http://pc11.2ch.net/test/read.cgi/php/1228709756/
116nobodyさん:2009/05/02(土) 17:49:37 ID:???
言語仕様について熱く語ってるわけじゃないだろ
117nobodyさん:2009/05/02(土) 18:14:13 ID:???
じゃあこの話題は他のスレか板へどうぞ
こちらは質問スレですのね
118nobodyさん:2009/05/02(土) 18:19:37 ID:???
休みになると現れる仕切り厨(笑)
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:???
休みになると現れる仕切り厨(笑)
120nobodyさん:2009/05/02(土) 18:27:39 ID:???
よほど悔しかったらしい(笑)
121nobodyさん:2009/05/02(土) 19:37:00 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:???
よほど悔しかったらしい(笑)
122nobodyさん:2009/05/02(土) 20:01:23 ID:???
話としては興味があるんで、ネタがあるなら、雑談スレあたりで続けてほしいな。
123nobodyさん:2009/05/02(土) 20:28:58 ID:???
コピペして必死な仕切り厨(笑)
124nobodyさん:2009/05/02(土) 20:38:22 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:???
よほど悔しかったらしい(笑)
125nobodyさん:2009/05/02(土) 23:56:48 ID:???
クラス内で別のクラスのインスタンスを作成することってできますか?
126nobodyさん:2009/05/03(日) 00:42:12 ID:???
自分で確かめろ
127nobodyさん:2009/05/03(日) 01:05:47 ID:???
>>125
それができなかったら全OOP言語全滅だな
128nobodyさん:2009/05/03(日) 11:54:09 ID:???
質問者がアホ
回答者が基地外

そんなスレにふさわしくないスレタイ
129nobodyさん:2009/05/03(日) 12:18:46 ID:???
ID出してない質問に答える親切な人、じゃないのか
130nobodyさん:2009/05/03(日) 12:23:37 ID:???
このスレに生息してる人はこんな人です

・マニュアル君(出現率はドラクエのスライム並)
・親切クン
・ググレカス君
・ヤフレカス君(はぐれメタル級に出現率低い)
131nobodyさん:2009/05/03(日) 12:27:33 ID:???
お前は?
132nobodyさん:2009/05/03(日) 12:29:11 ID:???
追加

・あげ足鳥クン
・御前モナ君
・嵐君
133nobodyさん:2009/05/03(日) 12:46:55 ID:???
自分のアイデンティは無いのなw
134nobodyさん:2009/05/03(日) 13:04:52 ID:???
>>133
上げ足鳥くん乙
135nobodyさん:2009/05/03(日) 13:16:57 ID:???
マニュアルへのリンク出してくれるのが一番ありがたいけどな。
これ以外信用できるソースないんだから。
136nobodyさん:2009/05/03(日) 13:18:35 ID:???
それで片付く人はこんな所にまで聞きに来ないんだよねぇ・・・
137nobodyさん:2009/05/03(日) 13:30:00 ID:???
まぁ質問するというよりは、他人のやり取り見てると ( ・∀・)つ〃∩ ヘェーヘェーヘェーヘェーヘェーって話が結構多くて、
マニュアルへのリンクがあると確認しやすいって感じかね。
138nobodyさん:2009/05/03(日) 14:50:46 ID:???
( ・∀・)つ〃∩ ヘェーヘェーヘェーヘェーヘェーってPHPで作った
初心者の僕には優しかったです。
139nobodyさん:2009/05/03(日) 17:51:21 ID:???
Linuxでインストールしたいんだけど、Apacheのapxのパスってどこなの?
configureオプションについて詳しく載ってるサイトない?
140139:2009/05/03(日) 18:08:00 ID:???
スマン、自己解決したわ
逝ってくる
141nobodyさん:2009/05/03(日) 19:15:34 ID:XBo5LqsH
Linuxコマンドを実行したときの結果をTrueかFalseかで知りたいのですが、いい方法はありますか?
execとかsystemだと出来ないようなので。
142nobodyさん:2009/05/03(日) 19:15:55 ID:RlajZjKv
>>140
!!!
そんなバカな
143nobodyさん:2009/05/03(日) 19:49:50 ID:???
>>141
何をもってtrueかfalseとするかの定義がされてないので答えようがない
144nobodyさん:2009/05/04(月) 00:21:29 ID:???
世の中にはこんなマルチ野郎が存在する
http://qb5.2ch.net/test/read.cgi/saku/1031353962/349
145nobodyさん:2009/05/04(月) 03:38:06 ID:???
それをここにもってくる>>144もマルチ支援者野郎
146nobodyさん:2009/05/04(月) 17:00:33 ID:???
includeなどで呼び出されたときのみ実行できるようにする方法はありますか?
ファイル単体で動作しないようにしたいのですが
147146:2009/05/04(月) 17:13:32 ID:???
すいません解決しました
148146:2009/05/04(月) 17:25:08 ID:h7Ju90Gx
すいませんIDを出していませんでした。
まだ解決してないです。
149146:2009/05/04(月) 17:30:12 ID:???
>>148は偽者です。お騒がせしました。
150nobodyさん:2009/05/04(月) 17:39:05 ID:???
>>146
たぶん無理
includeされるファイルにはクラスとか単体で実行されても無意味な物を入れとくべき
151nobodyさん:2009/05/04(月) 17:50:50 ID:???
簡単にできるし
$_SERVER['SCRIPT_NAME']が自ファイル名ならNG、セットされてなければ
ウェブ経由じゃないからNG、それ以外で実行できるようにすればいいじゃん
ほかにもいっぱい方法あるだろ
152nobodyさん:2009/05/04(月) 18:10:12 ID:h7Ju90Gx
>>150
>>151
ありがとうございます。
そんな方法があったんですね。
153nobodyさん:2009/05/04(月) 18:33:46 ID:???
実行されたくないってのが、ブラウザからそのファイルを直接指定されたときに
実行されたくないって話なら、ブラウザからアクセスできないディレクトリに
置いとくのが定石じゃない。
154nobodyさん:2009/05/04(月) 18:39:10 ID:???
>>153
それは、首がもげるほど正論なんですが、
ブラウザからアクセスできないところにファイルを
置けないレン鯖とかもあったりするわけで……。
155nobodyさん:2009/05/04(月) 18:51:41 ID:???
>>154
スレチになっちゃうんで、あんまり詳しくは聞かないけど、 PHPは使えるけど、
htaccess でaccess denyできないレンタルサバとかも多いの?
156nobodyさん:2009/05/04(月) 19:12:05 ID:???
>>146
単純にincludeファイルは.incにしてそれをはじけばいいんではないの?

<Files ~ "\.inc$">
deny from all
</Files>
157nobodyさん:2009/05/04(月) 20:22:15 ID:???
>>154
さすがにそれはダウト。ログすら吐けないじゃんか
158nobodyさん:2009/05/04(月) 20:45:35 ID:???
phpが実行できる環境ならクラスか関数にしとけばコールしない限り実行されないじゃん
159nobodyさん:2009/05/04(月) 23:09:49 ID:???
>>149みたいな奴嫌いだ。
160nobodyさん:2009/05/04(月) 23:27:50 ID:???
>>159
だから皆答えてるんじゃないかなw
161146:2009/05/04(月) 23:47:21 ID:???
>>149はカスだろ
162161:2009/05/04(月) 23:48:03 ID:???
↑のミス^^;
違うスレの146なので気にしないでね
163nobodyさん:2009/05/05(火) 00:00:12 ID:???
まぎらわしいわ
164nobodyさん:2009/05/05(火) 00:17:19 ID:???
>>159
149だけどそれが狙い
165nobodyさん: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
なおパーミッション関連は間違いなく合っています。
166nobodyさん:2009/05/05(火) 03:28:27 ID:???
rename("./filebox/A.txt", "./filebox/{$hen}.txt"); か
rename("./filebox/A.txt", "./filebox/".$hen.".txt");
でやってみ
167nobodyさん:2009/05/05(火) 03:57:18 ID:GwyMTYkX
>>166
あっ、出来た。有難うございました。こういうやり方もあるんですね、勉強になりました。
168nobodyさん:2009/05/05(火) 05:08:31 ID:9NxYpwlu
変数をクォートの中にそのまま書き込むと文字として誤認されること多いから俺は常に括弧でくくってるぞ
169nobodyさん:2009/05/05(火) 05:10:05 ID:???
文字列連結でいいだろ
170nobodyさん:2009/05/05(火) 05:25:42 ID:???
内部が変数の時は {} が出力されないってのは、仕様としてどうかと思うことは多い。
明示的な指定は${var_name} の形式だけにして欲しかった。
171nobodyさん:2009/05/05(火) 06:15:47 ID:???
シングルクオート使えばいいのでは?
172nobodyさん:2009/05/05(火) 06:54:47 ID:???
>>167
解決したからもう興味ないだろうけど、ざっと見とくと良いよ。
http://jp.php.net/manual/ja/language.types.string.php#language.types.string.parsing
173nobodyさん:2009/05/05(火) 12:13:25 ID:???
>>165
$path = "./filebox/";
$bfile = "A.txt";
$rfile = "B.txt";
rename("$path.$bfile", "$path.$rfile");
174nobodyさん:2009/05/05(火) 12:16:27 ID:nXqml1BJ
画像の数字を読み取ることって出来ますか?
175nobodyさん:2009/05/05(火) 12:17:47 ID:???
””の中を勝手に展開したりするからわかりにくくなる。
>>173みたいなミスもしちゃうしな。
176nobodyさん:2009/05/05(火) 12:19:10 ID:???
$path = "./filebox/";
$bfile = "A.txt";
$rfile = "B.txt";
rename($path.$bfile, $path.$rfile);
177nobodyさん:2009/05/05(火) 19:59:33 ID:???
>>174
白黒のフォント文字サイズ固定なら割となんとかなる
178nobodyさん:2009/05/06(水) 00:27:30 ID:???
>>177
俺は無理だと思うんだけど
179nobodyさん:2009/05/06(水) 01:02:20 ID:???
2値に変換できればあとはmatchさせればいいだけだからな。
スキャンしたものとかは無理だがw
180nobodyさん:2009/05/06(水) 01:42:14 ID:???
ま、画像もデータだからね。バイナリの
181nobodyさん:2009/05/06(水) 07:08:02 ID:???
>>174
こういうOCRライブラリに投げて読ませれてばいいんでないの?
ttp://code.google.com/p/ocropus/

独自ライブラリ使ってるだろうけどキャプチャもとっくに破られてるらしいからね
182nobodyさん:2009/05/06(水) 07:27:33 ID:???
てか、キャプチャ破り以外使い道なさそうだから、こういう質問の相手はすべきじゃないとも思う。
183nobodyさん:2009/05/06(水) 07:34:32 ID:???
じゃ終わり
184nobodyさん:2009/05/06(水) 12:32:17 ID:???
185nobodyさん:2009/05/06(水) 12:33:01 ID:???
>>182
キャプチャ破りしか思いつかないのは自分はクラッカー気取りだからじゃないの?wwwwwwwwwwwwwwwwwwwwwwwww
186nobodyさん:2009/05/06(水) 12:55:35 ID:???
>>179
2値?
無理だろ
187nobodyさん:2009/05/06(水) 17:11:19 ID:???
>>185
うっさい
188nobodyさん:2009/05/06(水) 17:21:55 ID:???
PHP暦1週間です。
peclのzip関数をレンタル鯖で使いたいのですが、初期状態では導入されていないみたいです。
linuxも詳しくないのですが、とりあえず「/usr/local/bin/pecl」は発見しまた。
あとはzip.soを発見してextentions dirに設定すれば動くかなと思ったんですが、zip.soが見つかりませんでした。
これ、何とかして導入する方法はありませんでしょうか?
ちなみにphp上で無理やり「pecl install zip」して見ましたがやっぱりだめでした。

もしくは、PHP5 MySQL peclのZIP拡張の入ってるレンタル鯖(年1万以下)ってあります?
189188:2009/05/06(水) 17:22:50 ID:hSw36pLb
あ、sageってた・・・・
190nobodyさん:2009/05/06(水) 17:44:26 ID:???
えと、スレ違うと思うんですけど。
191nobodyさん:2009/05/06(水) 19:07:01 ID:???
>>188
それが何とかできたら怖いわw
レン鯖と同じ環境のサーバー立ててコンパイルしたso持っていくって
手段は無くも無いが、怒られてアカ剥奪されても知らん。

あとレン鯖探したいなら板違い。
192nobodyさん:2009/05/06(水) 19:13:40 ID:???
pearのFile_Archiveじゃだめなん?
他の人も書いてるとおり、レンタルサーバ探しは、ここで聞いても無駄だけどさ。
193nobodyさん:2009/05/06(水) 19:19:31 ID:???
つーか標準装備のじゃダメなん?
194nobodyさん:2009/05/06(水) 19:25:00 ID:???
>>193
そんなんあったっけ?
どれ?
http://jp.php.net/manual/ja/refs.compression.php
195nobodyさん:2009/05/07(木) 03:15:22 ID:re6YnlTy
【OS名】WindowsXP
【PHPのバージョン】PHP Version 5.2.6
【連携ソフトウェア】mysql5
【質問内容】
ttp://php.dori-mu.net/search.html
ここを見て勉強してるんですが実行すると「Error: invalid method」とブラウザに
表示され、先に進めません。apacheのログを見ると
Undefined variable: REQUEST_METHOD in *** search.php on line 18
との事でぐぐってみたらphp.iniのエラーレベルを変更する事で解決できる場合も
あるようですが、私の場合はやはり同じでした。ソースを見てわかる方がいたら
修正箇所などを教えて頂けませんか?
ソースはttp://php.dori-mu.net/source/source.php?src=search/search.phps
のものを丸写ししています。
Mysql絡みですが、問題はphpだと重いましたのでここで質問しました。
196nobodyさん:2009/05/07(木) 03:25:00 ID:???
$_SERVER['REQUEST_METHOD']

あとその下のフォームの値も全部$_POSTで
197nobodyさん:2009/05/07(木) 04:00:17 ID:re6YnlTy
>>196
出来ました!感謝。
まだ勉強を始めて10日ほどですがぼちぼちがんばります。
198nobodyさん:2009/05/07(木) 15:01:14 ID:???
"が""でエスケープされている文字列(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);

これぐらいだったら、正規表現あきらめて、コリコリ書いた方がいいのかなぁ。
199nobodyさん:2009/05/07(木) 15:02:34 ID:PzaIUqbE
すいません、さげちゃいました。
よろしくお願いします。
200198:2009/05/07(木) 15:04:46 ID:???
すいません、訂正。

$str = '"'.str_repeat("あいうえお", 10).'"';

ぐらいなら動きます。これを

$str = '"'.str_repeat("あいうえお", 100).'"';

とかにすると落ちます。
重ね重ねすいません。
201nobodyさん:2009/05/07(木) 16:17:39 ID:PzaIUqbE
/(([^\"]*(\"\")?)*)\"/ にしたら動くようになったみたいなんで、しばらくこれで様子見ます。
お騒がせしました。
202みみずん削除:2011/03/10 07:01:00 ID:MiMIZUNCjA
このレスはみみずんによって削除されました。
削除日時:2011/03/10 07:01:00
http://mimizun.com/delete.html
203nobodyさん:2009/05/07(木) 23:00:22 ID:ymUWK2Mh
ローカルサーバにアクセスするとアクセス解析には127.0.0.1ってログが残ります。
入っているプロバイダ経由でローカルサーバにアクセスすることは可能でしょうか?
ローカルサーバですけどアクセス解析にはプロバイダのipでログつけたいと思います
どなたかよろしくお願いします
204nobodyさん:2009/05/08(金) 00:06:37 ID:???
グローバルIP指定すればいいのでは?
205nobodyさん:2009/05/08(金) 04:27:45 ID:8b2MJ03K
phpの動作上からは
/usr/local/lib/php/
がインクルードパスに設定されているようなのですが、
php.iniを見ても、このディレクトリをインクルードパスに設定している箇所がありません。
include_pathの設定は;でコメントアウトされています。
どこで設定されているのでしょうか?
206nobodyさん:2009/05/08(金) 10:09:23 ID:???
>>205
とりあえず本当にパスが通ってるのか phpinfo() で確認したら?
include_path はPHP_INI_ALLだから、アチコチで設定できちゃうんだけどさ。
207nobodyさん:2009/05/08(金) 13:57:36 ID:PQMR/gr5
Array(
[300] => "ほげ"
[20] => "ほげ"
[74] => "ほげ"
)
みたいな連想配列を、連想インデックスを保持しつつキーでソートするにはどうしたらいいの?
こんな感じで。
Array(
[20] => "ほげ"
[74] => "ほげ"
[300] => "ほげ"
)
uasortのユーザー比較比較関数は配列の値しか渡されないみたいで、キーで比較は出来ないみたいだし。
208nobodyさん:2009/05/08(金) 14:05:56 ID:???
>>207
連想インデックスでソートすればおk
209nobodyさん:2009/05/08(金) 14:06:37 ID:???
最近のゆとりは質問するときの態度が悪すぎ
210nobodyさん:2009/05/08(金) 14:22:40 ID:PQMR/gr5
>>208
ありがとう。
211nobodyさん:2009/05/08(金) 15:04:32 ID:???
public function addOption(commandOption $option)
{
////////////////////
}
上記のaddOptionメソッドにcommandOption $optionという引数を
与えていますが、どういう意味でしょうか。
212nobodyさん:2009/05/08(金) 15:07:30 ID:???
どこから拾ってきたんだよ
前後分からないと言えないぞ
213211:2009/05/08(金) 15:07:33 ID:???
自己解決しましたよっと
スレ汚しサーセン
214nobodyさん:2009/05/08(金) 15:08:26 ID:???
解決したなら解決方法かいてけよ・・・
最近マナーひどいなほんと
215211:2009/05/08(金) 15:10:53 ID:???
>>214
わからないから教えてほしいって書けばいいのに
216211:2009/05/08(金) 15:14:54 ID:???

213は偽者

class aのメソッドにそんな記述があったんだけど、
これはキャストしているんですか?
217nobodyさん:2009/05/08(金) 15:15:33 ID:???
ID出てないから全員偽者か
218nobodyさん:2009/05/08(金) 15:21:48 ID:wSZsV7Ai
>>213,>>215,>>216
ID出せばいいんだろ氏ねよ無知の分際で
答えられないなら黙ってロムってろよ
気分が胸糞悪いな
219nobodyさん:2009/05/08(金) 15:23:10 ID:???
はいごくろう
ではさようなら
220nobodyさん:2009/05/08(金) 16:24:16 ID:???
IDうっかり出し忘れただけで、偽物登場するのはよろしくないと思う。
荒らしに相当する。一体なんなの?
221nobodyさん:2009/05/08(金) 16:25:19 ID:???
お前2chで何言ってんの?
222nobodyさん:2009/05/08(金) 16:49:35 ID:???
なんだおまいら、結局知らないのかよ。

http://www.php.net/manual/ja/language.oop5.interfaces.php
223nobodyさん:2009/05/08(金) 17:06:09 ID:???
>>211
質問がイマイチ曖昧だけど、書式について聞いてるなら、PHPでも型チェックが導入されてたはず。
ただ、マニュアルにはどこに書いてあるのか見つけられんかったが。
224nobodyさん:2009/05/08(金) 18:58:52 ID:???
>>211
$optionがcommandOptionのインスタンスでなきゃいけんということ。

おまいらグダ巻いてないで教えてやれよ
225nobodyさん:2009/05/08(金) 19:33:23 ID:???
>>1も欲読めない人間の質問はスルーでおk
226nobodyさん:2009/05/08(金) 20:03:01 ID:tCM7CGYm
fc2ブログの、全部の記事(300件以上)分をRSSで取得したいのですが、
どうすればいいでしょうか
http://qqy.blog102.fc2.com/具体的にはこのサイトなのですが
どうぞよろしくお願いします<m(__)m>
227nobodyさん:2009/05/08(金) 20:12:28 ID:???
こっちの方だろ
http://www.php.net/manual/ja/language.oop5.typehinting.php

↓intやstringがない理由
228nobodyさん: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

処理結果として、三つの変数に共通の「東京都港区」だけ抽出したいのですが、
どのような考え方で実装すれば良いでしょうか?

数学でいう最小公倍数みたいな?考え方です。
宜しくお願いします。
229nobodyさん:2009/05/08(金) 21:14:53 ID:???
>>228
最長共通文字列を求めたいということならアルゴリズムの問題だから、
LCS(Longest Common Subsequence)問題とかで検索してみたらいいよ。
3つ以上だとどうやるのか知らないけど。
230nobodyさん:2009/05/08(金) 21:17:05 ID:???
どっちかと言うと、最大公約数じゃないかな^^
231nobodyさん:2009/05/08(金) 21:18:56 ID:???
確かに先頭からって前提がないとすると、かなり難しい気がするな。
232226:2009/05/08(金) 22:28:42 ID:???
>>226 誰かよろしくお願いします<m(__)m>
233nobodyさん:2009/05/08(金) 23:18:02 ID:???
先頭からの一致でいいなら、単純にループをぶん回していけばいい。
(1)と(2)と(3)の共通文字列は、「(1)と(2)の共通文字列」と「(3)」との共通文字列に等しいはずだ。
4つ以上でも同じ。
(1)と(2)の共通文字列を求め、それと(3)の共通文字列を求め、それと(4)の共通文字列を求め…と繰り返せばいい。
234nobodyさん:2009/05/08(金) 23:21:44 ID:???
235nobodyさん:2009/05/08(金) 23:34:43 ID:gndL9SHG
早速アドバイス頂きましてどうもありがとうございました。

アルゴリズムの問題ですか....LCS問題・・・
調べて見たのですが、C系で実装されているサンプルはありましたが、
phpでは見つかりませんでした。理解しながら、phpに実装するのは結構大変そうですね。

先頭からではなく、文中からの一致も必要なのですが、
思った以上に難しくて冷や汗です。

追記しますと、10000件以上対象がありまして、
先ほどの例ですと、東京都港区麻布なら2件一致、東京都港区なら3件一致、
と最小+最小から2番目、3番目・・・とできればやりたいのですが、
もっと難しいですよね。う〜ん、困りました。
236nobodyさん:2009/05/09(土) 00:05:40 ID:???
>>235
いっそ部分文字列を全パターン切り出して、それをキー値にした配列で個数数えたら?
注意しないと東京都西東京市とかは「東京」がダブルカウントされてしまうが。
237nobodyさん:2009/05/09(土) 00:13:09 ID:???
もう形態素解析の世界だな
238nobodyさん:2009/05/09(土) 00:41:11 ID:???
Cの実装をPHPに移植する程度で腰が引けてるようなレベルではどうにもならないと思う。
完全にアルゴリズムの世界なので、C、C++、Javaでしかサンプルは存在しないと考えたほうがいい。

つうか、その例だと先頭からの一致しか見てない気がするのだが。
「大阪府大阪市港区」「愛知県名古屋市港区」「東京都港区」の共通文字列は?「港区」検出したいのか?
239nobodyさん:2009/05/09(土) 01:01:54 ID:???
アルゴリズムじゃなくて、アルゴニズムだろw
240nobodyさん:2009/05/09(土) 03:11:42 ID:6UxgjX3A
includeされたphpスクリプトの中から、
自分をincludeしたファイルのパスを知りたいのですが、
どうすれば分かるでしょうか?
241nobodyさん:2009/05/09(土) 05:49:41 ID:???
getcwdでとれないか?
includeしても実行ディレクトリは親だとおもうけど
242nobodyさん:2009/05/09(土) 07:55:44 ID:???
>>235
標準関数でありますよ
確か過去スレ83番で俺がそういう質問に答え書いた覚えあります
243nobodyさん:2009/05/09(土) 08:09:07 ID:???
じゃあ教えろやハゲ
244nobodyさん:2009/05/09(土) 09:57:54 ID:???
親切に過去スレにあるって書いてあるのに読めない池沼
245nobodyさん:2009/05/09(土) 12:56:31 ID:???
>>240
試してないけど
inc.php
<?php
$filepath = __FILE__;

hoge.php
<?php
incude_once('./fuga/inc.php');
echo $filepath

hoge.phpへのパスが返ってきちゃうか不安だけど。
246nobodyさん:2009/05/09(土) 12:58:24 ID:???
>>235
過去スレ84から「比較」で検索すると答えがあります
247nobodyさん:2009/05/09(土) 12:59:05 ID:???
84じゃなくて83だったな間違え
248nobodyさん:2009/05/09(土) 19:24:22 ID:???
>>240
debug_backtrace()
249nobodyさん: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は他の変換方法があるのでしょうか?
250nobodyさん:2009/05/09(土) 21:41:49 ID:???
単純な勘違いと思うよ、引数の順番

string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )
251nobodyさん:2009/05/09(土) 22:20:39 ID:???
>>250
その通りでしたーっ!
いや、なんかC出身なせいか関数(src,dst)っていう先入観が…
言い訳ですよねリファレンスくらいよめよksgですよね
252nobodyさん:2009/05/09(土) 22:49:13 ID:???
>>249
仕事のやつ?
253nobodyさん:2009/05/09(土) 23:20:03 ID:xpzC4uCd
>>252
仕事?よくわからないですけどただの趣味です。
PHP始めたばっかりでIRCbotでも作ってみようかなと
254nobodyさん:2009/05/10(日) 01:06:03 ID:???
$fromが省略可能だという知識があれば推測できるけどな。
引数順序カオスだよなぁ、PHP。
多量の引数を取る関数が多いってのもあるが。
255nobodyさん:2009/05/10(日) 08:31:15 ID:???
仕方ないからエクリプス使ってるよ
いまだにエディタしょぼいが
256nobodyさん:2009/05/10(日) 14:52:43 ID:???
mb系はjcodeを模した外部の機能を組み込んだ関数だからしょうがないんじゃん。
PHP6ではユニコードになるらしいから新しいマルチバイト命令でるかもね。
257nobodyさん: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という関数が無いか気にする必要があるし。
25828: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');

259nobodyさん:2009/05/11(月) 01:48:59 ID:???
PHP 5.3 からは下のように書けるよ。
usort($arr, function($a, $b){ return $a - $b; });
260nobodyさん:2009/05/11(月) 02:03:26 ID:???
ありがとう!
php5.3まで待ちます…
261nobodyさん:2009/05/11(月) 03:00:53 ID:???
なぜ引き算・・・
262nobodyさん: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)

どなたか解決策ご存じでしょうか?
263nobodyさん:2009/05/11(月) 11:00:53 ID:thXXZ3vj
PHPの最新バージョンがリリースされたとき、
変更点を確認したいのですが、日本語で記述しているページはないでしょうか?
http://www.php.gr.jp/も日本語ではなく、変更点の記述場所へのリンク(リンク先は英語)です。
264nobodyさん:2009/05/11(月) 11:08:58 ID:???
その手の変更履歴は翻訳するとニュアンスが変わったりするので原文見たほうがいい。
ほとんど箇条書きだし読めるべ?
265nobodyさん:2009/05/11(月) 16:32:05 ID:???
>>259
できるよ。
以上。
はい、次。
266nobodyさん:2009/05/11(月) 17:48:55 ID:???
質問です。

PHPは今や完全に時代遅れなのに、そこそこにこのスレが伸びるのはなぜですか?
267nobodyさん:2009/05/11(月) 17:52:15 ID:???
スレタイも読めないのかカス
268nobodyさん:2009/05/11(月) 17:54:05 ID:???
>>266
時代の変化に追随できない人はいつの時代にも存在するものですよ。
269nobodyさん:2009/05/11(月) 17:55:37 ID:???
>>267
正解) 実は下らなくないからsageた
とか
270nobodyさん:2009/05/11(月) 18:01:35 ID:???
>>266
全盛期に比べたらこのくだスレもかなり過疎ってはいるけどね
お利巧な人は見切りを付け始めてるのではないかと
271nobodyさん:2009/05/11(月) 18:04:06 ID:???
>>264
英文を「ちょっと読める」程度の奴に限ってこういうことを言うんだよなw
272nobodyさん:2009/05/11(月) 18:06:42 ID:???
高卒以上なら普通読めるだろ
お前は何を言ってるんだ
273nobodyさん:2009/05/11(月) 18:09:14 ID:???
学歴コンプレックスのあるやつほど中卒だ、高卒だと騒ぐんだよね
学歴ネタは結構スレ伸びるよw
274nobodyさん:2009/05/11(月) 18:14:58 ID:???
小卒代ゼミ、中卒代ゼミ、高卒無〜職ニート代ゼミっ

古いCMを思い出してしまった
275nobodyさん:2009/05/11(月) 18:24:06 ID:???
読める読めないじゃなくて読もうともしないクズなんだから
英語で読めと言ってもしょうがない
276nobodyさん:2009/05/11(月) 18:26:46 ID:???
いやここで個人的な反省をされても困るんだけど...

お前がクズなのはわかったからこれからは読む努力
をすればいいんじゃない>>275
277nobodyさん:2009/05/11(月) 18:43:48 ID:???
なんだ、努力するのがいやなのか。
でも努力するまでもないよ、読むのは。
278nobodyさん:2009/05/11(月) 18:44:34 ID:???
>>273
中卒乙
279nobodyさん:2009/05/11(月) 18:44:35 ID:???
>>276>>271か、とことんクズなんだな、おまえ
280nobodyさん:2009/05/11(月) 18:48:40 ID:???
>>273
確かに伸びてきたなwww
281nobodyさん:2009/05/11(月) 18:49:34 ID:???
282nobodyさん:2009/05/11(月) 18:50:01 ID:???
URL怪しいのでふまないからソースはれ
あとID
283267:2009/05/11(月) 18:50:36 ID:???
>>281
スレタイも読めないのかカス
284nobodyさん:2009/05/11(月) 18:57:03 ID:???
ID強制厨はID晒せと言うわりにろくな回答をしないのが特徴
285281: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
286nobodyさん:2009/05/11(月) 19:34:14 ID:???
>>285
そのまんまでいいだろ
pnormaldistは正規分布表から持ってくるなり別途関数用意する
287281:2009/05/11(月) 19:44:54 ID:xMuv+rlf
>>286
丁重なご回答ありがとうございます。
無事解決いたしました。
288nobodyさん:2009/05/12(火) 01:30:22 ID:???
169 :動け動けウゴウゴ2ちゃんねる [sage] :2009/05/12(火) 01:29:42 ID:N8ihSyJ90 (2/2) [PC]

だいじょうぶ、だいじょうぶ。
あいつら、プログラマ板にいくと
すぐにおとなしくなるから。

「自分よりレベルの高いやつがいないな?」

と思うと、とたんに暴れだす。

「自分よりレベルの高いやつがいるな?」
と思うと、とたんにおとなしくなる。

それがwebプログラマ。

だからレベルの高い集団に放り込んだほうが良い。
289nobodyさん:2009/05/12(火) 09:35:55 ID:V/2qAUy/
CLIでもsapiでも使えるスクリプトを書きたいのですが
シバンを書くと、sapiで実行した時にそれが文字として表示されてしまいます
こういう場合シバンなしにするしかないですか?
290nobodyさん:2009/05/12(火) 12:37:04 ID:fpNhR8wC
ServerがMacの時は、何もエラーが出なかったのに、Linuxにしたら、session_startでエラーがでるようになった。
Session_startの前に、何かが宣言されているとのこと。
何が原因だかわかる方いらっしゃればお教え願います
291nobodyさん:2009/05/12(火) 12:40:15 ID:lKlDjO5N
> Session_startの前に、何かが宣言されているとのこと。

以下を確認しる
・session_start()の前にrequire_onceなどが入っていないか。そのrequire_onceで何か出力していないか
・headerなど出力していないか←これもアウトだったよな、今確認できね
・文字コードがUTF-8でBOMがついていないか(BOMついてると最初に2〜3バイトくらい出力してるはず)
292軟式PHP ◆YgAn9/gytI :2009/05/12(火) 15:18:28 ID:???
さすがにPHPは飽きてきたな。
293nobodyさん:2009/05/12(火) 17:54:53 ID:/A/mUsdc
PHPでのwebデータ取得のやり方がわかりません
以前perlを使ってた時はLWP::Simpleで2行くらいでできたのですが
どなたかご教授願います
294nobodyさん:2009/05/12(火) 17:55:25 ID:lKlDjO5N
意味がわからん
$_POSTと$_GETのこと?
295nobodyさん:2009/05/12(火) 18:02:21 ID:???
$var = file_get_contents('url');
1行でできるよ
296nobodyさん:2009/05/12(火) 18:04:56 ID:???
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も#以降が消えています。

解決方法があれば教えてください。
298nobodyさん:2009/05/12(火) 23:00:41 ID:???
そもそもそんな仕様ないだろ
299297:2009/05/12(火) 23:11:23 ID:Ttdyz3C0
>>298
ページ内リンクって仕様外のことだったんですか?
知りませんでした。ありがとございます。

つまり、飛ばないIEの挙動が正しいってことだったのか……。
300nobodyさん:2009/05/12(火) 23:14:45 ID:Og9YKcWq
一回しかアクセスできないページがあるとして、
レスポンスヘッダとレスポンスボディの両方を取得したいんですがどうすればいいんですかね?

get_headers()だとヘッダしか取得できず、
ile_get_contents()だとボディしか取得できない
両方を一度のリクエストで取得したいのです
301nobodyさん:2009/05/12(火) 23:20:04 ID:???
fsockopen()でできそうだが
302nobodyさん:2009/05/12(火) 23:29:48 ID:???
>>297
試した感じheaderでアンカー付きで飛ばした時、IE8でも正常に動作するっぽいけどなぁ。

>>300
使ったこと無いけどcurlとかどうなの?
303nobodyさん: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回程度です。

この違いは、どこから来るのでしょうか?
改善する方法はありますか?原因が不明で困っています。
宜しくお願いします。
304nobodyさん:2009/05/12(火) 23:53:15 ID:???
>303
webサーバーで定期的に何らかのプログラムが動いていて、その際に一時的に高負荷になっているんだろう。
例えばアクセスログの集計プログラムとかな。

つうか、実行時間計測なら素直にxdebugでプロファイル取れ。
305nobodyさん:2009/05/13(水) 04:40:45 ID:???
>>297
アンカーはブラウザが解釈する物なのでjavascriptのようにクライアントサイドでないと本来意味ないらしい
306nobodyさん:2009/05/13(水) 04:48:46 ID:???
>>297
こういうのもあるみたい →nameは廃止されるからidで
ttp://q.hatena.ne.jp/1226298159
307nobodyさん:2009/05/13(水) 11:18:33 ID:43iecwOZ
【OS名】windowsXP
【PHPのバージョン】php5.26
【質問内容】
whois情報から、登録者名とドメイン更新期限日のみを取り出したいのですが
各問い合わせサーバーから返ってくるwhois情報から、文字列検索する
しか方法はないのでしょうか。
非常に困っています。。。教えてください。
308nobodyさん:2009/05/13(水) 16:20:33 ID:???
>>307
RFC読んでないからわからんけど、たぶんWhoisサーバのリプライに決まった形式はない。
更新期限も Expires On: だったり、Expire-Date: だったりマチマチ。
日付の形式もバラバラ

だから公開されてるライブラリがあったとしても、どれだけ使えるかは
どっちみち自分で確認しないとダメだろう。
なので、レジストリごとに自分で書くのが確実だと思う。
gTLDと.jpとかだけでいいなら楽。

TLD全部引かなきゃいけない場合は...ご愁傷様です。
309nobodyさん:2009/05/13(水) 17:15:40 ID:DEsX7p4W
ログインにセッションを使っています。
ログインしているかどうかの確認を

if(!$_SESSION["login_id"]){
//ログインしていない場合はトップページに戻す
}

のようなチェックを入れているだけなのですが、
これで問題ないでしょうか?
310nobodyさん:2009/05/13(水) 17:16:30 ID:???
はい
セッションの中身は全てサーバーサイドでの管理なので問題ありません
311nobodyさん:2009/05/13(水) 17:39:08 ID:43iecwOZ
>> 308
レスありがd、しかしやっぱりそうですか、、、
TLD全部なんですよ。。。チーン
312nobodyさん:2009/05/13(水) 17:54:45 ID:???
そもそもwhoisデータはトウシロが安易に扱っちゃいけないことになってる
313軟式PHP:2009/05/13(水) 18:04:41 ID:???
>>309
何をもって問題ないかにもよるが、セッションハイジャックには弱いな。
とりあえずこのサイトでも読んどけ。
ttp://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html
314nobodyさん:2009/05/13(水) 20:17:56 ID:???
>>309
(1)exit;を入れる
(2)session_regenerate(true)を入れる
(3)php.iniのuse.cookie.onlyとかを1にする
315309:2009/05/13(水) 22:50:31 ID:DEsX7p4W
>>313-314
ありがとうございます。もう少し勉強します。
316nobodyさん:2009/05/14(木) 12:10:48 ID:YD/DCKSf
XSS対策で質問です。>>313のサイトを見ると
「出力時にもhtmlspecialcharsをしろ」とありますが、
それはデータベース内のデータを出力する際もでしょうか?
それともデータベースにINSERTする時に行えば問題ないのでしょうか?
317nobodyさん:2009/05/14(木) 12:21:02 ID:???
>>316
      _______                     __
    // ̄~`i ゝ                    `l |
    / /        ,______   ,_____    ________  | |  ____ TM
   | |     ___ // ̄ヽヽ // ̄ヽヽ (( ̄))   | | // ̄_>>
   \ヽ、   |l | |    | | | |    | |  ``( (.  .| | | | ~~
      `、二===-'  ` ===' '  ` ===' '  // ̄ヽヽ |__ゝ ヽ二=''
                         ヽヽ___//   日本
  _____ _____  ______  _______
  |  ウェブ  | | イメージ | | グループ | | ディレクトリ |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ._________________
      |XXS PHP                  │・検索オプション
      └────────────────┘・表示設定
         | Google検索 | I'm Feeling Lucky |  ・言語ツール
          ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ○ウェブ全体から検索 ◎日本語のページを検索
318nobodyさん:2009/05/14(木) 15:08:49 ID:???
>>316
自宅警備中なんだからそれくらい自分で考える時間あるでしょ?
319nobodyさん:2009/05/14(木) 15:44:02 ID:???
>>318
そこまで316って馬鹿にされるようなレスなのか?
320nobodyさん:2009/05/14(木) 15:46:40 ID:???
>>319
そうだけど何か?
321nobodyさん: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次元配列のソートは覚えるのに時間がかかりそうなので、まずは読み込んで、読み込んだデータを別ファイルに書き込みたい状態です

322nobodyさん:2009/05/14(木) 19:20:32 ID:???
>それを読み込んで$ALという二次元配列に入れるところまではできた
これの逆をやればいいのでは?
323nobodyさん:2009/05/14(木) 22:15:18 ID:???
>316
当然、どこかのタイミングではする必要がある。

どちらでも問題ないといえば問題ない。
ただし、普通は画面に出力するその瞬間に行なう。何故なら、その方が忘れにくいからだ。
一年前にエスケープして保存したか、そのまま保存したかを覚えている自信はあるか?
保存先が複数になった場合はどういうポリシーにする?セッション変数は?ファイルに書き出したアレはどうしたっけ?
この関数の引数ってエスケープした奴?まだの奴?

保存する場所や、プログラムのほかの場所でエスケープする場合、画面出力するコードを見ただけではXSS対策がなされているかを確認できない。
画面出力をするその場でエスケープする方針ならば、そこを見れば間違いなくXSS対策がなされている事を確認できる。
だいいち、">"という文字列を含むレコードを検索したい時にはどうしたらいいんだっけ?とかいちいち悩みたくないだろ。
保存は生データ、加工は必要な奴が必要な場所でする、が基本。
324nobodyさん:2009/05/14(木) 22:17:07 ID:jJzNEQqb
返答ありがとうございます
繰り返し文で1行ずつ書き込むのはできそうなのですが、fputs(ファイルハンドル,$AL)みたいにまとめてやることは出来ないでしょうか?
325nobodyさん:2009/05/15(金) 00:24:41 ID:???
自分で関数を作る
326nobodyさん:2009/05/15(金) 01:20:02 ID:???
早く自分ですらすらコード書きたいな〜♪
327nobodyさん:2009/05/15(金) 02:18:52 ID:???
>>324
fputs($sp, implode("\n", array_map("joincsv", $AL)));

function joincsv($arr) {
return implode(",", $arr);
}
328nobodyさん:2009/05/15(金) 02:25:56 ID:???
>>324
おまけ

$text = file_get_cotents("test.txt");
$AL = array_map("splitcsv", explode("\n", $text));

function splitcsv($rec) {
return explode(",", $rec);
}
329nobodyさん: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インストールしたフォルダを指定しているのですが
ほかに何か設定が必要なのでしょうか。
超初心者質問ですみません・・・。
330nobodyさん:2009/05/15(金) 16:05:16 ID:???
php5.29というバージョンはありません
331nobodyさん:2009/05/15(金) 16:06:41 ID:???
332nobodyさん:2009/05/15(金) 16:23:16 ID:???
>>329
>【OS名】windowsVista

virtualstoreに反映されてない?
エディタを管理者権限で動かしてから編集してみて。
333nobodyさん:2009/05/15(金) 16:55:20 ID:wv3qSkZj
【OS名】Vista
【PHPのバージョン】php5
【質問内容】
AB01、PC002などの品番をAB-01、PC-002のように変換するにはどうすればいいですか?
正規表現で簡単に書けますか?
334nobodyさん:2009/05/15(金) 17:21:02 ID:???
先頭が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);
336nobodyさん:2009/05/15(金) 17:43:45 ID:wv3qSkZj
>>334-335
ありがとう。
↓これでいけた。
preg_replace("/[A-Z]+/","$0-",$str);
337nobodyさん:2009/05/15(金) 18:22:06 ID:???
$1ってなに?
数字の変数って使えましたっけ?
338nobodyさん:2009/05/15(金) 18:23:39 ID:???
>>337
何こいつアホすぎwwwwwwwwwwww
339nobodyさん:2009/05/15(金) 18:30:44 ID:???
変数は英文字から始めないと使えないってマニュアルに書いてありました

○$test
×$1test
○$test_1
×$_test1
340nobodyさん:2009/05/15(金) 18:33:00 ID:???
>>339
例えば
preg_replace("/^([A-Z]+?)-([0-9]+?)$/", "$1-$2");
があったとする
この場合、([A-Z]+?)の部分が$1に、([0-9]+?)の部分が$2に代入されるんだ

全部ひっくるめたのが$0だったっけ?$0は使ったことないからわかんね
341nobodyさん:2009/05/15(金) 18:36:36 ID:???
>>339
予約語だから使うなってだけ
342nobodyさん:2009/05/15(金) 18:41:52 ID:???
>>337
つ[後方参照]
343nobodyさん:2009/05/15(金) 20:02:45 ID:???
$1が使えるようになったの最近じゃなかったっけ?
他の言語では昔から使えるけど。俺もいまだに癖で\\1書いちゃうな
344nobodyさん:2009/05/15(金) 20:44:02 ID:???
>>343
最近って、化石すぎだろ。

http://jp.php.net/manual/ja/function.preg-replace.php
>replacement では、 \\n 形式または $$n 形式(PHP 4.0.4 以降)で参照を指定することができます。
345nobodyさん:2009/05/15(金) 20:47:15 ID:???
ん、$がかぶってるのはマニュアルのミスか?
英語版は
>replacement may contain references of the form \\n or (since PHP 4.0.4) $n, with the latter form being the preferred one.
だし。
346nobodyさん:2009/05/15(金) 22:09:39 ID:???
GDてユーザー定義関数使えないですか?

function test(){
動作確認した文字を描くだけのコード
}
test();

てユーザー定義関数にしてみると壊れてますと表示されるんですが?
347nobodyさん:2009/05/15(金) 22:19:09 ID:???
当然できるよ
348nobodyさん:2009/05/15(金) 22:27:44 ID:???
そうですか、再度考えてみます。
サンクス
349346:2009/05/15(金) 22:37:58 ID:???
画像リソース渡してなかった・・
350nobodyさん: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";
}
?>
351nobodyさん:2009/05/15(金) 23:27:02 ID:???
>>350
結論から言えば、
$aに文字が入っていない。

'シングルクオーテーションか、
"ダブルクオーテーション
でくくられていない文字列は数値として扱われる。

もし文字列として扱いたいのなら、

$a='AAAFFDJ';
か、
$a="AAAFFDJ";

とすべき。このようにクオーテーションで囲われていると、

「あ、これは文字列なんだな」

ってPHP君がわかって、文字列として扱ってくれる。
352nobodyさん:2009/05/15(金) 23:29:56 ID:???
そしてさらに

if($a===0){


とすればかんぺき。
期待どおりの結果になるはず。
353nobodyさん:2009/05/15(金) 23:31:40 ID:???
>>351は間違えてました。
クオーテーションいれないでも、PHPでは
自動的に文字列型になってました。

var_dumpしたら確認できました。ごめんなさい

なので>>351は忘れてください
354nobodyさん:2009/05/15(金) 23:36:04 ID:???
>>350
よって変数がカラかどうかを調べるには
emptyをつかうのがいいと思います。

<?php
$a=AAAFFDJ;

$b=empty($a);
var_dump ($b);


?>
355nobodyさん:2009/05/15(金) 23:37:49 ID:???
てか、未定義のシンボルを使用すると、そのシンボル名自身として評価されるって仕様は
なんとかならんのか。
356nobodyさん:2009/05/15(金) 23:38:06 ID:???
いま調べたら、emptyはユーザーが0を入力してきたときに、
trueを返してしまうのか。

だからみんなisesetを使うんだな。
357nobodyさん:2009/05/15(金) 23:39:12 ID:???
自動的にというか、スーパー全自動だなw
定数として評価した後にだからな
358nobodyさん:2009/05/16(土) 00:14:43 ID:???
>355
Noticeは出るだろ。
開発環境でNoticeを切ってる奴はウンコだから勝手に死ね。
359nobodyさん:2009/05/16(土) 00:33:18 ID:???
これがnoticeってのは、言語仕様としてどうかと思うけどねぇ。
360nobodyさん:2009/05/16(土) 00:35:35 ID:???
というか、null値で処理されるんなら、まぁそんなもんかって思うけどさ。
361nobodyさん:2009/05/16(土) 00:54:47 ID:???
if(ture === isset($_POST['hoge']))
とか一度はやるよな
362nobodyさん:2009/05/16(土) 01:03:32 ID:???
>>361
すべきなんだろうけど、やらないねぇ。

それって noticeを抑制する以外、意味あるの?
正直どうでもいいとしか思ってない。
363nobodyさん:2009/05/16(土) 07:39:00 ID:???
ポスト値はやるけどサーバ値はやらない俺
364nobodyさん:2009/05/16(土) 09:30:53 ID:???
言いたかったのは ture だと思う。

さておき、そもそもコード内で$_POSTに直接アクセスするのが良くない。テストできなくなる。
多くのフレームワークでスーパーグローバルがどっかに格納されるのはこういう理屈。
実行の早い時点で
$post = new Post($_POST);
$post->get('hoge');
とかにラップすべき(実際はGETとかも放り込んで$request->getPost('hoge')とかいう形が便利)。
まあ、別に配列を引数として直接渡していっても構わないけどな。
365nobodyさん:2009/05/16(土) 09:54:18 ID:???
すべきなんだろうけどねぇなんて言ってる奴が作ったシステムは使いたくないな
366gugurekasu:2009/05/16(土) 10:56:24 ID:SaZzzxwN
セッションについて

ブラウザー側で保存されているセッションIDを
ユーザーが適当に書き換えたとします。

サーバーがブラウザーのセッションIDを読み込み
tmpファイルの中に、新規にセッションIDに対応したファイルを作成。

これってセキュリティー問題ありなんですか?
367nobodyさん:2009/05/16(土) 11:01:06 ID:???
gugurekasu
368nobodyさん: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");
369nobodyさん: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
というエラーが出ます。
どうすればいいのでしょうか?
370nobodyさん:2009/05/16(土) 17:43:01 ID:???
QuickForm.phpはちゃんとあるの?
あとincludeパスが通ってないのかもしれんし
371nobodyさん:2009/05/16(土) 17:48:40 ID:???
お前ら、変数や関数の名前の付け方で
参考にしているものってあります?
372nobodyさん: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"
373nobodyさん:2009/05/16(土) 17:54:59 ID:???
C:\HTML\QuickForm.php でパス合ってる?
374nobodyさん:2009/05/16(土) 18:08:29 ID:raJP1QPz
どういうことですか?
375nobodyさん:2009/05/16(土) 18:12:10 ID:raJP1QPz
もしかしてrequire_once に書くべきは絶対パスということですか?
376nobodyさん:2009/05/16(土) 18:36:07 ID:???
/HTML/QuickForm.php
はそういう絶対パスだが。
先頭に.を加えればいいんじゃない?
377nobodyさん:2009/05/16(土) 18:39:57 ID:???
>372の設定で
require_once "HTML/QuickForm.php"; // スラッシュ削除
なら、
C:\xampp\php\PEAR\HTML\QuickForm.php

c:\xampp\php\includes\HTML\QuickForm.php

.\HTML\QuickForm.php
にあればいい。
378nobodyさん:2009/05/16(土) 22:57:34 ID:???
>>366
特に無い。
しかしさっきまでの操作は
当然無効になる。
379nobodyさん:2009/05/17(日) 00:18:22 ID:k2N5f3/W
レス番号を黒色から青色にしたいんですが
どうすればいいですか?
380nobodyさん:2009/05/17(日) 00:25:17 ID:???
<span style="color:blue;">***</span>
381nobodyさん:2009/05/17(日) 00:32:04 ID:dGMXPYwm
文字列の最後の改行を消したいのですがchompみたいのありませんか
382nobodyさん:2009/05/17(日) 00:36:15 ID:???
rtrim
383nobodyさん:2009/05/17(日) 00:43:09 ID:???
chop
384nobodyさん:2009/05/17(日) 00:46:18 ID:???
>>
385nobodyさん: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
386nobodyさん:2009/05/17(日) 11:49:05 ID:???
逆はよくある話だがな。
ところで機能しないってのは具体的にどんな状態?
387nobodyさん:2009/05/17(日) 11:59:15 ID:???
>>386
ページに何も表示されず、HTMLソースも空っぽな状態です

php.iniのそれっぽい箇所は
allow_url_fopen = On
にしてあります

けっこう複雑なことをやってるスクリプトはローカルで問題なく動いているので、
file_get_contentsだけが機能してないようです
388nobodyさん:2009/05/17(日) 12:12:58 ID:???
file使えって
389nobodyさん: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 を指定する意味と↑の言葉がわからん。
390nobodyさん:2009/05/17(日) 16:01:55 ID:???
MAX_FILE_SIZE を指定しておけば、鯖側のupload_max_filesize設定値よりデカいファイル
うpっても長時間待たせずに知らせてくれる

という風に読めるけど違う?
391nobodyさん:2009/05/17(日) 16:04:16 ID:qM+VaA+V
XAMPP Windows版Ver.1.7.1(PHP: 5.2.9)をインストールしました。
下記にあるサンプルは動いたのですが、
http://codezine.jp/article/detail/3492?p=2
下記のソースは動きませんでした。
http://php.s3.to/net/get1.phps
何が問題でしょうか?
392nobodyさん:2009/05/17(日) 16:05:52 ID:???
ブラウザが対応していれば転送前にエラー出してくれるってことじゃ?
393nobodyさん:2009/05/17(日) 16:09:43 ID:???
>>391
動かないってどう動かないの?
どうなることを期待しているの?
394nobodyさん:2009/05/17(日) 16:17:46 ID:qM+VaA+V
>>393
説明不足で申し訳ありません。下記に設置されているサンプルは
ボタンを押すと他のページを読み込んで表示しますが、ボタンを
押しても何も表示されませんでした(初期画面のまま)
http://php.s3.to/net/get1.php
サンプルと同じ動作を期待しています。
395nobodyさん:2009/05/17(日) 16:26:28 ID:???
>>394
それ、呼び出し元がphp.s3.toかどうかチェックしてるじゃない。
自分の設置したサイトがphp.s3.toじゃないのなら、その部分書き換えないと
396nobodyさん:2009/05/17(日) 16:31:27 ID:qM+VaA+V
>>395
動きました。早速の回答、ありがとうございました。
397389:2009/05/17(日) 17:14:50 ID:xCE67DMN
レスありがとう。

ファイルサイズをいろいろと用意して
サーバーにアップロードしてみたけど
実際、よくわからん orz

・わかったこと
a) MAX_FILE_SIZE を指定してそのサイズを超えてもアップロードは止まらない(?)

>>392
とりあえず(1.)を指定したからと言って
ブラウザー側で止まってくれるようなものではまずなさそう。

>>390
そんな感じかと思うんだけど、
(1.)の設定有りと無しで終わるまでの時間を計ってみても
どうも変わらないっぽいんだわ。

とりあえず俺が期待していた
「MAX_FILE_SIZE を越える場合、速攻で接続が切れる」
っていうのはなさそう。
398nobodyさん:2009/05/17(日) 17:39:30 ID:???
>>397
「MAX_FILE_SIZE を越える場合、速攻で接続が切れる」
これはないんだよね。アップした後でないとわからんってこと。
IEだけはvbscriptで事前チェックできるけどセキュリティのためとはいえファイルサイズもわかんないのは面倒だよね。
399nobodyさん:2009/05/17(日) 17:55:42 ID:???
MAX_FILE_SIZEは効果ないのん?
マルチパートでPOST送信するわけだから<form>の直後にMAX_FILE_SIZE書いてもダメかな?
400nobodyさん:2009/05/17(日) 18:19:45 ID:???
ちうか要はphpがデータを受け取ってからでないと判断できんのがネックね。
MAX_FILE_SIZEもしょせんはフォームの1データであって、ブラウザがそれをつかって何やするわけでないから。
401nobodyさん:2009/05/17(日) 19:14:37 ID:???
>397
2.はサーバー全体の設定になる。INI_PERDIRだから.htaccessで上書き、くらいはできるが。
1.はクライアントサイドでは無意味。HTMLの仕様にそんなものはない。
受け取ったスクリプトがこの値を見て勝手にサイズチェックをしてくれる、という値。
そして、この値は勿論クライアント側で改竄可能なので、結局何バイトのファイルを送るかはクライアントの自由になる。
結論:その値は無意味で、お前の思っていることは正しく、今日もPHPはウンコ
402nobodyさん:2009/05/17(日) 19:22:35 ID:???
おもっくそ勘違いしてんなw
403nobodyさん:2009/05/17(日) 21:59:09 ID:k2N5f3/W
>>379 ;;
404nobodyさん:2009/05/17(日) 22:05:14 ID:???
直後に回答出てるじゃねーか
405nobodyさん:2009/05/17(日) 23:38:46 ID:???
>>387
ローカルのPHPのバージョンはいくつなの?
406nobodyさん:2009/05/18(月) 02:31:47 ID:JzE+u3d4
>>405
6.1
407nobodyさん:2009/05/18(月) 06:01:24 ID:???
MAX_FILE_SIZEわらたw
あれは別にinputじゃなくても普通に人間が読めるようにしておけばいいって話なんだよねw
inputにしておけば送信する前に勝手に止まってくれるブラウザがあるかもしれないってだけで。
408nobodyさん: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

こんなエラーも出てるので、読み込みは成功してると思うんだけど、
何が違うんでしょう?
409nobodyさん:2009/05/18(月) 14:20:44 ID:???
configureの全文見せろやハゲ。
410軟式PHP:2009/05/18(月) 14:26:34 ID:???
>>408
Cannot find php-configってなってるから
configureの引数が--with-php-config=ではなくphp-configになってしまってると思われる。
411nobodyさん:2009/05/18(月) 14:31:00 ID:???
Please use
412nobodyさん: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
413nobodyさん:2009/05/18(月) 14:49:53 ID:???
php.iniの場所を指定するんじゃなくて、php-configの場所を指定するのでは。
414軟式PHP:2009/05/18(月) 14:52:16 ID:???
>>412
php-configのパスが間違ってるね。
iniじゃなくてphp-configのパスだよ。
415nobodyさん:2009/05/18(月) 14:54:05 ID:Auu+frfi
>>413
その発想はなかったわ...
探してみる。
416nobodyさん:2009/05/18(月) 14:55:03 ID:???
おそらくその環境だと
/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行目に#!で始まるコマンド行が無い、というエラー
417nobodyさん:2009/05/18(月) 14:55:24 ID:Auu+frfi
>>413-414
通ったっぽいw
お手数おかけしました。
そして、ありがとうございました。
418nobodyさん:2009/05/18(月) 15:27:29 ID:4boWXdtt
最近PHP飽きてきたんだけど他にどんな言語始めれば仕事につながりますか?
419nobodyさん:2009/05/18(月) 15:39:24 ID:???
MAX_なんちゃらについてはphpがそれ以上のサイズを受けると内部的に停止するってだけ。
アップロードはブラウザ側の処理だから延々と処理し続ける。
420nobodyさん:2009/05/18(月) 15:48:52 ID:???
>>418
学校の勉強
421軟式PHP:2009/05/18(月) 16:10:44 ID:???
>>418
英語
422418:2009/05/18(月) 18:21:10 ID:???
軟式さんどもっす
英語は読めるので他にないですか?
423nobodyさん:2009/05/18(月) 18:22:14 ID:???
仕事ならJavaかC++
424nobodyさん:2009/05/18(月) 19:32:42 ID:???
今からC++って需要あるか?
C++.netのほうがよくないか?
425nobodyさん:2009/05/18(月) 20:41:57 ID:???
>>418
他に何ができるの?
JavaScript?
MySQL?
426nobodyさん:2009/05/18(月) 21:22:33 ID:???
ま、MySQL・・・!?
427nobodyさん:2009/05/18(月) 22:02:23 ID:JzE+u3d4
SQLが正しいな
428nobodyさん:2009/05/18(月) 22:04:28 ID:???
PHPで同じようなレベルのコード書いてればそりゃ飽きるわな
御託はZend FrameworkとかPEARレベルのソースを読み書きできるようになってから抜かせ

と言いたいところだが、1言語しか使えない奴は総じてゴミなのでひとつくらいは別言語を覚えたほうがいいな
RubyとかActionScript辺りはどうだろ、適度に共通項があり適度に相違点があって勉強になると思うが
429nobodyさん:2009/05/19(火) 02:46:52 ID:???
いまさらRubyなんて言っているのは流行遅れの引きこもり。
今は、.NetかSssP、Oframerとかが旬。
430nobodyさん:2009/05/19(火) 04:34:55 ID:???
今は akikanだろ
431nobodyさん:2009/05/19(火) 04:44:00 ID:???
スレみすだ
432329:2009/05/19(火) 10:19:45 ID:vtfeozSW
遅くなりましたが、とりあえず前に若干進みました。
>>331
インストール後の話なのでちょっと現況とマッチしてはいませんでした
まあ一切合財再インストールしたほうがいい、という意味と思いますし
私もそうして設定デフォルトでやり直したほうがいいかなーと思ったり
でもまあ暫くがんばってみたいと思います

>>332
virtualstoreフォルダは無かったんですが管理者権限でエディター動かして編集したらば
とりあえず反映しました!うーんなんなんだ

ありがとうございました!

とりあえずVistaはもう・・・ぐったり
433418:2009/05/19(火) 11:42:30 ID:xoc5pFTk
>>425さんどもっす
SQLでポスグレとMySQLは使えます
jsも使えます(ajaxも)
データフォーマットはxml,json,csv,tsvも絡められます
web言語にとらわれず仕事になるものでしたら何でも覚えたいです
434nobodyさん:2009/05/19(火) 11:43:33 ID:xoc5pFTk
>>428
flashは仕事で使ってるので覚えてます
ASは3.0まで使ってます
435nobodyさん:2009/05/19(火) 13:28:50 ID:???
どうでもいいがそろそろスレチということに気がつけ。
マ板でもいっときな。まぁPHPは言語してみなされないがw
436nobodyさん: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で指定しています
437nobodyさん:2009/05/19(火) 15:18:43 ID:???
>>436
config.inc.phpをどこに置いてるかフルパスで書いてみそ。
本当にあるのか怪しいわ。
438436: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~
こんな感じです
439nobodyさん:2009/05/19(火) 15:39:38 ID:???
ls -laってなに?
440nobodyさん:2009/05/19(火) 15:44:07 ID:???
~付きはemacsかなんかで編集した時の編集前のファイルだろ、消していいよ。
パーミッションの実行もphpの場合(cgiモードで動作させる場合を除いて)関係ない
その
ディレクトリのオーナーとパーミッション(/var、/var/www、/var/www/php_libs)は
どうなってる?
441nobodyさん:2009/05/19(火) 15:52:11 ID:???
>>438
440の言うようにDSOでPHPが動いているだろうから
Apacheから読めるかどうかが原因のような気がするなぁ。

>>439
雑魚は引っ込んでろw
442436: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

パーミッションはこんな感じです
度々すみません
443nobodyさん:2009/05/19(火) 16:01:02 ID:???
ディレクトリが777、ファイルが666ってわけわからずやってんのか・・・
逆にそれが災いしてSELinuxが効いてんじゃないの?
オーナーをhttpd実行ユーザーと同じにして644の755にしとけ
444436:2009/05/19(火) 16:08:44 ID:oPaIAAk+
>>443
ほんとに理解不足ですみません
ディレクトリは644 .phpを755ってことでしょうか
445nobodyさん:2009/05/19(火) 16:20:44 ID:???
とりあえず問題切り分けのために試しにSELinux切ってみては。(切ってなかったら)
ディレクトリは755だよ。それよりrootが持ち主だけどApacheはroot以外のユーザーで動いてるでしょ?
446436:2009/05/19(火) 16:45:26 ID:oPaIAAk+
ヤバイ、ほんとにお恥ずかしい
Apacheのユーザ設定は考えていなかったのでrootで動いてるんじゃないかと思います
このサイトにあるようにpublic_htmlを設定するってことでしょうか?
http://httpd.apache.org/docs/2.0/ja/howto/public_html.html

とりあえず、755にしたら先ほど書いたエラーは出なくなりました
権限など勉強し直します。ありがとうございました
447nobodyさん:2009/05/19(火) 17:38:02 ID:???
PHPでドコモの携帯端末情報を取得したくて$_SERVER['REMOTE_ADDR']をやったんですが
ipが取得されてしまいました
どのようにして携帯端末情報を取得するのでしょうか?
448447:2009/05/19(火) 17:38:47 ID:CIWntjhX
すいません、ID出し忘れてしまいました
失礼いたしました
449nobodyさん:2009/05/19(火) 17:40:51 ID:???
いや
$_SERVER['REMOTE_ADDR']自体IPを取得するものじゃねーか
何この釣り
450nobodyさん:2009/05/19(火) 17:41:43 ID:???
その値はhttdがセットする。
たとえばApacheなら、httpd.confでHostnameLookups Onになっていないと
名前でなくアドレスが入る。ちなみにHostnameLookups Offがデフォルトだったかと。
451nobodyさん:2009/05/19(火) 17:42:58 ID:???
おっと内容見てなかったw
多分間違ったんだろうけど
'REMOTE_HOST'だなw
452nobodyさん:2009/05/19(火) 23:14:08 ID:???
>>433
PHP
MySQL
ポストグレス
javascript
ajax
xml
json
csv
tsv

これだけできるんだ。なんだ、
なんでもできるんじゃん。
453nobodyさん: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を読み込むのは成功しています
454nobodyさん:2009/05/20(水) 00:16:23 ID:???
>>385
いまさらだけど、会社のPCとかからやってない?
プロキシ経由で外に出てる場合、はじかれるよ。
455nobodyさん:2009/05/20(水) 00:20:28 ID:???
>>453
include_pathの設定の変更は、php.iniのその名の通り「include_path」を設定するんじゃないか?
456nobodyさん:2009/05/20(水) 00:46:36 ID:jL/vKg9a
>>455
どうもです
>「include_path」を設定するんじゃないか?
その通りなんですが、このinclude_pathで設定したパスが open_basedirで設定したパスより
上にあると、それは除外されちゃうらしいんです。
なので、open_basedirをinclude_pathで指定したパスを含むように変更したんですがダメダメで…
参ったなぁ
457nobodyさん:2009/05/20(水) 00:47:49 ID:???
>>456
ところで何をしたかったんだっけ?
458453,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は不慣れで、
操作してるファイル自体勘違いしてないか知りたいです
459nobodyさん:2009/05/20(水) 01:02:53 ID:???
>>458
xamppを試してみたら?
460nobodyさん:2009/05/20(水) 01:03:24 ID:???
>>458
apacheの再起動は当然してるよね。

設定ファイルの場所とかはインストールした環境によるからどこってのは無いと思うけど、

php.iniとhttpd.confは、とりあえず適当にエラー出しそうな値に書き換えてみたら
とりあえずいじってるファイルがあってるかどうかわかるんじゃない?
それこそ、php.iniでinclude_pathをいくつか追加してみて、ini_getで呼んでみて
値が変更されてたらOKなわけですし。
461453,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は、とりあえず適当にエラー出しそうな値に書き換えてみたら
>とりあえずいじってるファイルがあってるかどうかわかるんじゃない?
たしかに! 試してみますね。ありがとう
462nobodyさん:2009/05/20(水) 08:32:38 ID:???
>>447
ホスト名がほしいんか?端末そのものの情報か?
前者なら$_SERVER["REMOTE_HOST"]でいいけど。
ブラウザやOS情報なんかほしいんなら$_SERVER["HTTP_USER_AGENT"]も必要だな。
463447:2009/05/20(水) 11:03:52 ID:???
自己解決しました

>>451
がんばって答えてくれてありがとねw
464nobodyさん:2009/05/20(水) 11:04:48 ID:???
回答してくれるのは嬉しいことですが携帯端末情報を知らない人が多すぎてフイタ
465447:2009/05/20(水) 11:05:22 ID:???
自己解決しました

>>462
必死で考えてくれてありがとねw
466nobodyさん:2009/05/20(水) 11:07:37 ID:???
ドコモとか携帯端末情報なんて文字全然見てなかった。
REMOTE_ADDRでそれを取得しようとする間抜けなんて存在するとは思わないもんな
467nobodyさん:2009/05/20(水) 11:08:26 ID:???
元々知りませんでしたって言えばいいじゃん自称回答者乙w
468nobodyさん:2009/05/20(水) 11:09:38 ID:???
ドコモの公式サイトも作ってるけど何か?
469nobodyさん:2009/05/20(水) 11:16:30 ID:???
妄想乙
470nobodyさん:2009/05/20(水) 11:34:34 ID:???
>>468
早く病院いった方がいい
471nobodyさん:2009/05/20(水) 11:49:28 ID:???
公式ってコンテンツプロバイダーのことな。
今日来たメールだと
>【iモード技術情報】 マイニュース/マイリンク関連情報掲載のお知らせ
とかが来るようなとこね。
472nobodyさん:2009/05/20(水) 11:50:25 ID:???
それのどこがすごいの?
473軟式PHP:2009/05/20(水) 11:54:36 ID:???
>>471
それ、うちには昨日の4時頃来てたよ。
474nobodyさん:2009/05/20(水) 12:09:08 ID:???
まぁ447がクズだということは分かったから今後一切来ないでほしいね。
答えが分かった途端に調子にのるww
ちなみに回答側のやつらは殆ど某ライブラリ経由で端末情報取得してるよ。
シコシコ$_SERVERとか書いてろwww
475nobodyさん:2009/05/20(水) 12:10:55 ID:???
$_SERVER["COME_SHOT"]
476nobodyさん:2009/05/20(水) 12:35:46 ID:???
>>474
三流回答者乙
477nobodyさん:2009/05/20(水) 12:50:44 ID:???
>>471
あーあ
NDAで糸冬
478nobodyさん:2009/05/20(水) 12:53:50 ID:???
たかがドコモの公式の一部に掲載されてるページごときでwwwwwwwwwwwww
479nobodyさん:2009/05/20(水) 13:17:30 ID:???
俺は三キャリアだけどなにか?
480nobodyさん:2009/05/20(水) 14:54:14 ID:FO/+N7r7
PHP5.1.6+eAcceleratorから、PHP5.2.9+eAcceleratorにアップデートしたのですが
5.1.6の時と比べて、負荷に弱くなったというか反応が重たくなりました。
設定は何も変更していないのですが、5.2.9は重たいのでしょうか?
反応を軽くするようなセッティングはなにかありませんか?
481nobodyさん:2009/05/20(水) 15:33:13 ID:???
ドコモへお問い合わせください
それかドコモ先生の登場をしばらくお待ちください
482453,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()で表示される情報よりも優先される設定がプログラム中の直接指定以外あるんでしょうか?
483nobodyさん:2009/05/20(水) 16:32:13 ID:???
>>480
eAcceleratorはconfigure > makeしなおした?
484nobodyさん:2009/05/20(水) 16:35:18 ID:???
>>482
SELinuxは?
っていうかapacheのログに何か出てたりしないの?
485nobodyさん:2009/05/20(水) 16:54:07 ID:???
apacheのログの見方は
apache/logs/error.log だよ
486nobodyさん:2009/05/20(水) 17:28:27 ID:???
それは設定次第だろハゲ。
487nobodyさん:2009/05/20(水) 17:30:25 ID:FO/+N7r7
>>483
はい、PHPを入れ直した後、eAcceleratorも再インストールしました。
PHPのバージョンアップ後、PHPのページだけ、アクセスが増加する時間帯になると重たくなると言われたので
もしかしたら5.2.9は評判がよくないのか、なんて思ったりしたのですが・・・
488nobodyさん:2009/05/20(水) 17:52:11 ID:mk8mjF0l
userをテキストボックスで、docomo.ne.jpをプルダウンでsubmitを押すと
[email protected]としてMySQLにインサートし、その後ブラウザに表示
させるような事はPHPで可能でしょうか?
user、docomo.ne.jpをそれぞれテキストボックスでsubmitしてインサートした
後に表示させる事はできたんですけど・・。

489nobodyさん:2009/05/20(水) 18:01:08 ID:???
>>487
何だろうなぁ。5.2.9が重いとは聞いたことないが・・。

>>488
出来る。
<input type="text" name="host" value="">@
<select name="domain">
<option value="docomo.ne.jp">docomo.ne.jp</option>
</select>
あとは分かるな?
490nobodyさん:2009/05/20(水) 18:15:43 ID:mk8mjF0l
>>489
あ、出来た。有難う御座います。
、というかなぜこんな事で2時間唸ってたんだと思うと恥ずかしくなりました。
491nobodyさん:2009/05/20(水) 23:11:32 ID:???
>487
PHPやeAccの性能問題のほかに、PHP側の仕様変更/バグ修正によってコードに何らかの不具合が生まれた可能性もある。
俺なら実行時間のプロファイルを、いったんeAccを外した状態で取る。
人間が体感できるほどの差なら、5.2.6で検証するまでもなく、5.2.9の実行結果で明らかに時間のかかってる処理が見つかると思う。
492nobodyさん:2009/05/20(水) 23:25:46 ID:???
>>482
とりあえず、考え方を変えて、
httpd.confのDirectoryをさ
例えば、
/var/www/htdocs
としてやって、htmlやPHPのルートを設定するじゃない。
んで、/var/www/libとか適当なディレクトリを作ってやって、
そこにincludeしたいライブラリとかを設置してやって
ついでに、phpのinclude_pathに、/var/www/libを設定してやるっていうのだと
ダメなの?
493nobodyさん:2009/05/21(木) 00:18:09 ID:M2R0F+Cl
よくこちらのレスを利用しているものですが、
この写真に写っている果物は何ですか?
芸能人のブログの一部のものなのですが、
何の果物を撮ったか書いていないので分かりません。
ご教示お願いします。

http://stat.ameba.jp/user_images/20090520/15/hoshino-mari/7f/22/j/o0640048010183731596.jpg
494nobodyさん:2009/05/21(木) 00:19:32 ID:M2R0F+Cl
直リンクで表示されようとすると駄目みたいです。
申し訳ありませんが、URLをコピーしてからアクセスして頂けませんでしょうか?

たびたびすみません。

ちなみに、本ページは、ここです。
http://ameblo.jp/hoshino-mari/
495453,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 しか存在していない状況でテストしてるんですがエラーが出てしまいます
496nobodyさん:2009/05/21(木) 00:30:25 ID:???
include("./config.inc.php");
497nobodyさん:2009/05/21(木) 00:37:43 ID:???
>>495
failed to open stream を日本語に訳せ
498nobodyさん:2009/05/21(木) 01:06:13 ID:???
読み込み失敗
499453,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にはあるんでしょうか?
500453,456:2009/05/21(木) 01:50:13 ID:???
今まで回答くれた方ありがとうございました、解決しました
対象のパスに含まれるディレクトリの権限設定が間違ってました
しょうもない理由でしたが勉強になりました 本当にありがとう
501nobodyさん:2009/05/21(木) 01:51:10 ID:???
>>499

config.inc.phpを/var/www/html/test12345に置いたら動いて
/var/www/php_libs/configに置いたら動きません(上のエラーが出ます

この二つのディレクトリ、もしくはその配下に作られたファイルの
アクセス権限に違いはない?
502501:2009/05/21(木) 01:53:51 ID:???
ぐはww遅かったかwww
503453,456:2009/05/21(木) 02:10:17 ID:???
>>502
ほんとすみませんw でも助かりました
ファイルそのもののアクセス権限しか見てなかったです
ありがとうございます!
504nobodyさん:2009/05/21(木) 19:00:49 ID:M2R0F+Cl
>>493>>494です。

スレ違いで申し訳ないのですが、何とかご回答頂けないでしょうか?
前の席のものが気になってしょうがないと言っていて、私の方もちょっと困っています。
505nobodyさん:2009/05/21(木) 20:24:56 ID:???
園芸板行って来いよ。スレ違いってレベルじゃねーぞ。
506nobodyさん:2009/05/21(木) 20:49:40 ID:M2R0F+Cl
お返事どうもありがとうございます。
レスがつかないので心配していました。
すみません。その園芸板ってどこでしょうか?
そこの方が適切であれば、そちらでお聞きしたいと思います。
507nobodyさん:2009/05/21(木) 20:55:56 ID:M2R0F+Cl
何度もすみません。昨日貼り付けたURLですが、ブログが更新されていたので、
ページの写真が変わってしまいました。大変失礼しました。

こちらのページに貼ってある写真にある果物の名前です。
甘酸っぱくて美味しいって書いてあるけど、名前が書いていない・・・。

http://ameblo.jp/hoshino-mari/page-2.html#main
508nobodyさん:2009/05/21(木) 21:19:39 ID:3E8Yd+C8
PHPでブログ作りたいのですが
ログイン機能
記事編集
画像アップロード
必要なPEARはなんでしょうか?
509nobodyさん:2009/05/21(木) 21:37:18 ID:???
>>508
その単位でpearを探すのは大変。(いっぱいある)
それぞれについてどんな機能が欲しいかを決めてからのほうがいいよ。
510nobodyさん:2009/05/21(木) 21:38:34 ID:???
>>505 害基地だから触るな
511nobodyさん:2009/05/21(木) 21:50:04 ID:???
Pearは中途半端だからいらない
勉強目的なら自作でやってみ 仕事ならZF
512nobodyさん:2009/05/21(木) 21:55:31 ID:???
>>508
正直そのどれもpear要らない
513nobodyさん:2009/05/21(木) 22:24:42 ID:A/e/PApt
>>508
Auth ,HTMLQuickform, peager, pearDB2, かなぁ・・・
これにSmartyをつかってぐぐっと大人っぽくなるかも(~'.'~)
514nobodyさん:2009/05/21(木) 23:09:31 ID:3E8Yd+C8
>>509-513
皆さんありがとうございます。
勉強目的なので自分で作ってみます!
またよろしくお願いします
515nobodyさん:2009/05/22(金) 03:02:07 ID:???
【性技を】お隣は幼馴染で彼女な某魔法使い5【色々お試し中】
http://ex14.vip2ch.com/test/read.cgi/part4vip/1240398459/
516nobodyさん:2009/05/22(金) 03:20:16 ID:f6PVhhZ1
お願いします。submitボタンが押されて処理開始までに、あるいは処理中の待ち時間を
指定する事はPHP単体で可能ですか?イメージとしては買い物サイトなどの決済処理で
少し砂時計が回る間を待つような感じで。
517nobodyさん:2009/05/22(金) 03:26:03 ID:???
sleep
518nobodyさん:2009/05/22(金) 03:31:10 ID:f6PVhhZ1
>>517
超即レス有り難うございます。。こんな関数もあったんですね。
ぐぐったんだけどワードが悪かったのかなかなか見当たらなかった。
早速試したところうまくいきました。
519488: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は登録済みです";
}}?>
520488: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 = "";とかで宣言してから使え。
522nobodyさん:2009/05/22(金) 10:58:06 ID:???
varはないだろ
523軟式PHP:2009/05/22(金) 11:01:15 ID:???
>>522
すまそ。素で間違った。
varは無視しとくれ。
524488:2009/05/22(金) 11:07:58 ID:9hIwxjrZ
>>523
$host = "";で解決しました。

>癖になる前にこれはやめれ

ご指摘ありがとうございます。確かにセキュリティ上良くない事は色んなHPで
よく書いてましたから、ある程度理解してはいましたが、今の知識じゃサンプル
からソースを弄って書くのが精一杯でしたがこれを機会に癖になる前に治します。
525nobodyさん:2009/05/22(金) 18:38:53 ID:JSavhF6R
WINDOWSのAPACHEで動かしてたプログラムがあります。
内容は、mb_strlen()でフォームの文字数をカウントするものです。
あいうえお なら 10文字で数えられていたんですが、今回LINUXの環境で動かしてみたら15文字とカウントされました。
どうして? UTF8でカウントされたってことでしょうか?
この場合、どこの文字コードを変更したら良いんでしょうか。最終的には、ブラウザにはUTF8で出力したいと思っています。
526525:2009/05/22(金) 18:40:41 ID:JSavhF6R
書き忘れました
httpd.conf も php.iniも Windowsの設定を引き継いだので、どうしてこうなったのかわかりません
527525:2009/05/22(金) 19:08:17 ID:???
すみません、解決しました
質問自体かなり変なこと書いていました、失礼しました
528nobodyさん:2009/05/22(金) 19:28:51 ID:???
どう解決したのさ?
529nobodyさん: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
530nobodyさん:2009/05/22(金) 20:27:01 ID:???
$query = "select * from sqlite_master";
531nobodyさん:2009/05/22(金) 20:27:37 ID:???
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();
}
にすればいいんじゃね?
532nobodyさん:2009/05/22(金) 20:30:49 ID:???
>>530
セミコロンの有無は関係ないみたいです・・・

>>531
catchでエラーは出ませんでした・・・。
.dbファイルもちゃんと存在しますし、おかしくならないはずなんですけど。。


どうでもいいですがMAKEINGって酷いですねorz
533nobodyさん:2009/05/22(金) 20:42:52 ID:???
>>532
出力結果は?
534nobodyさん:2009/05/22(金) 20:45:19 ID:???
>>533
何も出力されませんでした。
多分tryの中にエラーが無かったからだと思います。

ttp://selfkleptomaniac.org/archives/1083

ここにphpでwordnetを使用するソースがあったので試したところ、
ブログにある例のような出力結果が得られなかったので、原因はPHPではsqliteかdbにありそうです。
のでそちらを当たってみます。。
535nobodyさん:2009/05/22(金) 20:48:20 ID:???
じゃ結果セットが0件なんじゃね?
536nobodyさん:2009/05/22(金) 20:57:16 ID:???
データが空っぽ
537nobodyさん:2009/05/22(金) 21:07:52 ID:???
>>529
PDOはデフォルトだとエラー吐かないのでエラーモードの設定を。
$dbh = new PDO('sqlite:../wn.db',null,null,array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
ついでにPDOStatementオブジェクトはforeachで回せるよ。
538nobodyさん:2009/05/22(金) 22:03:57 ID:???
一般で配布されているdbは異常がなくて、結果もsqlite_masterテーブルには必ず内容があることが保証されてるんですよね。
だから空ってことはないと思うのですが。。。

>>537
の通りエラーモードを設定した後、わざとdbのパスを間違えて指定しても、エラーが何も出ませんでした。
こんなことってあるんですかね?
539529:2009/05/22(金) 22:17:48 ID:???
すいません、存在しない名前を指定したら勝手にDBが作られるらしいです。
勘違い申し訳ないです。
540nobodyさん:2009/05/22(金) 22:26:34 ID:???
どっ
541nobodyさん:2009/05/22(金) 22:43:22 ID:???
んまい
542529:2009/05/22(金) 22:46:58 ID:???
>>529のwhile中にあるfetchの引数「PDO_FETCH_ASSOC」を取ると値が取れるようになりました。
どうしてか分かりませんが、Webのコードを鵜呑みにコピペすると酷い目に遭いますね・・・orz

以上解決です。ありがとうございました。
543nobodyさん:2009/05/22(金) 23:00:03 ID:???
>>542
もうみてないとおもうけど
PDO_FETCH_ASSOC
ではなくて
PDO::FETCH_ASSOC
だな。

PDOのconst。
544529:2009/05/22(金) 23:05:03 ID:???
>>543
だったみたいですね・・・
そのように変えたら何事も無く動作しました;;
545nobodyさん: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やそれを含むディレクトリのパーミッションは、成功時も不成功時も同じです。
546nobodyさん:2009/05/22(金) 23:29:03 ID:???
そのrequire_onceは、実際に叩いたスクリプトに書いてあるの?

index.phpを叩いたら、index.phpの置いてある場所からの相対を引くよ。
つまりindex.phpから、別の「nantoka.php」をrequireして、そのnantoka.phpのなかで
requireしたファイルは、nantoka.phpからの相対ではなくてindex.phpからの相対だよ。
547545:2009/05/22(金) 23:59:17 ID:???
>>546
ありがとうございました。
原因がわかりました、パスの問題ではなかったです。
読み込み対象のファイルが、hoge.phpとHoge.phpのように名前の大文字小文字が違ってました
Windowsでは大文字小文字の判別してなかったのに、Linuxではエラーになっていました
ほんとにお騒がせしました
548nobodyさん: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文でなくても良いです。
549nobodyさん:2009/05/23(土) 03:23:22 ID:???
>>548

echo "警告:カナ空っぽ";
}
if(!$mail || !$kana || !$namae ){//ここから挿入
exit;
}//ここまで挿入
echo "テスト"


これで進ませないことはできる。
550nobodyさん:2009/05/23(土) 03:27:54 ID:???
>>548
セキュリティがまずいですね
551nobodyさん: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>
と、すると正常に処理出来ているのですが。
552nobodyさん: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出来ているようにしか見えないのですが。
原因と解決策を教えて下さい。よろしくお願いします
553nobodyさん:2009/05/23(土) 13:26:42 ID:???
よくわからんがPHPとJavaScriptが混ざってねーか?

Ajaxを勉強しているっぽいのはわかるけど。
554nobodyさん: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スレに質問させて頂きました。
555nobodyさん:2009/05/23(土) 14:27:01 ID:???
>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 '問題なし';
}
556nobodyさん:2009/05/23(土) 18:23:01 ID:???
>>554
httpoj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
httpoj.send(senddata);
557nobodyさん: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するんですが…
558nobodyさん:2009/05/23(土) 19:37:43 ID:???
1ファイルずつ変換し、変換が終わってファイルに書き出した時点で変数をunset()すれ。
BMPとして丸ごとデータを持ってるようなものなので、それなりにメモリは食う。
559nobodyさん:2009/05/23(土) 19:38:33 ID:???
と思ったが1.2GBはあり得ない気もするな。
無限ループとかしてんじゃね?
560nobodyさん:2009/05/23(土) 20:35:33 ID:???
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
561nobodyさん:2009/05/23(土) 20:53:51 ID:???
変数はnull代入がおぬぬめ
562nobodyさん:2009/05/23(土) 22:44:07 ID:???
コメントするにはログインする必要がありますってよくありますが
どんな感じになってるんですか?
563nobodyさん:2009/05/23(土) 22:44:58 ID:HvWc9rw9
ID忘れました
564nobodyさん:2009/05/23(土) 23:46:03 ID:6DL8AN4q
>>558-559
ありがとうございました
565nobodyさん:2009/05/24(日) 02:59:12 ID:???
>>562
ログインっていうのは基本的にセッションを使って行っています。
セッションというのはそのユーザがWebサイトに入ったときにWebサーバから発行されるもので、
色々な情報を保持することができます。
このセッションは、ユーザがブラウザを閉じたりすると無効になります。

ログインするときに入力したIDとパスワードで認証を完了すると、そのユーザに発行されるセッションには、
「IDパス認証済み」という情報が付与されます。

一方、ユーザしか見れないページには『「IDパス認証済み」というセッション情報があるかどうか』を検査するコードが存在し、
存在する場合にはユーザにページを見せるような構造になっています。

ユーザがログインに使ったIDとパスワードをそのまま使わせているダメなサーバもありますが、
主にこんな形でメンバー制サイトは運用されていると思います。
566nobodyさん:2009/05/24(日) 03:30:47 ID:???
>このセッションは、ユーザがブラウザを閉じたりすると無効になります。
ならねーよ、馬鹿。
567nobodyさん:2009/05/24(日) 03:52:50 ID:???
なるよ、馬鹿。
568nobodyさん:2009/05/24(日) 04:49:35 ID:???
セッションはブラウザを閉じると自動的に消去されます。
569nobodyさん:2009/05/24(日) 05:02:48 ID:???
そんなのセッションの有効期限をいつにするかによって違うでしょ。
570nobodyさん:2009/05/24(日) 05:19:52 ID:1c4u+X3P
それはクッキー?
571nobodyさん:2009/05/24(日) 05:50:47 ID:???
クッキーですね
572nobodyさん:2009/05/24(日) 10:52:54 ID:???
ならないようにもできる、が正解。
クッキーの有効期限を指定しない場合はブラウザを落とすと消える。
つうか、実際にブラウザ閉じてもセッションが継続するサイトなんぞ山のようにあるだろ馬鹿。
573nobodyさん:2009/05/24(日) 13:52:15 ID:???
残念ながらそれはクッキーといいます
574nobodyさん:2009/05/24(日) 14:13:45 ID:???
>>556
何も変化ありませんでした。
phpinfoで見ると、ちゃんと
_SERVER["CONTENT_TYPE"] application/x-www-form-urlencoded
と送信されています。
575nobodyさん:2009/05/24(日) 15:38:23 ID:???
恵子かわいい
576575:2009/05/24(日) 15:39:39 ID:???
ごめん誤爆した
577nobodyさん:2009/05/24(日) 19:13:01 ID:???
携帯で画像をランダム表示したいのですが
どのようなスクリプトが使えるのでしょうか?
578nobodyさん:2009/05/24(日) 19:32:22 ID:???
マルチ乙
579nobodyさん: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
580nobodyさん:2009/05/25(月) 01:12:15 ID:???
プログラム板のほうまでマルチしてたよ>>577
581nobodyさん: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で定義されてるユーザ情報、サーバ情報は共通で使っています。
よろしくお願いします
582nobodyさん:2009/05/25(月) 23:24:26 ID:KRPzGQP0
ある程度初歩的なコーディングができるようにはなったのですが、ぐちゃぐちゃで汚いんです。
お手本になる、シンプルでエレガントなスクリプトあったら教えてください。
583nobodyさん:2009/05/25(月) 23:32:16 ID:???
シンプルでエレガントなコードは概して参考に出来ない罠
584nobodyさん:2009/05/25(月) 23:34:26 ID:???
>>582
マニュアルかPearかZendFrameworkあたりがおすすめ
585nobodyさん:2009/05/26(火) 10:37:03 ID:e9nrbvXe
引継ぎで前の人のソース見たらひどいことになってた
PHP内にJavaScriptベタ書きってなんだよwwww

しかも、一部動作しない部分があってデバッグしてみたんだが
コメントで
「○○をする関数」って書いてあった
いやこれコメントアウトしてねーじゃんwww

こういうソース回されたときってどう対処してるよ
明らかにひどいやつ、しかもまだリリース前なんだぜ?
586nobodyさん:2009/05/26(火) 10:43:19 ID:???
こんな所で愚痴らないで上司に相談する
587nobodyさん:2009/05/26(火) 10:45:06 ID:???
リリースまで時間がある→最初から組みなおす
リリースまで時間がない→見なかった振りをして未実装部分に取り掛かる
588nobodyさん:2009/05/26(火) 10:46:55 ID:???
>>585
つーかそんなスキルの人間を使い潰してるような会社にいて大丈夫か?
589nobodyさん:2009/05/26(火) 10:50:54 ID:e9nrbvXe
>>588
オフショアで外人が組んでたスクリプト
XHTMLすら同じIDを2つ以上使ってるんだぜ?まじひどい
590nobodyさん:2009/05/26(火) 11:00:46 ID:???
お前 「引き継いだソースが使い物になりません」
上司 「どのくらいダメなんだ?」
お前 「動かないとは言いませんけど、構文とか滅茶苦茶です」
上司 「動くなら問題ないだろ。お前のセンスに合う合わないなんてどーでもいい」
お前 「・・・・・・」
上司 「ほら、さっさと作業にもどれ! リリースは来月頭なんだからな!」
591nobodyさん:2009/05/26(火) 11:02:58 ID:e9nrbvXe
よく見たら会員登録削除部分なんてフラグ立てないで直接DELETE文で削除してるじゃねーか
592軟式PHP:2009/05/26(火) 13:09:39 ID:???
本当全盛期に比べスレ過疎ってるな。
プログラム関連板全体に言えるが。

>>591
マテ。あわてるな。
トリガーでdeleteされたら別テーブルにコピーしてるに違いない。
593nobodyさん:2009/05/26(火) 16:41:29 ID:UQeZnrko
質問があります。
無料レンタルサーバーでPHPを動かした場合、メモリはおよそ幾らくらい使用可能でしょうか?
多すぎると、エラーで停止しますか? もしくはHDDに移されて動作が遅くなりますか?
594nobodyさん:2009/05/26(火) 16:43:25 ID:e9nrbvXe
レンタルサーバーに質問しやがれカスです
595nobodyさん:2009/05/26(火) 16:51:53 ID:UQeZnrko
C/C++のCGIとPHPはおよそどちらが高速かわかりますか?
596nobodyさん: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++の方が速いと思う。
思うだけでやったことはない。
598nobodyさん:2009/05/26(火) 17:10:36 ID:UQeZnrko
トンクス
599sage:2009/05/26(火) 18:12:49 ID:???
【OS名】CentOS 5.3 linux
【PHPのバージョン】php5.2
【連携ソフトウェア】qmail(sendmailコマンドは使用可能)
【質問内容】受信したメールに添付されている画像等を
      特定のフォルダへ投げるようにするにはどうすればいいでしょうか。
      .qmailに転送用のものを置けばいいとは思うのですが、どのようなものを置けばいいのか
      サンプルなどあれば教えてください。
600nobodyさん:2009/05/26(火) 18:31:35 ID:UQeZnrko
>>597
atpageとtok2で調べたのですが、atpageはアクセス拒否でtok2は8Mでした。 
601nobodyさん:2009/05/26(火) 19:30:24 ID:???
>>595
そこまで速度を求めるならmoduleにした方が良いと思う
602nobodyさん:2009/05/26(火) 20:56:23 ID:UQeZnrko
moduleとは標準関数やDLLみたいな物のことでしょうか。 無料サーバーでも導入可能ですか。
PHPを高速化させる部品があるみたいですがこれは導入出来ないと思いました。
603nobodyさん:2009/05/26(火) 21:03:05 ID:???
無料サーバーという時点で高速化なんて無理だよ。
ただでさえ他ユーザーとリソースの食い合いするんだから。
604nobodyさん:2009/05/26(火) 21:28:08 ID:???
>>599
|/usr/bin/php -q /example/example.php >& /dev/null
./Maildir/
とかやって example.php でなんとかする
605nobodyさん:2009/05/27(水) 00:14:56 ID:???
>582
そういう時は、「完成品」を見るのは微妙。
自分のコードを、どうやれば「完成品」に近づけられるのかが分からないからな。
「完成品」のどこがどういいのかも、実際に書き換えたりメンテしたりしないと分からない事が多い。

指導するにしても、おまいの現時点でのレベルが分からんから他人にはどうしようもないしな。
上手い人に自分のコードを渡して、考えている事を聞かせてもらいながら目の前で「美しく」書き換えてもらうのが一番分かりやすい。
…んだが、まあ難しい事が多いしなぁ。
606nobodyさん:2009/05/27(水) 00:31:02 ID:Cc/G0jS5
あの他人のコードを改良して自分の物にするのはアウトですか?
607nobodyさん:2009/05/27(水) 00:35:06 ID:???
うん
608605:2009/05/27(水) 00:55:02 ID:???
>606
できりゃ構わないけどな
MVC構造のフレームワーク使ってるのに何故かテンプレートにロジックが書いてある、とか、そういう事になるのがオチだと思う
使いまわす価値のあるコード作法ってだいたいデザインパターンという形で既に体系化されてるから、ある程度のレベル以上の奴はそっちを座学した方が早いしな
609nobodyさん:2009/05/27(水) 01:07:23 ID:???
>>582
きれいなコードを書くために心がけること

・関数名は分かりやすい名前を付ける。イミフな省略はしない。多少長くなってもキニシナイ。

・同様に変数名も分かりやすい名前を付ける。

・空行を多く入れてみる。
藤原博文さんの本だったかな?
フォントを小さく(5ptとか)して見て、コードが黒々してたら、たいてい読みづらい、って書かれてた気がする。

・一つの関数内のコードをダラダラと書かない。意味の単位で小分けする。
理想は、コメントや空行を含めても、スクロールせずに一つの関数のコードがみえること。最悪100行以内に押さえる。

・同じ処理の塊をいろんな箇所に書かない。極力、関数としてまとめる。
まとめすぎて、かえって分かりづらくなるかもしれないが、最初は気にせずガンガンまとめてしまう。そのうち常識の範囲内がどの程度かわかるようになる...はず

・フラグの多様は控える。気がつきゃ万国博覧会になっちゃうよ。

・トリッキーなことはしない。
有名どころでは、ループ抜けるのに例外使うとか
いずれは、そんなトッリキーな手段に頼らざるを得ないといけないかもしれないが、始めは完全禁止の気持ちで。



関数分けしていくと、呼び出しが深くなって遅くなるとか言われるかもしれないけど、そんなところがボトルネックになるのはまずないから、キニシナイ。
610nobodyさん:2009/05/27(水) 01:25:42 ID:vJelIhGL
綺麗なコードってコーディングルールの話?
単に見かけを綺麗にしたいならcode beautifierの類を使えば早い。
ttp://codeassembly.com/examples/beautifier.php
611nobodyさん:2009/05/27(水) 01:39:36 ID:???
>>610
ルールというような縛りではなく、ただの心がけ。

612nobodyさん:2009/05/27(水) 02:08:35 ID:Cc/G0jS5
>>608
丁寧な回答ありがとうございました
613nobodyさん:2009/05/27(水) 02:12:26 ID:???
関数名とか変数名がどうしても$hensuとかになっちゃうんですけど
英語も勉強するべきなんでしょうか
614nobodyさん:2009/05/27(水) 02:41:03 ID:???
>609
・変数への再代入の禁止
 原則、ある変数には一度しか値を代入しない。次に代入する時はケチケチ使い回さず新しい変数を用意する
 配列の合計を求める時など、何かをまとめる時だけは例外だけど
・多重ネストの回避
 ifのネストが深くなったら、if内の処理をごっそりそのまま関数に切り出す事をまず考える
 foreach、switchなども含め、どんな複雑な処理であっても、関数内のネストを一重だけにする事も可能
 特にswitchは、その部分を単独の関数として切り出すことを真っ先に考えるべき
・グローバル変数の禁止
 まずは、使う変数は全て関数の引数にする
 すると、同じ引数を取る関数群がいくつか見えてくる。これが、どこをクラス化するかを判断する一番安全な方法
・手続き的にではなく、宣言的に書く
 「Aに処理Xを加えて変数Bに、それに処理Yをして変数Cに」という思考を捨てる
 「CはBにYをしたもの」「BはAにXをしたもの」という順序で、つまり定義を記述する感じでプログラムを書く
 一時変数を同名の関数に置き換えていく感じで、一時変数を削っていくのが分かりやすい手順

>613
ローマ字より英単語のほうが読みやすいだろjk
まあ、そういうレベルじゃなく、$variableでも命名としては最低の部類に入るけどな
615nobodyさん:2009/05/27(水) 02:41:42 ID:???
マニュアル,入門書,良いオープンソースなどを見て学ぶ柔軟性が必要かと
616nobodyさん: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) {
 }
}
617nobodyさん:2009/05/27(水) 04:08:53 ID:???
一か月ぐらい前に書いたコード読み直してみると良いよ。
絶対悪態付きたくなるから、何が問題か分かる。
618nobodyさん:2009/05/27(水) 05:43:01 ID:???
>>614
・手続き的にではなく、宣言的に書く
 「Aに処理Xを加えて変数Bに、それに処理Yをして変数Cに」という思考を捨てる
 「CはBにYをしたもの」「BはAにXをしたもの」という順序で、つまり定義を記述する感じでプログラムを書く
 一時変数を同名の関数に置き換えていく感じで、一時変数を削っていくのが分かりやすい手順


$B=X($A);
$C=Y($B);
は分かるが、「CはBにYをしたもの」「BはAにXをしたもの」ってどういう事?
619nobodyさん:2009/05/27(水) 08:55:18 ID:???
書きたいように書けよ
型にハマったんじゃ新しいもの生み出せない ゾと
620nobodyさん:2009/05/27(水) 09:45:02 ID:???
>616
foreach($years as $eachYear){
foreach($month as $eachMonth)
}
621nobodyさん:2009/05/27(水) 09:47:36 ID:???
手が滑って途中で送信しちったが、まあ分かれ。
622nobodyさん: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は重複する事はありません。
623nobodyさん:2009/05/27(水) 22:15:30 ID:???
phase1.A.csvを読み込んで行単位にIDに紐付けたチェックボックスをつけつつ表示
phase2.postされたチェックボックスのID値を見てA.csvを読み込み該当の行を特定、B.csvを追記モードでopenして追記。A.csvから該当行を削除。

こんなもんか
624nobodyさん:2009/05/27(水) 22:17:41 ID:???
>>621
thx
確かにeachが良さげ。お陰ですっきりした。
625nobodyさん: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 だと値が渡らないという現象に見舞われてるのですが、
どうすれば解決するでしょうか。

サンプルソースです

(改行が多すぎるってエラーが出たので、次に続きます)
626625: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
627625:2009/05/28(木) 02:53:41 ID:PcD3hYBe
すいません、追加です。
先ほど、「通常のサイトから、SSLのサイトへ向けて」って書きましたけど、
同じSSLのサイト内でも同様にhiddenの値が渡りませんでした。

これはひょっとしたらスレ違いなのでしょうか。
628nobodyさん:2009/05/28(木) 03:03:25 ID:???
value'abcd'>

value='abcd'>
629nobodyさん:2009/05/28(木) 03:13:26 ID:???
心の底から脱力できる要因だなwww
630625:2009/05/28(木) 04:34:02 ID:PcD3hYBe
(´・ω・`)/

世の中、解決できない問題はないんだな

>>628 dクス
631nobodyさん:2009/05/28(木) 08:39:32 ID:???
世の中解決できない問題は多々あるがお前のはうっかりさん過ぎる
632nobodyさん:2009/05/28(木) 14:50:53 ID:rnletbDk
Web系プログラミングの雑誌で、みなさんが定期購読している雑誌ってなんですか?
お勧めがあったら情報共有しましょう。
ちなみに私は日経ソフトウェアとDB Magazineくらいです。
633nobodyさん:2009/05/28(木) 14:53:59 ID:???
それらのどの辺がお勧めですか?
634nobodyさん:2009/05/28(木) 14:58:50 ID:???
DB Magazineとか高いし毎号買うほどのものでも・・
635nobodyさん:2009/05/28(木) 18:37:52 ID:a/iG0y0p
www.hoge.jp/hoge.phpでドキュメントルートの外の画像を表示したい時、
どうしたらいいですか?
zendFWでアプリケーション領域に蓄積されてる画像を、zendFWとは別に単独で
動いてるphpの中で動かしたいんですが…
636nobodyさん:2009/05/28(木) 19:22:36 ID:???
絶対パスで指定すればいいのでは?
637nobodyさん:2009/05/28(木) 19:30:16 ID:???
>>635
ZFにある画像データをstreamするphpを用意すれば良いだけなんじゃないの?
638nobodyさん:2009/05/28(木) 19:31:06 ID:???
>>635
hogeだのhageだのは……。
example.com
が例文用にが予約されてる。
639nobodyさん: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;
}
のような事はできないんでしょうか?
640nobodyさん:2009/05/28(木) 20:18:24 ID:???
フラグを立てる
641nobodyさん:2009/05/28(木) 20:20:17 ID:???
XXXで止めたいcaseのところでフラグでも立てて判定すれば良いんじゃねーの
642nobodyさん:2009/05/28(木) 20:30:56 ID:a/iG0y0p
>>637
おおー
それが正解っぽいですね! どうもありがとう
他の方もありがとう
643nobodyさん:2009/05/28(木) 20:41:12 ID:pePXJ68I
買うほどのものでもなくね?
本とwebで十分。
644nobodyさん:2009/05/28(木) 21:25:31 ID:cUediPPl
>>640-641
ありがとうございました。「フラグを立てる」の意味が解らなかったのでぐぐったけど
意外と少なかった気がしますが試行錯誤の末、解決できました。まず
$flag = 0;を宣言、caseのケツに$flag = 1;を書いておいてXXXの部分に
if($break){
exit();}
を書いたらうまく行きました。この場合の「フラグを立てる」というのは
こうした事をさすのでしょうか?
重ね重ねくだ質ですがお願いします。
645nobodyさん:2009/05/28(木) 21:26:46 ID:cUediPPl
>>644
訂正・・if($break){ではなくてif($flag){ でした。
646nobodyさん:2009/05/28(木) 21:27:07 ID:???
$breakなんて変数初めて出てきてるんじゃ?
647nobodyさん:2009/05/28(木) 21:27:54 ID:???
yes
648nobodyさん:2009/05/28(木) 21:31:52 ID:???
>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) ||

よく見るソースコードで書いてあるんだけど
これって誰得なんですかぁ?

650nobodyさん:2009/05/28(木) 22:37:20 ID:???
その次からの処理に答えが書いてあるんじゃないかな
651馬鹿ですみません><!:2009/05/28(木) 22:39:15 ID:ib08ur5F
次の処理はdie('Disallowed request variable found. Exited.');
です。
652nobodyさん:2009/05/28(木) 22:39:38 ID:???
>>649
なんだその馬鹿丸出しのソースは…
そんなの見るな馬鹿が移る
公式に乗ってるようなソースで勉強しろ
653nobodyさん:2009/05/28(木) 22:42:52 ID:???
>>651
思わずワロタw
654nobodyさん:2009/05/28(木) 22:43:33 ID:???
Disallowedって…
655馬鹿ですみません><!:2009/05/28(木) 22:43:52 ID:ib08ur5F
グローバル変数の添え字が'_POST'だと駄目ってことなのぉ?

656馬鹿ですみません><!:2009/05/28(木) 22:49:01 ID:ib08ur5F
みんなぁググッテル・・・

俺分からないぁ〜馬鹿だから・・・

PHPer
657nobodyさん:2009/05/28(木) 22:49:07 ID:???
とりあえずこれでも読んでおけ
ttp://php.benscom.com/manual/ja/language.variables.superglobals.php
658nobodyさん:2009/05/28(木) 22:53:56 ID:???
array_keyとかあまり使わない関数だから何やってるんだろうと真面目に読んでみたけど
何がしたいのかわけわからんw
659nobodyさん:2009/05/28(木) 22:55:34 ID:???
>>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

誰得なの? まじで。。。
662nobodyさん:2009/05/28(木) 22:58:31 ID:???
ああ、何となく意図するものがわかってきた……
けどそれって、んな大層に書くようなことかなあ。

窓硝子は防犯上危険だといって、でかい南京錠をかけてるようだ。
まず先に窓硝子を止めればいいのに。
663nobodyさん:2009/05/28(木) 23:00:20 ID:???
はい次の人
664nobodyさん:2009/05/28(木) 23:19:07 ID:???
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
666nobodyさん:2009/05/28(木) 23:38:45 ID:???
>>623
流れ的にはそのような処理かと思います
色々やってみたのですがなかなかうまくいきません
どなたか例文でもいただけないでしょうか?
667nobodyさん:2009/05/28(木) 23:39:41 ID:???
むしろその色々が何故駄目なのか、考えることに価値があるんだよ。
668nobodyさん:2009/05/28(木) 23:41:59 ID:???
まず色々やってみたソースを貼るかうpれ
話はそれからだ
669nobodyさん:2009/05/28(木) 23:49:41 ID:???
>>666
>>623を実装することすらできないなら根本的に向いて無いんじゃね?
670nobodyさん:2009/05/28(木) 23:54:08 ID:???
>666
phase1.A.csvを読み込んで
(普通に表示)
行単位にIDに紐付けたチェックボックスをつけつつ表示
phase2.postされたチェックボックスのID値を見て
A.csvを読み込み
該当の行を特定
B.csvを追記モードでopenして
追記。
A.csvから該当行を削除。

どこが分からないんだ?
671nobodyさん:2009/05/29(金) 00:27:40 ID:???
どーせ課題か何かの丸投げなんだろうな
672nobodyさん:2009/05/29(金) 14:30:15 ID:???
>>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); ?>
これで我慢しとけ。
673nobodyさん:2009/05/29(金) 22:49:20 ID:sUbabdXe
仕事でPHPを使う場合、仕様書はどんな形式のを渡されるんですか?
UMLとかを使うことが多いんでしょうか?
674nobodyさん:2009/05/29(金) 22:56:15 ID:???
仕様書って何それ?おいしいの?
675nobodyさん:2009/05/29(金) 22:56:29 ID:???
「なんかこう、グァーって感じでお願い」
とかかな…
676nobodyさん:2009/05/29(金) 22:59:20 ID:???
「あー、ホラきみ、アレ知ってるよね。そうそうアレアレ。あんな感じで一つ頼むよ。
 簡単でしょ?」
とかもあるな。
677nobodyさん:2009/05/30(土) 08:08:45 ID:???
>>673
渡されるのは要件の箇条書きとかイメージシートで、なぜか仕様書は作ったやつが書くことが多い世にも不思議な物語。
678nobodyさん:2009/05/30(土) 08:28:54 ID:???
すべては俺の頭の中にある
679nobodyさん:2009/05/30(土) 09:16:41 ID:???
>>677が現実だな。
どちらかというと仕様を忘れないための仕様書になる。
家建てた後に設計書を作るイメージだなwwww
680nobodyさん:2009/06/01(月) 09:21:13 ID:Q4RGmDnB
転送されたメールを本文と添付に分けて保存したいんですが
転送されてきたメールはどこに格納されるんでしょうか?
サーバーがqmailだったので.qmailでphpに飛ばす事は出来るようになったんですが
飛ばされた時にどこに格納されているのかわからないので、どうやって取り出して分割すればよいのかがわかりません。
そういったことをやってるサンプルとかあれば教えてもらえないでしょうか。
681nobodyさん:2009/06/01(月) 09:53:45 ID:???
>>680
どこに格納とかじゃなくて、qmailからphpに飛ばせてると言うことは、
標準入力(stdin)から受け取れば良い。

file_get_contents("php://stdin");で受け取り
Mail_mimeDecodeとかで本文・添付を分ければ良いと思う。
682681:2009/06/01(月) 09:58:26 ID:Q4RGmDnB
>>681
サンクス。
php://stdin ってのを知らなかった。
ちょっとやってみます。
683nobodyさん:2009/06/01(月) 10:45:30 ID:J3ZG9zzj
サーバーサイドでCookieが有効か確認する方法はないですか?
$_COOKIE['cookie'] = true;
if($_COOKIE['cookie'] !== true) {
   die("Cookieは無効です。");
}

これでCookieが無効かどうか判別しようとしたのですが、CookieをOFFにしてもtrueになります
684nobodyさん:2009/06/01(月) 10:58:47 ID:4hjBfWfC
質問です。

PHP5、Windows XP Proにて、コマンドラインアプリを作ってます。

動的にフォルダ名を指定して、エクスプローラー(またはその他のファイラー)で開こうとしています。
コンソール画面上・プログラム上ではなく、エクスプローラーに、特定フォルダを開かせるにはどうすればよいでしょうか?
685nobodyさん:2009/06/01(月) 11:02:33 ID:???
まず先にsetcookie()などで値を送信して、次に呼ばれたphp内で
if(isset($_COOKIE['hoge']))
みたいに確認する
686nobodyさん:2009/06/01(月) 11:17:45 ID:???
>>684
phpからエクスプローラをどう呼んでるのか知らんが

explorer.exe <フォルダのpath>

じゃダメなん?
687nobodyさん:2009/06/01(月) 12:14:45 ID:???
>>686
system('explorer C:\');

これでいけました!

systemとかコマンドラインオプション渡せばいいことはわかっていたのですが、
どうも自分の使っていたファイラーだとコマンドラインオプションが違うようで、
つまらないところではまってしまってました・・・。

ありがとうございました。
688nobodyさん:2009/06/01(月) 12:39:59 ID:Sqhg3GlC
$moji = "あいうえお>>21かきくけこ>>12さしすせそ>>112たちつ>>1てと";
みたいな文字列があったとき、>>数字のペアだけを抜き出して配列に格納できるような関数はありますでしょうか?
explodeみたいなやつで、かつ正規表現でマッチできるような感じです。
preg_matchである程度対応できたのですが、
$mojiは可変で、>>数字があったりなかったり、これよりも増えたりして、
さらに>>数字を抜き出す数もこちらで指定したときにpreg_matchでは難しかったので、
とりあえず>>数字ペアだけでも全て抜きだせればいいなぁと思いました。
抜き出す方法、または便利な関数があれば教えてくださいよろしくお願いします。
689nobodyさん:2009/06/01(月) 12:40:54 ID:J3ZG9zzj
>>688
preg_matchで余裕
お前の書き方が悪いだけ
690nobodyさん:2009/06/01(月) 13:01:18 ID:Sqhg3GlC
自己解決しました
preg_match_allで思い通りの挙動になりました。
691nobodyさん: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
692nobodyさん:2009/06/01(月) 13:48:56 ID:???
自動アフィブログでも作る気か
693nobodyさん:2009/06/01(月) 19:49:55 ID:???
質問です。
ある配列変数が、メモリ上で使用しているバイト数を調べるにはどうすればいいでしょうか?
694nobodyさん:2009/06/01(月) 19:54:46 ID:???
ダンプすりゃ出て来るんじゃね?
695nobodyさん:2009/06/02(火) 07:12:19 ID:???
2chでスレを立てるとスレのURLにはユニークなタイムスタンプが付いてるけど
これって複数の人が同時にスレを作成した場合どういう処理をしてるのでしょうか?
早勝ちでずらしてるのかな?
その場合、極端な話1000人の人が同時にスレを立てたら1000回待ちが入ることになりますよね。
696nobodyさん:2009/06/02(火) 07:23:52 ID:???
先に立てた者が勝ち、つまりファイルロック
697nobodyさん:2009/06/02(火) 07:24:01 ID:???
やってみれば?
698nobodyさん:2009/06/02(火) 09:21:15 ID:w20GGpoy
【OS名】CentOS5.3
【PHPのバージョン】php5.26
【質問内容】 OS上でpingやdigを叩いて結果を表示できますが、PHPからコマンドを叩いて
結果を受け取るにはどの関数を使用すればいいですか?
699nobodyさん:2009/06/02(火) 09:35:45 ID:???
exec,systemなど
700nobodyさん:2009/06/02(火) 13:42:11 ID:???
複数プロセスから同時にdatが作られるからスレタイが適当に混ざるよ
701nobodyさん:2009/06/02(火) 14:10:47 ID:???
おまえは何をいってるんだ。
702nobodyさん: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は
こんな感じです。もっとスマートなやり方あったら教えてください。
703nobodyさん:2009/06/02(火) 19:07:11 ID:???
>>702
COUNT(*)
704nobodyさん: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のようです。よろしくお願いします。
705nobodyさん:2009/06/02(火) 21:13:15 ID:???
変数をわざわざ"$mad"みたいに囲う必要ないと思うが
706nobodyさん:2009/06/02(火) 22:59:52 ID:???
>>704
$messageの末尾にLF
707nobodyさん: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の上のディレクトリに保存するのがわかりません。どうしたら??
すみませんがアドバイスお願いします。
708nobodyさん:2009/06/03(水) 05:55:25 ID:???
絶対パスで書けばいいのでは?
相対パス「..」でもいいけど
709nobodyさん:2009/06/03(水) 10:12:45 ID:???
>>708
ありがとうございました
普通に、/www/html/uploader.phpから../で /www/htmlにアクセスできました。
ですが、絶対パスで指定とはどうするんでしょうか?
試しに
/../を指定してみましたが上手く行かないです。
710nobodyさん:2009/06/03(水) 10:33:01 ID:???
/www/Zend/hozonImg/
711nobodyさん: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---
712nobodyさん:2009/06/03(水) 11:11:55 ID:I103Ja+X
そもそもお前の言う絶対パスってなんなんだ?
713nobodyさん:2009/06/03(水) 11:13:28 ID:???
そりゃ絶対パスが /www/Zend/ なら /www/Zend/ で指定しなきゃダメだろ。
なんで /../Zend/ なんて愉快な指定になるんだ?
714nobodyさん:2009/06/03(水) 11:20:25 ID:???
>>711
copy($file, "/www/Zend/hozonImg/");
でやってみなって
715nobodyさん:2009/06/03(水) 11:38:39 ID:enMSGl6d
ぶっちゃけPHPでSJISの「ソ」とか「表」とかを文末に置いてもエラーがでない仕様になる予定は無いのですか?
もうSJISは無理なの?
完全に終わったの?

EUCやUnicodeは文字数のわりにバイト数が多いのでSJISでなんとかしてほしい。
716nobodyさん:2009/06/03(水) 11:39:39 ID:I103Ja+X
EUC-JPってマルチバイトは2バイトじゃなかったっけ?
717nobodyさん:2009/06/03(水) 11:43:59 ID:???
3byteもある、がそれを理由にsjisにこだわる奴も珍しいなぁ
718nobodyさん:2009/06/03(水) 11:54:34 ID:???
エラーを出すのはやりかたがまずいだけなのに他人に文句を言うのはどうなんだろ
719711: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 と同義ですよね??
いままで酷い勘違いを延々して来たんだろか?
720nobodyさん:2009/06/03(水) 13:53:01 ID:enMSGl6d
"表 ";とか
"表\";とか
めんどくさくてやってらんないよ。
721nobodyさん:2009/06/03(水) 13:55:34 ID:???
>>719
>あと、「絶対パス」って、documentRootのディレクトリを/とした場合のパスで

違う。それはあくまでブラウザから見た絶対パス。
phpで扱うのは「サーバー上」の絶対(Full)パス。 wwwディレクトリのFullパスが違うんじゃない?
722nobodyさん:2009/06/03(水) 13:58:00 ID:???
>>719
「No such file or directory」ってそんなディレクトリ無いって言われるんじゃん
723nobodyさん:2009/06/03(水) 14:04:57 ID:???
>>719
documentRoot + /www/Zend が本来の絶対パスでしょ。
phpinfoとかでSCRIPT_FILENAME見てみ。
724nobodyさん:2009/06/03(水) 14:12:50 ID:???
素人がZF使うんじゃねぇw
生PHPで勉強しろ。
725711:2009/06/03(水) 14:31:15 ID:???
解決〜!
ほんとにありがとうございます。
>phpで扱うのは「サーバー上」の絶対(Full)パス。
>documentRoot + /www/Zend が本来の絶対パスでしょ。

知らなかったw よく知らずにいままでやってこれたなぁ、変な感心してます
ほんと助かりました。すっきりした! ありがとう、みなさん
726nobodyさん:2009/06/03(水) 14:34:20 ID:???
見てはいけない暗部を見た気がする
727nobodyさん:2009/06/03(水) 14:49:50 ID:???
documentRootの下にwwwってどういうこっちゃ?
728nobodyさん:2009/06/03(水) 14:52:55 ID:???
例えるなら、実際には /var/www/html がDocumentRootで、本来は /var/www/Zend
729nobodyさん:2009/06/03(水) 14:56:04 ID:???
途中で送信しちまった。

例えるなら、実際には /var/www/html がDocumentRootで、今まで /var/www/Zend を相対で指定してたのを
絶対パスにしようとして何を思ったか /www/Zend を指定してたってことでしょ。
730nobodyさん:2009/06/03(水) 14:58:29 ID:???
711はDocumentRoot [/var/www/html] の下に [/www/Zend] を作成してZFを入れていたってこと?

てかZendディレクトリってZF自体のコンポーネントが入っているディレクトリ?
そこに画像保存フォルダを作成?
ワケワカメ
731nobodyさん:2009/06/03(水) 14:59:22 ID:???
>>729
「documentRoot + /www/Zend」で解決したって言ってるんだから違うんでないの?
732nobodyさん:2009/06/03(水) 15:01:32 ID:???
しらねーよ。単にヒントになったってだけで実際にその通りやって解決したかもわかんねーし。
俺は>>719見て>>729書いただけだ。
733nobodyさん:2009/06/03(水) 15:10:32 ID:???
いやその下の725くらい見ろよw
734nobodyさん:2009/06/03(水) 15:12:47 ID:???
だからな、>>725見たって引用されてるってだけで「実際にその通りにして解決したかどうか」
なんてわかんねーだろつってんの。アンカーも貼れない素人は半年ROMってろヴォケ
735nobodyさん:2009/06/03(水) 15:18:25 ID:uN/QnhGZ
PHPから別サーバーにHTTPリクエストを投げたいのですが
その際、レスポンスを待たずに、先のスクリプトを実行したいと思います。
レスポンスは必要なくなるべく早く先の処理を続けたいのです。

そんな関数はありますか?

javascriptで自鯖にあるPHPをAjaxで呼んで、そのPHPで
file_get_contents('~~);
すれば、ページをすぐ返せそうなきはしますが、PHPだけで出来たら楽かなとおもいまして
また、その方法だとページを閉じるタイミングによって、起動しない確立も少しはあるかなと。

お願いします。
736nobodyさん:2009/06/03(水) 15:27:53 ID:???
タシロ砲か
737nobodyさん:2009/06/03(水) 15:40:17 ID:???
>>735
接続するために最初のレスポンスは受け取らないといけんと思うけど、
fsockopenとかでソケット通信するのが速度的に速いんじゃない?
738nobodyくん:2009/06/03(水) 15:44:21 ID:YYq96a9O
PHPで作られたオープンソースなどを読解しているのですが
どこで関数が定義されているか調べながらお菓子を食べているんです。

お菓子を集中して食べるためにはどうしても'どこで'関数が定義されているか
探さない方法ってあると思うんですけど

みなさん何か方法があれば教えてほしいものです。
739nobodyさん:2009/06/03(水) 15:59:16 ID:???
おかしを食べると
あっ ここおかしいな
なるほど おかしい理由が分かったなどのメリットがある
740nobodyさん:2009/06/03(水) 16:01:19 ID:???
grepでいいじゃん
741nobodyくん:2009/06/03(水) 16:05:27 ID:YYq96a9O
自分・・・かなり怒っています。

742nobodyさん:2009/06/03(水) 16:09:17 ID:???
grepでtagファイル作ってエディタでジャンプ
それも面倒ならEclipseやNetBeansにプラグインでも入れて使えばいいと思うよ。
743nobodyさん:2009/06/03(水) 16:18:40 ID:???
>>734
おめー自閉症の疑いがあるぞ
普通は引用して解決したとか知らなかったとか書いている場合はそれが解決要因だったというニュアンスになるんだよ
日本人なら行間を読もうぜ。
744nobodyさん:2009/06/03(水) 16:21:20 ID:???
>>738
メモ帳で作ってるカス発見。
745nobodyさん:2009/06/03(水) 16:30:31 ID:???
>>743
お前ももう少し行間を読んだほうがいいw
>>734が争ってるのはそこじゃないw
746nobodyさん: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'にしてみたけどやっぱりうまくいかなくてどうしていいものやら……誰かわかる人いたらお願いします
747734:2009/06/03(水) 16:37:02 ID:???
>>743
もう俺が自閉症って事で良いからつまんねー話題いつまでも引っ張るなヴォケ
あと今後は気軽に自閉症の疑いとか口走るんじゃねーよヴォケ
748nobodyさん:2009/06/03(水) 16:37:18 ID:???
PDT
749nobodyさん:2009/06/03(水) 16:40:55 ID:???
>>746
むしろ空気を呼んだといえるw
ちなみに答えは「$$1」か「\${1}」な。
750nobodyさん: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
751nobodyさん:2009/06/03(水) 17:01:08 ID:???
$val = preg_replace("/_BBS_(.+?)_/", "aaaaa($1)", $val);
752nobodyさん:2009/06/03(水) 17:06:49 ID:isB4yDuL
>>751
それもやってみたけどaaaaaが実行されずに
 $val = "_BBS_aaaaa(hoge)_\.xxx.ne.jp";
となってしまうんだ
753nobodyさん:2009/06/03(水) 17:08:41 ID:???
preg_replace_callback

perlとは違うのだよperlとは
754nobodyさん:2009/06/03(水) 17:09:52 ID:???
悪ぃ、元をよく読んでなかった
それだったら>>753
755nobodyさん:2009/06/03(水) 17:16:08 ID:isB4yDuL
なるほど、それ専用の関数があったのか
とりあえずやってみるわ
みんなありがとう
756nobodyさん:2009/06/03(水) 17:21:16 ID:???
>>749 イ`
757nobodyさん:2009/06/03(水) 17:30:30 ID:???
while(true){
if( >>749が反省するまで) break;
echo "良く読んで回答しろ!";
}
758nobodyさん:2009/06/03(水) 18:47:27 ID:???
breakでwhileを抜けるのって何か気持ち悪く感じるんだよな。
759nobodyさん: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();
?>
760nobodyさん:2009/06/03(水) 19:04:06 ID:???
echo $_SESSION['test01'];//ここでは表示される
echo $_SESSION['s01'];//ここでは表示されない

なんでキーが違うのさ
761nobodyさん:2009/06/03(水) 19:07:08 ID:2UFTgxS5
>>760
あ、すいません、タイプミスです。
実際はキーは同じものを使っています。
762nobodyさん:2009/06/03(水) 20:12:34 ID:???
格納した同スクリプトでは表示されないはずだぞ
763nobodyさん: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使えないんじゃない?
764nobodyさん: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();
?>

オレならこうするけど・・・
765759:2009/06/04(木) 03:06:56 ID:DxUnkjaQ
>>763
勉強になりました。
>>764
そのように書けば>>704も解決できました。fopenを使う手があったんですね。
レスくれた方、ありがとうございました。
766nobodyさん:2009/06/04(木) 08:09:44 ID:f7spCjC/
>>765
がんばってね〜
767nobodyさん:2009/06/04(木) 11:51:01 ID:???
質問です。

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を使っても特に変わりません。
768nobodyさん:2009/06/04(木) 11:52:21 ID:???
また、同じコマンドを、「ファイル名を指定して実行」すれば、期待通りの動作をしてくれます。
769nobodyさん:2009/06/04(木) 12:01:07 ID:???
phpはどうやって実行してるの?
exec呼んだあとタスクマネージャのプロセスのとこには無いか?
もしhttpd経由で実行していて実行ユーザーが自分以外だったら
Httpdのサービスのプロパティのログオンのところで
「デスクトップとの対話をサービスに許可」にチェック入れたらどうなる?
↑これは確認のためにやるので、恒久的にはやらんほうがいいけど
770nobodyさん:2009/06/04(木) 12:37:16 ID:???
>>767
cmd.exeをPHPインストールしたフォルダにコピーして置いとけ
771nobodyさん:2009/06/04(木) 15:20:05 ID:???
>>769
httpd経由でなく、コンソール上からの起動です。

PHPスクリプトと同じディレクトリに.batファイルを置いて、

php WorkDir.php

としています。
もちろん、パスは通しているので、スクリプト自体はちゃんと起動しています。

>>770
cmd.exeとはMS-DOSのことですよね?
php.exeのディレクトリにコピーしましたが、動作変わりませんでした。
772nobodyさん:2009/06/04(木) 15:29:35 ID:???
セーフモードとスペース入りの引数で""でくくる必要があるかを調べたり試してみて
773nobodyさん:2009/06/04(木) 17:17:32 ID:F3Dggw/W
utf16のコードから文字の実体に変換するには
pack('H*', $code);

で変換できるのですが、
この方法だと、
JIS X 0213の一部の漢字が変更できません。

たとえば、
2A6B2 (「月」へんに「亀」という字です)
を変換しようとすると、うまくいきません

どうにかして変換する方法はないでしょうか?

よろしくお願いします。
774nobodyさん:2009/06/04(木) 18:00:27 ID:U8QiT/yT
PHP勉強し始めて2日目です。

$this->arrJob = $masterData->getMasterData("mtb_job");

とかのソースの

->の意味がよくわかりません。
どなたかお教えいただけたら幸いです。
775nobodyさん:2009/06/04(木) 18:09:31 ID:???
776nobodyさん:2009/06/04(木) 20:39:13 ID:???
Oracleのクォート処理をしてくれる関数、もしくは静的メソッドないですか?
もちろん信頼できるので。
実際に接続するわけではないので、MDB2で捨て接続作るのもアホらしいし・・・。
777nobodyさん:2009/06/04(木) 20:54:19 ID:???
取り急ぎこんなの作ってみたけどダメなんだろうか?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;
}
}
778nobodyさん:2009/06/04(木) 20:55:13 ID:???
インデントしてみる。
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;
    }
}
779nobodyさん:2009/06/04(木) 21:35:00 ID:???
utf16よく知らんけど、775読んで書いてみた。

$code = '2A6B2';
$vd = hexdec($code) - 0x10000;
$w1 = ($vd >> 10) | 0xD800;
$w2 = ($vd & 0x3FF) | 0xDC00;
echo pack('n*', $w1, $w2);
780nobodyさん:2009/06/04(木) 21:36:05 ID:ygVccNwT
質問なのですが
レイアウトの都合で
ポストされた文字を半角で入れた場合は20文字で、全角で入れた場合は10文字に制限したい。

もし全角と半角が混合されていた場合、それに合わせて文字数を制限したいんです。

全角が1文字入った場合は半角は18文字、というようにしたいのです。

今はループで一文字づつ調べて半角全角文字数を数えているのですが
もっと楽な方法ありませんか?
781nobodyさん:2009/06/04(木) 21:47:26 ID:???
782nobodyさん:2009/06/04(木) 21:47:30 ID:???
>>780
mb_strlenでいいのでは?
783nobodyさん:2009/06/04(木) 22:07:17 ID:EBVfDvxX
PHPのプログラムでwebサーバと通信させたいと思っています。
(製作するプログラムはクライアント側ということになります)

ある(やや大きめの)htmlファイルをダウンロードし、そのファイルの
中盤くらいに書いてあるデータを必要としているのですが、
通信相手のサーバに負担をかけないようにいくつかの条件を設定しました。

・gzipエンコーディングに対応
・htmlファイルのダウンロードとその解析を並列して行い、
 必要となるデータが書かれている部分をダウンロードし終わったら転送を打ち切る

後者だけならfsockopenで簡単にできるのですが、
前者にも対応するとなるとちょっと簡単なやり方が思いつきませんでした。

cURL拡張を利用して製作した実験用コードを次のレスに書き込みます。
784783: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);
}
}
785783:2009/06/04(木) 22:22:44 ID:EBVfDvxX
ループ内のechoで今現在の通信内容の最後の10文字を切り出しています。
(全部出力したら画面が訳の分からないことになるので…)
このコードでとりあえず目的は達成することができました。


長くなりましたがここから質問とさせて頂きます。
もっとスマートなやり方は無いものでしょうか?
言い訳のつもりではないのですが私はなにぶん初心者でして
皆さんにとって常識であることが分かっていないのです
そんなめんどくさい事やらんでもこれで一発じゃん
というコードがもしあるのでしたらお教えいただけると幸いです
786nobodyさん:2009/06/04(木) 22:22:58 ID:???
gzopenじゃだめなの?
787783: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";
788783:2009/06/04(木) 22:48:51 ID:EBVfDvxX
>>786
gzopenって通信にも使えるんでしょうか?
まずそこが分かっていません
第一引数がファイル名だし、できなそうに見えるんですがどうなんでしょうか
789nobodyさん:2009/06/04(木) 22:56:40 ID:???
鯖管として言わせて貰うと、HTMLを全部落とそうが途中まで落とそうが、たいした差はつかんからどうでもいい。
むしろダラダラセッションを張りっぱなしにされると面倒だ。解析とか後にしてとっとと切ってくれ。

サーバのためを思うなら
・適当にsleep()して間隔をあけてダウンロードする。curl_multi()で大量にコネクション張って並列DLとか最悪
・複数落とすならKeep-Aliveでセッションを張る。技術的詳細はぐぐれ。これだけでサーバへの負荷はかなり落ちる
790nobodyさん:2009/06/04(木) 23:23:57 ID:???
>>788
できます
791nobodyさん: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;

792nobodyさん:2009/06/05(金) 00:05:13 ID:???
>>791
そのコード、UTF-8だと恐らくコケルよ。
793nobodyさん:2009/06/05(金) 00:10:20 ID:NOP8aSiI
>>792
適当に書いたけど、どの変がまずかった?w

UTFで試して特に問題なかったんだけど
794nobodyさん:2009/06/05(金) 00:20:51 ID:???
[aaああ]全角0半角6
795nobodyさん:2009/06/05(金) 00:22:38 ID:???
>>793
UTF-8は、全角が3バイトとかだよ。
796nobodyさん:2009/06/05(金) 00:26:47 ID:???
>793
こんなもんは常識だと思うのだが。UTF-8には2バイトより大きい文字が多数存在する。
漢字の大半は3バイトだし、特殊な一部文字は4バイト。
797nobodyさん:2009/06/05(金) 00:31:57 ID:???
UTF8は全角が3バイトなんじゃなくて文字が1バイト〜5バイトのどれか
798783:2009/06/05(金) 00:37:17 ID:fALDRgQl
>>789
>むしろダラダラセッションを張りっぱなしにされると面倒だ。解析とか後にしてとっとと切ってくれ。
これはもう完全に実装後のチューニングの後考えるべき問題で
手法自体を否定する根拠にはならないと思います

>複数落とすならKeep-Aliveでセッションを張る。
今回は一つしかファイルを必要としないのでkeep-aliveは必要としないのですが
それはそれとして個人的な意見を言うとIE8もFF3もRFCなんか無視して
サーバ当たりの接続数を増やしている昨今 一度に3桁のファイルを落とす
なんて事がない限りもうkeep-aliveやHTTPパイプライニングにこだわる必要は無いと思います

>>790
ヒントください
799nobodyさん:2009/06/05(金) 00:49:56 ID:???
>>798
マニュアル
800nobodyさん:2009/06/05(金) 00:59:34 ID:NOP8aSiI
EUC-JPにしたらええの?
801nobodyさん:2009/06/05(金) 01:50:06 ID:???
>>798
http://jp2.php.net/manual/ja/function.gzopen.php

user note になんか書いてあるけど、これとは違うかな
802783:2009/06/05(金) 02:22:20 ID:fALDRgQl
>>801
ありがとうございます
勉強になりました

ただこの手法、今一つやりたい事と噛み合わない気がするので
ちょっと調べてみます
803nobodyさん: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 )というように
指定できたら、と思います。
そういった方法はありますでしょうか、またそれに取って代わる関数など
方法があればよろしくお願いします。
804nobodyさん:2009/06/05(金) 06:57:52 ID:???
SPLが使える環境ならSplFileObject->seek($line_pos)
805nobodyさん:2009/06/05(金) 07:05:34 ID:iw3Rl46Q
>>804
なるほど、少しぐぐってみました
こんな便利なものがあったとは
ありがとうございました。
806nobodyさん:2009/06/05(金) 08:00:41 ID:???
curlにせよスレッドにせよ、「複数コンテンツを並列に取得」する場合だけ「クライアントの処理」が早くなる。対向サーバそれぞれの負荷とは関係が無い
クライアント側でも単一ソースを取得するだけなら意味が無いというか、空回りしてるwhileが無駄

zlibは圧縮ストリームの終了フラグを見ているはずなので、そのコードではコンテンツが全て取得されてから処理されているか圧縮転送されていないだろう
パケットを拾ったりベンチマークして確認してみたほうがいいと思う

基本的にストリーム圧縮はチャンクごとに展開できないので平行解析は両立しない。適切なほうを選ぶのがいいのでは

関係ないが接続数が多い「から」Keepaliveが重要になる
こだわれよ
807nobodyさん:2009/06/05(金) 10:42:13 ID:???
cURLは各コネクションに割り込めるわけじゃないからね。
帯域をケチりたいなら2ch伝統のRange + Deflateでしょw
808803: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
809nobodyさん:2009/06/05(金) 12:35:03 ID:???
そのseekって行指定できるの?
というか固定長でも無い限り普通に150回分の空回しするほうが早いと思うんだけど。
810nobodyさん:2009/06/05(金) 12:43:56 ID:iw3Rl46Q
>>809
一応最高で500回くらいの空回しを考えているのですが、
そのまま空回ししておくほうがよいですかね、
今のところは空回しでやる方向でいこうと思います。
ありがとうございました。
811783: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バイトずつ読み込み、
一秒おきに標準出力に吐き出します
812783: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);
}
}
813783: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
というわけでできます
サーバー側が平文の出力を全部バッファしてから圧縮するような実装だと
無意味ですけどね
814783:2009/06/05(金) 14:13:44 ID:fALDRgQl
>>807
curl multiだと終了前にcurl_multi_getcontentで部分取得できます

2ちゃんに関していうとrangeで部分取得すると
圧縮せずに送ってくるのであんまり意味無いんですよね
これが一般的なサーバの実装なのかは分かりかねるんですが

range+無圧縮が全体+圧縮より効率的に働くのは
rangeの範囲を相当限定できるようなケースだけだと思います

余談ですがそもそも2ちゃんのdatファイルは最大保持期間5秒とされているので
(あぼーん対策?)
一般的な2ちゃんブラウザで行われてるrangeで新着分を継ぎ足していく
手法は不適切だと思うんですよねー
815nobodyさん:2009/06/05(金) 15:28:12 ID:???
PHPスクリプト内でSQL文を書くとき、可読性を上げるための工夫ってしていますか?

私はこんな感じです。
$sql = "SELECT             ".
       "    article_id,    ".
       "    subject,       ".
       "    name,          ".
       "    mail,          ".
       "    url,           ".
       "    comment        ".
       "FROM               ".
       "    articles       ".
       "WHERE              ".
       "    article_id = 1 ".
       "AND                ".
       "    del_flg    < 0 ";

(等角フォントのエディタにはればうまくいくはず)
816nobodyさん:2009/06/05(金) 15:29:25 ID:???
やり過ぎだろJK
817nobodyさん:2009/06/05(金) 15:47:27 ID:???
そういう書き方するならヒアドキュメント使うかな
818nobodyさん:2009/06/05(金) 15:51:40 ID:???
俺は

$sql = "SELECT a, b, c, d, e
FROM hoge
LEFT JOIN hage USING (h_id)
WHERE foo = :foo
AND bar = :bar"

みたいな感じでやってるよ
もしくはオブジェクトのメソッドチェーンとかでもいいんでない?
819nobodyさん:2009/06/05(金) 15:52:36 ID:???
ってスペース全部消えた

$sql = "SELECT a, b, c, d, e
       FROM hoge
         LEFT JOIN hage USING (h_id)
     WHERE foo = :foo
       AND bar = :bar";
820nobodyさん:2009/06/05(金) 16:56:40 ID:qGPfEtmY
チンポ
821nobodyさん:2009/06/05(金) 18:27:00 ID:???
>>813
いや、目的に対して何の検証になってないんだが・・・
バイト数からすると転送コーディングのchunked dataサイズだな
まあ予想通りだ
822nobodyさん:2009/06/05(金) 18:34:04 ID:???
>>819
俺もそんな感じだけどログが見づらくならない?
823nobodyさん:2009/06/05(金) 18:35:04 ID:???
PEARのMDB2+PostgreSql8.3.7で開発してるんですが、
テーブルのID(Serial型)へのInsertがうまくいきません。
autoExecuteメソッドに、
$values = array(
//'id'(Serial型なので書かない)
'clm1' => 'text1',
'clm2' => 'text2'
);
こんな感じでデータをセットしていますが、何故かclm1の値が0で
挿入されてしまいidフィールドのシーケンスもインクリメントされません。
何か対処方法があるのでしょうか?

824nobodyさん:2009/06/05(金) 18:47:47 ID:???
俺は . を行頭にしてる。arrayはアイテム末尾だけど

$sql = "SELECT "
. "* ...
825nobodyさん:2009/06/05(金) 18:49:18 ID:???
>>814
783さんの例のように作りおきのgzipに対してはrangeヘッダーが使えるはずですよ
826nobodyさん:2009/06/05(金) 18:54:39 ID:???
>>823
そんなのわかんね
827nobodyさん:2009/06/05(金) 19:02:43 ID:???
>>821
cURLがチャンクサイズみて内部バッファを決めてるとは思えないなあ。
4k決めうちと思うけど。
828783: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で簡単に確認できます。

検証できてないというのなら反証するコード出してください。
それがプログラマーっつうもんじゃねえのかクソが
829nobodyさん:2009/06/05(金) 20:17:21 ID:???
結局 ID:fALDRgQl は何が聞きたいんだ?
変な検証とかは自分のblogとかでやって欲しいんだが
830783:2009/06/05(金) 20:43:27 ID:fALDRgQl
>>829
聞きたいのは>>785の、
gzipでエンコードされたファイルをダウンロードしながら並行して解析するための
スマートなコードです
(自分のコードでも目的自体は達成しているのですが糞コードなので)

gzipでエンコードされたファイルをダウンロードしながら並行して解析すること自体が
不可能という意見を頂いたので、それを否定するための検証がダラダラと長くなりました
ご迷惑をおかけしました
831nobodyさん:2009/06/05(金) 20:51:40 ID:???
>>827
すまん。考えてみれば当然か
いずれにせよgzip/deflateのブロックじゃないな
832nobodyさん:2009/06/05(金) 20:55:28 ID:???
よそでやらせないのがこのスレの意義だろ
全方位天然くん歓迎だよ
833nobodyさん:2009/06/05(金) 22:16:31 ID:???
gzipは最後まで読み込まないと解答できないよ
834nobodyさん:2009/06/05(金) 22:26:10 ID:???
>>827,831
CURLOPT_BUFFERSIZEがあるよ
http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTBUFFERSIZE
PHPレベルでのキャッシュもあるようだし、fdset()がどのタイミングでリターンするかは知らね
835nobodyさん:2009/06/05(金) 22:44:06 ID:???
>>822
ログってどこに表示される何のログじゃろ?
836nobodyさん:2009/06/05(金) 22:56:04 ID:???
某StringIOみたいなオブジェクトってない?
837nobodyさん:2009/06/05(金) 23:24:35 ID:u1D4YO7O
mixiに以前登録した時のメアドがわからずログインが出来なくなりました…

解約して新規で携帯を買うしかないですか??
838nobodyさん:2009/06/05(金) 23:40:42 ID:???
>>837
新しく作ればいいよ 大変だけど
SNSとかならオープンソースあるっしょ
839nobodyさん:2009/06/05(金) 23:41:13 ID:???
>>836
http://jp.php.net/manual/ja/wrappers.php.php
のphp://memoryをSplFileObjectで使う、とか?
840nobodyさん:2009/06/06(土) 00:06:01 ID:???
>>839
サンキュー検討するわ
つーかお前の発想の柔軟さに驚いた
841nobodyさん:2009/06/06(土) 00:10:14 ID:???
なにこの偉そうな口調・・・
842840:2009/06/06(土) 00:10:59 ID:???
すまんまじすまん
843783:2009/06/06(土) 01:07:42 ID:nrE5UTqJ
検証関係はウザいでしょうからこれで最後にします(レスは歓迎します)
>811のサーバ用で使っているgzipファイルを
ある程度長くて著作権フリーなもの、ということで太宰治の人間失格を
圧縮した物を用います(本当は日本国憲法あたりにしたかったけど短すぎた)
サイズは非圧縮時で151,900バイト、圧縮時で67,671バイトとなっています
この圧縮ファイルを1秒に8192バイトずつ送信します。(9秒後に終わる計算になります)

クライアント側のコードは下記の通り書き換えて、
経過時間、解凍された文字列の文字数、解凍された文字列の最後の文字列
を表示するようにしています
844nobodyさん:2009/06/06(土) 01:11:06 ID:???
>>834
PHPつうかハンドラのバッファ
ソケット叩いて回るようなレベルじゃパフォーマンスでねーから
845783: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);
}
}
846783: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
(略)
847783:2009/06/06(土) 01:21:00 ID:nrE5UTqJ
>>833
というわけで、gzipの最後がサーバから送られてくるのは
>>843の通り9秒後なのですが
9秒後以前に途中まで解凍できています
848nobodyさん:2009/06/06(土) 02:03:19 ID:???
>>839
ありがとう
ほとんどコンストラクタだけのクラスでごまかせそうだ
849836,848:2009/06/06(土) 02:07:31 ID:JWHRbWFk
なんか騙られたと思ったらID必須ってことを言いたかったのか?
いやはや申し訳ない
また何かあればよろしくお願いしますー
850nobodyさん:2009/06/06(土) 02:12:45 ID:???
某rubyとか隠す必要あんの?
851nobodyさん:2009/06/06(土) 02:46:03 ID:???
>>850
Rubyの専売じゃないと思うけどな。
PHPでは文字列型は可変だし、IOというinterfaceがあるわけじゃないから
個人的にはあまり必要ないと思ってしまう。。
みんな意外にOOPしてるのだろうか。
852nobodyさん:2009/06/06(土) 03:13:16 ID:???
>>851
ごくたまにファイルと文字列を透過的に
扱いたいことはある
853nobodyさん:2009/06/06(土) 03:52:57 ID:???
>>845
一切変わってなくてワロタ
分かっててやってるなw
854nobodyさん:2009/06/06(土) 04:26:42 ID:???
>>852
データ型によってコードをわけないということだよね。
しかし組み込みのinterfaceはないのだし、
オレ仕様のやつを自前で用意するものなのか。
例外についても同じく。。
855nobodyさん:2009/06/06(土) 04:40:53 ID:???
>>854
わからんけどインターフェースが必要ない動的言語だからこそアドホックにファサードつくればいいって話じゃね?
javaじゃあるまいし
856nobodyさん:2009/06/06(土) 04:42:19 ID:???
もうネロ
857nobodyさん:2009/06/06(土) 05:27:45 ID:???
ネットワークプログラミングって受信は甘く送信は仕様に厳しくとかいうけどさぁ、
おまえら守ってる?
俺は時間なくて手抜き実装してるううううううううう!!!!!!1

ハァースッキリした
858nobodyさん:2009/06/06(土) 08:26:27 ID:C5LE110H
例えば1000人同時にログインしたらMYSQLのデータって外部に漏れるもんなんでしょうか?
859nobodyさん:2009/06/06(土) 09:51:10 ID:???
じゃあ、Yahoo!とか漏れまくりで大変だな
860nobodyさん:2009/06/06(土) 11:21:28 ID:???
>>858
なんでそう思うの?
861nobodyさん:2009/06/06(土) 11:43:17 ID:???
関係ないけどちょっと聞いてくれよ
ケータイSoftbankに替えてありきたりなメールアドレス登録したんだよ
そしたら前にそのアドレスを使ってた人へのメールが知人やらメルマガやらどんどん入ってきて個人情報だだもれなわけ
今じゃすっかりその人に詳しくなって、おばあちゃんとのメールも無難にやりとりできるまでになったぜ
オマエラもSBのメールアドレスを手放すときは気をつけなさいってこった
862nobodyさん:2009/06/06(土) 18:12:17 ID:aSUnZuuU
日本語の文書を一文字ずつ配列に入れたいのですが
どのようにすれば可能でしょうか?
863nobodyさん:2009/06/06(土) 18:21:59 ID:???
mb_splitとかpreg_match_allとかならできそうだが
864nobodyさん:2009/06/06(土) 21:56:26 ID:???
>>862
mb_strlen + mb_substr
865nobodyさん:2009/06/07(日) 01:33:43 ID:???
utf8ならpreg_splitを//でできるよ
866783: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に圧縮されているファイルにしか
使えないのではないかと思います
867783: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 );
同じ結果が得られました まんこ
868nobodyさん: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して引き渡し」の仕様を変更することなく、このトラブルを解決する方法あるでしょうか?
すみませんが、アドバイスお願いします
869nobodyさん: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);

どちらが鯖に優しいですか?
870nobodyさん:2009/06/07(日) 07:50:19 ID:???
urlencode(serialize($_POST))かな?
あとhiddenにname属性がないけど
871nobodyさん:2009/06/07(日) 10:14:30 ID:???
>869
> fopen("log.dat",r);
'r'と文字列で指定しろ。
ついでにrは読み込み専用だから書き込めない。詳細はfopenのマニュアル嫁。
ttp://jp2.php.net/manual/ja/function.fopen.php

どっちが優しいかといえば、そんな下らない部分を最適化する時間を他の処理を見直す時間に回すのが一番鯖に優しい。
ファイルでデータを保持するって時点でかなり高コストなんで、とりあえず2chで下らん質問してる時間でDBの勉強でもするのがベスト。
どうしてもどちらかというならば、fwriteの呼び出し回数が少ないほうが鯖に優しい。つまり前者。
(調べてないが、もしかしたら書き込みを一時的にメモリに保持(バッファ)して、ファイル書き込みは閉じる瞬間に行なう仕様かもしれん、だとしたらどっちでも同じ)
872nobodyさん:2009/06/07(日) 11:48:46 ID:???
初心者ながら自作サイトを作成しているのですが、なぜか作成したページが
「疑わしいWebページを遮断しました」とノートンが反応するようになりました。
ソースが長いので記載はできないのですが、内容はmailtoで送信するための
名前やメアドを入力した後の「以下の内容で間違いないですか?」みたいな
画面です。値はメアド入力画面から$_POSTで受けとってます。
遮断される可能性としてはどのようなものがありますでしょうか?
すいませんがアドバイスを御願いします。
873nobodyさん:2009/06/07(日) 11:51:07 ID:???
すいません。テンプレみてませんでした。上記の質問は取り消します。
お騒がせしました。
874nobodyさん: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に数字が入っているからちゃんと書き込めると思うのですが。
875nobodyさん:2009/06/08(月) 00:06:15 ID:???
ロックは一番最初だろ
876nobodyさん:2009/06/08(月) 00:24:53 ID:???
>>874
それだと、読み〜ロックの間に他の人が読んだら値がおかしくなるよ。

でも消えるかなぁ。。
ロック失敗したときどうしてる??
877nobodyさん:2009/06/08(月) 01:02:13 ID:???
それ用のロックファイルかディレクトリを作るのが確実
file()はロックされてても読めるんじゃなかったっけ。
そのせいで書き込み途中のファイルを読み込んでしまい
結果飛んでしまうと。
878874:2009/06/08(月) 01:22:30 ID:f7LhTlLY
>>875ー877
ありがとうございます。
>>877さんので納得しました。
ロック用のファイルってどういう事ですか?
一時的にバックアップ取るという事?

>>876
ロック失敗とか全然気にしてないです。
失敗したら書き込めないようにif構文とか作った方がいいのですか?
879nobodyさん:2009/06/08(月) 02:33:33 ID:???
file()がだめならfread()でいいじゃん
といったらそうでもなくて、バッファ0にして fread fwriteでも飛ぶときは飛ぶ

http://www.google.co.jp/search?q=php+flock+%E3%83%AD%E3%83%83%E3%82%AF%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA&num=50&ie=utf-8&oe=utf-8&lr=lang_ja
880軟式PHP:2009/06/08(月) 11:08:46 ID:???
flockをfopenした時にlockが効くと勘違いしてる人が多い。
flockはflockとの競合を防ぐだけだから、他のプロセスがflockしてても
fopenのwで開けば0バイトで作成されるからそりゃ壊れる。
予めファイルを作成しておいて、r+で開いてflockかけるとか877の言うように
別ファイルでロックするのが定石だろう。
881nobodyさん: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が中で対処してくれていたのか・・・

処理方法があればおしえてください。
882nobodyさん:2009/06/08(月) 16:46:37 ID:???
質問です。
file関数でエラー検出するとき、よくあるのは

@file("http://hoge.com") or die("Error!");

というように、or dieがありがちだと思うんですけど、
orのあとって、return falseとかできないんですかね?
どうもエラー出るみたいなんですけど。


関数内でエラー検出し、エラーならfalseを返すというようにするには、そうすればよいでしょうか?
883nobodyさん:2009/06/08(月) 16:52:54 ID:???
自己解決。
こんな感じでいけました。


function get2ch()
{
$err = 0;
$lines = @file("htp://2ch.net") or $err = 1;
if ( $err ) { return false; }
return true;
}

でもreturn使えないのはめんどいですね。
884868:2009/06/08(月) 16:53:33 ID:5Fnyhx60
>>870
どうもありがとうございました

思ったんですが、確認ページから登録ページへの値の渡し方って
$_SESSION['postAry'] = $_POST; ってやって、
登録ページでは
INSERT INTO $table (`var`) VALUE($_SESSION['postAry']['var']);
とかした方がいいんでしょうか?
みんなこんな感じでやってるんですか?
885nobodyさん:2009/06/08(月) 17:05:27 ID:???
>>883
fileやfopenは失敗するとFALSEを返すから

$lines = @file(filename);
if (!$lines) return FALSE;//失敗すると$lines===FALSEとなる

見たいな感じでも大丈夫だよ
886nobodyさん:2009/06/08(月) 18:19:14 ID:???
returnで真偽を判定するまでもなくfile()で判別すりゃいいじゃん
887nobodyさん:2009/06/08(月) 18:24:57 ID:???
もともと 偽が返ってきたら右側も判定する、という or の性質を利用してるだけなんだから
真偽を返すもの以外を使うなら普通にif文でいいわな。
888nobodyさん:2009/06/08(月) 18:33:42 ID:9VTPEhgM
PHPでGD使ってるんですがサーバーにeAcceleratorとか入れたら処理速度あがりますか?
889nobodyさん:2009/06/08(月) 19:09:05 ID:???
ファイルオープンと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を引き継いだままページを取得する方法ってありますか?

教えてください偉い人
890nobodyさん:2009/06/08(月) 19:40:52 ID:???
Bでレスポンスのヘッダー内にCookieが帰ってくるはずだから、それを次のCのヘッダーに入れる
891889: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);
?>
コレですか?
892nobodyさん:2009/06/08(月) 20:16:41 ID:???
スパム業者乙
893nobodyさん:2009/06/08(月) 20:20:25 ID:???
スパムならここで質問するのはやめていただきたい
894889:2009/06/08(月) 20:27:36 ID:RF6d0qBM
>>892-893
ちげーよウェェエン
895890:2009/06/08(月) 20:30:50 ID:???
おれも教えないほうがよかったか・・

>>889
なんの処理に使うの?
ってかそのABCは自分のサイトのページではないよね?
896889:2009/06/08(月) 20:38:58 ID:RF6d0qBM
ランキングサイトへの情報更新に使います

沢山あるから一括してやりたいんですよ
すぱむじゃねーよ
897nobodyさん:2009/06/08(月) 21:26:32 ID:???
やっぱすぱむだったかw
898nobodyさん:2009/06/08(月) 21:59:17 ID:???
ワロタ
899889: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);
900nobodyさん:2009/06/09(火) 00:19:48 ID:???
>888
GDの処理速度自体は当然変わらない。
PHPスクリプトが動き始めるまでの時間は普通どおり短くなる。どの程度速くなるかは検索でもしてみれ。

ざっと考えたけど、リクエスト数が大きめならスループットは改善すると思う。
リクエストが多いわけじゃないなら、それほど高速化は期待できない。
901nobodyさん:2009/06/09(火) 04:19:06 ID:k9to3OUt
自動でphpをしたく、wgetをコマンドプロンプトでやっていたのですが、
リトライがうまく行きません。
-t 1000 と -w 300 を書いたのですが、一度実行されて
終了してしまいます。
wget --save-headers --timeout=600 -t 1000 -w 300 -O $loginhtml --no-cache --no-check-certificate http://localhost/hogehoge/hoge.php?hoge=hoge 2>&1

というような感じで、一回だけなのですが
http://localhost/hogehoge/hoge.php?hoge=hoge
のプログラムはちゃんと実行されていました。
http://localhost/hogehoge/hoge.php?hoge=hogeが一回終了するまでは60秒かかります。)
スレ違いぽいですが何かアドバイスよろしくおねがいします
902nobodyさん:2009/06/09(火) 04:29:07 ID:7d8qt2bF
http://pc11.2ch.net/test/read.cgi/gamedev/1238520070/692

692 :名前は開発中のものです。:2009/06/09(火) 00:57:34 ID:2fI/sHFo
何言ってんだ。プログラマにまともな精神持った奴がいた試しなんてねえよ。
第一プログラマと精神科なんてほとんどセットなのに今更それを語るとか情弱以下だろ。
903nobodyさん:2009/06/09(火) 04:44:10 ID:???
>>901
wgetのことは全然詳しく無いので月並みに言えば
オプション減らしたり普通のWebページが取れるか試してみたりして原因の切り分けしてみては?
904nobodyさん:2009/06/09(火) 06:18:41 ID:k9to3OUt
>>903
書くのを忘れていましたがosはwindowsでしたすいません。
そして、あれからいろいろと試していると
どうやらwindowsだとwgetだけでは無理みたいでして、
タスクスケジューラーを使うとうまくいきました。
ありがとうございました!
905nobodyさん:2009/06/09(火) 11:27:56 ID:???
エラーログを出力し、メールで送信してくれるクラスライブラリを探しています。

PHP内部エラーではなく、自分で指定した条件
(例えば、DBから取得したデータにバリデートをかけたらfalseだった、とか)
に応じてログファイルに時間やエラー内容等を記録し、
最後にメールに通知してくれるようなのを探しています。

自分で作れないこともないとは思いますが、多くの人に利用されていて、
実用に耐えているものであれば、そちらを使ってみたいと思っています。
906nobodyさん:2009/06/09(火) 11:53:30 ID:???
ライブラリ作って公開するまでもなく即行で書けないか?
メール送信くらいは既存ライブラリ使ってもいいけど
907nobodyさん:2009/06/09(火) 12:03:59 ID:???
ちょっとPHPとは離れてしまうけど

PHPでエラーが起きたときにメールでアラートをあげるって事だよね?
PHPでログ出力するんだから同時にメールも送れれば良いと考えるのはわかる。

でもそういう時に俺なら、ログ監視(というかサーバ監視)する別アプリをたてるけどな。
商用ならJP1とかopenviewとか千手とか、フリーならzabbixとか。
908nobodyさん:2009/06/09(火) 12:28:17 ID:???
素朴な疑問なんだが、処理が書かれたphpをブラウザで接続したとき
その処理に一回数分かかるとして、処理するのもphpだけだとすると
その処理中にブラウザ閉じられても処理は最後までやってくれるのかお
echoとかはなしとして
909nobodyさん:2009/06/09(火) 12:42:17 ID:1S65lMji
>>908
開いてリクエスト全部送信したら処理始める

だったような気がする
閉じても処理は続く
910nobodyさん:2009/06/09(火) 13:30:37 ID:OwEGJi1t
変な質問ですけど、2,3年前にEUC-JPで作ったプログラムを
カスタマイズする必要性が出てきたのですが、
自分は今UTF-8で作ってて、ライブラリもすべてUTF-8です。

そこで質問ですが、古いプログラムに手を加える時
文字コードはどうした方が良いですか?新しくするべきですか?
それともそのままの文字コードで作っていった方が良いですか?
911nobodyさん:2009/06/09(火) 13:33:06 ID:1S65lMji
>>910
新しくってUTF-8がECU-JPより新しいという概念で文字コード決めてるのか?
912nobodyさん:2009/06/09(火) 13:42:24 ID:OwEGJi1t
>>911
いえ。フリーライブラリなど、UTF-8の文字コードが多いので
それらを使う時使い勝手が良いと思ったからです。
しかし、手間がかかるし、通常はどうするべきなのか悩んでいます。
913nobodyさん:2009/06/09(火) 13:45:31 ID:???
通常は動作に問題無いものに手を加えたりはしないな。
今後会社としてUTF-8で統一するから、カスタイマイズついでにUTF-8にしておこうというのも有りだとは思うけどね。
914nobodyさん:2009/06/09(火) 14:08:30 ID:OwEGJi1t
そうですよね。今動いているのをあえて変更すると
バグやエラーの原因になりますよね。

今のまま拡張していきます。アドバイスありがとうございました。
915nobodyさん:2009/06/09(火) 14:51:07 ID:???
amazonの新刊情報を抜き出すプログラムって素人がすぐ作れるもの?
毎日1時にcronでプログラムを実行すればいいらしいまでは分かったのですが・・・

下記サイトと同じようなものを作りたいのです。
さくらのレン鯖プレミアム契約してます
ttp://booksales.seesaa.net/
916nobodyさん:2009/06/09(火) 15:06:37 ID:???
>>915
どういう方法で新刊情報が入手可能かしらないけど、
・アマゾンがRSSを提供してたら簡単。「php rss」とかで検索
・アマゾンAPIを使用するとちょい厄介。「php amazon web service」等で検索
・アマゾンサイトのHTMLから抽出だと知識によっては困難。これは正規表現の知識が必要。

3番目以外は検索すればサンプルが結構出てくる。
917nobodyさん:2009/06/09(火) 15:26:09 ID:???
>>916
RSS配信されてました
Parser.phpとRSS.phpとかいうスクリプトがあるのでそれ使ってやってみます
ありでした
918908: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ですよろしくお願いします。
919nobodyさん: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という文字を返してきてしまいます。
どういう記述を行えば計算することが可能でしょうか。
ご存じのかたいらっしゃいましたらご教授いただけると幸いです。
920nobodyさん:2009/06/11(木) 10:47:00 ID:???
php、多倍長とかで検索してみるといいかも
921nobodyさん:2009/06/11(木) 11:48:34 ID:JdN0MC7Y
ページングするときページやアイテムの合計数はどうやって受け渡ししするのが一般的ですか?
セッション(クッキー)、クエリなどありますよね。
セッションはなんか不安定そうで避けてるんですが。
922nobodyさん:2009/06/11(木) 12:01:57 ID:???
>>918
flush()で文字だけ先に表示させることは可能だけど、ブラウザは閉じたら処理もとまるから、コマンド投げる方法しかないと思うよ。
923nobodyさん:2009/06/11(木) 12:07:09 ID:???
>>921
渡すデータが4,5個くらいまでだったらGETクエリで良いと思うよ
あと合計件数はそのページをブックマークされると困るし変動する可能性もあるから、
一般的にはリクエスト時に毎回DBとかから合計件数を取得してから必要なデータを抜き出す。
924nobodyさん:2009/06/11(木) 12:15:06 ID:JdN0MC7Y
速度を上げるために一回目のSQLクエリで総数を出して、GETクエリで渡してるんですが
毎回カウントするのが普通なのでしょうか?
あまりGETクエリで渡してるサイト見かけないのでセッションが多いのかと思ったんで...
925nobodyさん:2009/06/11(木) 12:27:21 ID:???
その「総数」が毎回カウントしなくても平気なモノならいいけど
別セッションから書換えられるようなモノなら毎回取得しないとまずいんじゃないの?

その「総数」をDBから取得する処理は、速度が気になる位、重い処理なの?
926nobodyさん:2009/06/11(木) 12:51:22 ID:JdN0MC7Y
管理者側でしか書き換えないテーブルが多いので毎回カウント必要ない部分が多いです。
たしかに掲示板とかは書き換わる可能性があるので毎回取得したほうがいいですね。
件数はせいぜい数千件までぐらいです。
問題はトラフィックが非常に多いサイトもあるので少しでもサーバーの負担を減らしたいなと思っての処理です。
927nobodyさん:2009/06/11(木) 13:24:42 ID:???
>>918
phpファイルをcgiみたいに扱って
コマンドラインでバックグラウンド実行させればいい。
実行したいPHPが、test.phpなら本体のphpから

exec('php test.php &');

みたいにすると、test.phpがバックグラウンドで動く。
928nobodyさん:2009/06/11(木) 13:28:00 ID:???
まぁ一般的には総件数は毎回取得。
負担が気になるならDBのキャッシュを有効にしたりとかしてもいいし。
ネックにならないような箇所をクオリティを下げてまで最適化するのは推薦はしない。

総件数をどうしてもセッションで保持するならついでにページもセッションの方がいいかもね。
929nobodyさん:2009/06/11(木) 13:37:12 ID:JdN0MC7Y
>>928
ありがとう、参考にさせてもらいます。
みんなそんなには件数もちまわしてないってことですね。
930nobodyさん:2009/06/11(木) 14:47:08 ID:N6MijVRo
strcmp と strncmpの違いを教えてくださいな☆
931nobodyさん:2009/06/11(木) 14:56:32 ID:???
スペルが違う
932nobodyさん:2009/06/11(木) 21:29:54 ID:M7ie+miU
サーバー上でメモリにデータを常駐させて、アクセスきたらそのデータを参照したいのですが
どのようにしたらいいですか?
0から起動するプログラムしか扱ったことがありません。
933nobodyさん:2009/06/11(木) 21:32:25 ID:???
何のデータを常駐させたいの?
934nobodyさん:2009/06/11(木) 21:33:48 ID:M7ie+miU
検索のためのindexデータです。
935nobodyさん:2009/06/11(木) 21:36:37 ID:???
ん?それを何故常駐させる必要が?
936nobodyさん:2009/06/11(木) 21:38:08 ID:M7ie+miU
メモリに頻繁にアクセスされる部分が乗っていれば、速度が上がり負荷が減ります。
937nobodyさん:2009/06/11(木) 21:42:27 ID:M7ie+miU
PHPの動作がよくわかっていないのですが、
アクセスが同時にきたらメモリは別に生成されるんですか?
共有できるメモリもありますか。 共有できるメモリを初期化せず使い続けることは出来ますか。
938nobodyさん:2009/06/11(木) 21:44:54 ID:???
アクセスが来たら必要なデータは全てメモリに載るんだから一緒なのでは?
939nobodyさん:2009/06/11(木) 21:47:32 ID:???
>>937
php単体だとちょっと厳しい。memcacheは要件に合わないかな?
940nobodyさん:2009/06/11(木) 21:53:04 ID:M7ie+miU
トンクス
941nobodyさん:2009/06/11(木) 21:57:42 ID:M7ie+miU
標準のPHPには入ってないですね。 
無料か追加インストール出来ないサーバーで可能な方法はないですか?
namazuは無料サーバーにも対応していますが、毎回データをロードしてるんですか。
942nobodyさん:2009/06/11(木) 22:17:27 ID:???
レン鯖じゃいくらなんでも無理だよ・・・。
namazuはインデックスをファイルキャッシュしてるだけ。
943nobodyさん:2009/06/11(木) 22:24:27 ID:???
というか無料鯖とか言ってる時点でメモリキャッシュとか意味無ぇだろjk
944nobodyさん:2009/06/11(木) 22:31:53 ID:M7ie+miU
使用可能メモリが8M前後です。
5MのデータのPHPでロードする時間が0.3秒でした。
小細工なしで直にディスクアクセスしようと思います。
ありがとうございます。
945nobodyさん:2009/06/12(金) 07:30:39 ID:???
2人アクセスしたらどうなるんだろかw
946nobodyさん:2009/06/12(金) 10:49:59 ID:???
プロセスは別になるから問題はなかろう
947nobodyさん:2009/06/12(金) 10:58:32 ID:???
あー、PHPで8M制限されてるだけで、サーバの制限じゃないのねw
948nobodyさん:2009/06/13(土) 01:24:21 ID:???
PHPで自動投稿スクリプトを組もうと思います。
(是非知ってもらいたい有意義な情報を共有する目的です)

$url="書き込みたい掲示板のフォームのあるページ";
$txt=file_get_contents($url);


そこから先が分かりません。
想像ですが

echo $txt.<script>

var form=document.formname.texterea.value;
form="書き込みたい内容";
form.onsubmit();

</script>

みたいなのでいいんでしょうか?
949nobodyさん:2009/06/13(土) 01:31:48 ID:???
死ね
950nobodyさん:2009/06/13(土) 01:32:37 ID:???
人はそれをspamと呼ぶ・・・。ちなみに全然違う。
951nobodyさん:2009/06/13(土) 01:50:22 ID:???
自動投稿ならuwscやfirefoxの動作の記録とプログラムできるやつ
がある
952nobodyさん:2009/06/13(土) 03:43:41 ID:???
やってみてから言えよカス
つうかスレタイくらい読めよウンコ
953nobodyさん:2009/06/13(土) 04:13:54 ID:???
>>948
スパム目的に使用されると予想されますのでここでは回答を得られないと思いますよ
954nobodyさん:2009/06/13(土) 09:06:29 ID:nmHEpXwF
お願いします。
サイトの上部にランキングへのリンクを貼っているのですが

http://www.rank.co.jp/ (http://maysite.com/?from=jpでランク登録)
http://www.rank.com/ (http://maysite.com/?from=comでランク登録)
http://www.rank.net/ (http://maysite.com/?from=netでランク登録)
http://www.rank.org/ (http://maysite.com/?from=orgでランク登録)

もしランキングからhttp://maysite.com/?from=netでアクセスしてきた場合

http://www.rank.co.jp/
http://www.rank.com/
http://www.rank.org/
http://www.rank.net/

と一番下に自動で置き換わるにはどう書いたら良いでしょうか?
できたらコピペで使えるような答えがほしいです・・
宜しくお願いします。
955nobodyさん:2009/06/13(土) 09:29:18 ID:???
ごにょごにょ処理した後、headerで飛ばせばいい
956nobodyさん:2009/06/13(土) 10:56:16 ID:???
ごにょごにょごにょ

  ピューーーーン

               あれ?。
957nobodyさん:2009/06/13(土) 11:22:33 ID:???
$str = str;
$patterns = array( '/pattarn1/' , '/pattarn2/' );
$replace = array( 'replace1' , 'replace2' );
echo preg_replace( $patterns , $replace , $str );

で、arrayの中のシングルクオーテーションを""にしたら
文字化けして表示されたんだが、これは普通?というか
バグでもなんでもなくて ' じゃないとダメな決まり?
だとしたらどうしてなんだろうか。php5とfirefoxで表示させてみました。
958nobodyさん:2009/06/13(土) 11:46:07 ID:???
文字化けしたということは漢字コードでしょ?
実際のものが書かれていないとにんともかんとも
959nobodyさん:2009/06/13(土) 13:56:00 ID:???
>957
id。スレタイ。
replaceとpatternの詳細。
960nobodyさん: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");
?>

イメージ的にはこんな感じで表示される

[::]/[::]/[:][:]
961nobodyさん:2009/06/14(日) 01:14:32 ID:???
array_keys() と array_values() って順序は対応してるの?
str_replace(array_keys($hash), array_values($hash), $source)
をやりたいんだが
962961:2009/06/14(日) 01:19:52 ID:OOFPIqTL
おっと、下げてしまった
963nobodyさん:2009/06/14(日) 01:52:06 ID:???
シングルクォートとダブルクォートの違いを考えれば何となくわかる気がする
964nobodyさん:2009/06/14(日) 02:28:57 ID:???
>>960
ダブルクォートではエスケープシーケンスと変数が解釈されるゆえ、
\1〜\4がエスケープシーケンスとして解釈されてしまっている。
後方参照では\の代わりに$が推奨されている。

>>961
元の配列と同じ。要素ごとに再走査しなくていいのならstrtr($source,$hash)でいい。
965nobodyさん:2009/06/14(日) 08:49:37 ID:???
>>964
早速参照を\を$に代えてやってみたらちゃんとできたー
とんくす!!
966nobodyさん:2009/06/14(日) 08:55:12 ID:???
>>963
違いで調べてみたら、"は特殊文字も解析される
みたいなことが描いてあった・・
なんか前に見た内容だったけど完全にわすれてた、
'と"は大体同じみたいな印象だけが先走ってしまった情けない・・
967961:2009/06/14(日) 10:45:59 ID:OOFPIqTL
>>964
おおおまさにそれだ
ありがとう!!
968nobodyさん:2009/06/15(月) 03:03:27 ID:3Vzgmpyn
教えてください
imagecreatefromstring関数で壊れたファイルを開いてしまうとプログラムが途中で終了してしまうようなのですが、
何か対策することはできませんでしょうか?
969nobodyさん:2009/06/15(月) 09:08:11 ID:???
壊れてないファイルでやればOK
970nobodyさん:2009/06/15(月) 10:23:26 ID:???
>>969
ネットを巡回するプログラムなので、難しいです。
せめて直前に調べることはできないでしょうか?
971nobodyさん:2009/06/15(月) 10:29:06 ID:???
強制終了してるならエラーでてるんじゃない? まずそれをご参考に
972nobodyさん:2009/06/15(月) 11:43:50 ID:???
>>971
それがでてないみたいなんですよね…
973nobodyさん:2009/06/15(月) 13:52:21 ID:???
@つけろ
974nobodyさん:2009/06/15(月) 14:05:02 ID:???
余計だめじゃないかw
975nobodyさん: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で作っています。
976nobodyさん:2009/06/15(月) 14:43:47 ID:???
Locationでmailto使ってるやつ初めて見た
ってか、今のブラウザってこれで動くんだなすげぇ・・・

mailtoは普通リンクじゃね?
<a href="mailto:アドレス?パラメータ">ここをクリック!</a>
のように使うもんでしょ
977975:2009/06/15(月) 15:02:36 ID:???
mailtoは普通リンクで使いますよね
他のまともな方法で同様のことが実現できれば一番いいんですが思いつきません。
最悪、actionの飛び先で<a href="mailto:***@***.com">メール</a>するぐらいしか。
978nobodyさん:2009/06/15(月) 15:09:13 ID:???
まともな方法の意味がわからん
何がしたいの?
何でheaderでmailtoが使いたいわけ?
979975:2009/06/15(月) 16:16:28 ID:???
>まともな方法の意味がわからん
976さんの最初の2行を読む限りこの方法は普通ではないとのことでしたので。

>何でheaderでmailtoが使いたいわけ?
使いたいわけではありません、この方法でできないので他の方法はないのでしょうか?ということです
submit等のボタンを押したらメーラが開いてフォーム内の内容が本文の中に入ればそれでいいんです

phpを使う理由はbase64でエンコードしたいからです、ケータイ相手なのでJavascriptは使えません。
980nobodyさん:2009/06/15(月) 16:17:50 ID:???
だから
<a href="mailto:***@***.com">メール</a>
の使い方が普通なんだって言ってるの
981975:2009/06/15(月) 16:35:15 ID:???
その使い方が普通なのは知ってます
パラメータの部分にフォームの内容を動的に書けないので困っているということです。
980さんがいう普通の方法でメール本文にフォーム内の内容を入れられるなら教えてください。
『フォーム内容』の意味が不明瞭でしたね、フォーム内容というのは<form>...</form>の中の<input type="text" name='nick'>等で取得できる内容のことです。

formのactionにmailtoを指定すれば近いことは実現できますが、base64でエンコードできないので困ります。
982nobodyさん:2009/06/15(月) 16:58:18 ID:nxZJRVKz
PDOのSQLiteについて質問です
---
phpinfo();でpdo_sqlite の項目を確認すると
SQLite Library 3.3.17undefined
になっているのですが、このバージョンの「undefined」って何者なんでしょうか
983nobodyさん:2009/06/15(月) 17:03:24 ID:???
undefinedは未定義って意味
つまりSQLiteのライブラリが入ってないって事
984nobodyさん:2009/06/15(月) 17:10:13 ID:nxZJRVKz
>>983
返信ありがとうございます。
ライブラリは導入済みです。
PDO Driver for SQLite 3.x enabled になっており、PDOでSQLiteへの接続・操作もできます。
接続・操作ができるのだから、undefinedが付いていようと、特に支障はないといえばないのですが、調べても情報が出てこないため気になったので。
985nobodyさん:2009/06/15(月) 17:11:44 ID:nxZJRVKz
大事なことを書き忘れていました。
PHP 5.2.5 ext/php_pdo_sqlite.dllの差し替えなどは行っていません。
986nobodyさん:2009/06/15(月) 17:19:37 ID:???
undefinedに脊髄反射しちまった、スマン

もしかしてwindows?
↓これ試してみたらどう?
ttp://curiousabt.blog27.fc2.com/blog-entry-45.html
987nobodyさん: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 でした

気にしたら負けなのかな、これは
988nobodyさん: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なんかでやってるからかな
とりあえず気持ち悪いですが無視しておきます。
失礼しました。
989nobodyさん:2009/06/15(月) 18:39:59 ID:???
windowsXPでunix linuxサーバー用のPHP拡張を作るには、
同一環境のマシンとOSがなくても出来ますか?
XP用のPHPバイナリのディレクトリをのぞいたところ、SOではなくDLLでした。
990nobodyさん:2009/06/15(月) 18:55:21 ID:AYiL75q4
if(strpos("http://pan.com?goods=1200", "http://pan.com?goods=1200")){echo "ok";}
上記コードで?があるので、うまくマッチングできません。
どうしたら良いですか?
991nobodyさん:2009/06/15(月) 18:59:34 ID:???
マッチして0を返してるからOK出ないんじゃ
992nobodyさん:2009/06/15(月) 19:04:38 ID:???
>>990
マッチした場所を数値で返す
その場合先頭でマッチしてるから0が返る

$flg = strpos("http://pan.com?goods=1200", "http://pan.com?goods=1200");
if($flg !== false) {
  echo "ok";
}
993nobodyさん:2009/06/15(月) 19:11:11 ID:???
>>991&992
ありがとうございます。
暑さでてんぱってました。ちがうか・・・
994nobodyさん:2009/06/15(月) 20:52:57 ID:???
>>989
各環境でコンパイルしないとだめだと思うよ
作ったことないけど

配布するならソースか、だれかにバイナリ作成を協力してもらうか
995nobodyさん:2009/06/15(月) 22:46:42 ID:???
>>994
トン
996nobodyさん:2009/06/15(月) 22:51:57 ID:???
いつもお世話になってるので次スレ建ててきますね
997nobodyさん:2009/06/15(月) 22:59:43 ID:gEjyaahW
【PHP】下らねぇ質問はID出して書き込みやがれ 85
http://pc11.2ch.net/test/read.cgi/php/1245074032/

これからもよろしくお願いします^^
998nobodyさん:2009/06/16(火) 14:46:03 ID:???
埋め
999nobodyさん:2009/06/16(火) 14:46:43 ID:???
埋め
1000nobodyさん:2009/06/16(火) 14:47:24 ID:???
このスレは1000の風になりました
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。