【PHP】下らねぇ質問はID出して書き込みやがれ 127
質問者はまず
>>1 を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
次スレは
>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 126
http://kohada.2ch.net/test/read.cgi/php/1359808868/ ◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
【簡易FAQ】
1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(
http:// 〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
テンプレここまで。過去ログリストはどうせ誰も使わんだろうから消した。
独学でも真面目にPHPを極めようと思っているのにこのような仕打ちをされるとは思いませんでした。 もう二度と来ません。
11 :
前スレ970 :2013/03/19(火) 22:21:55.02 ID:8jYhxyUG
前スレの972さん、ありがとうございます。。。
cURLを使って書き換えるとこれで正解でしょうか?
$postdata =
"<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>" .
"<api-request id=\"XXXX-XXXXX-XXX\">" .
"<a_id>" . $a_id . "</a_id>" .
"<b_id>" . $b_id . "</b_id>" .
"<t_id>" . $t_id . "</t_id>" .
"</api-request>";
$url = "
https://example.com/api/xmlapi.do ";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, $id . ':' . $pass);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml_data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
煽りさんスレ立て乙
PHPでファイルをダウンロードすることって可能ですか? ググったりしてみると「ダウンロードさせる」方法ばかりが出てダウンロードする方法がわかりません。 ご教授お願いします。
16 :
nobodyさん :2013/03/19(火) 22:57:24.29 ID:8eU3/8tb
すみません。 age忘れました。 改めて質問させてもらいます。 PHPでファイルをダウンロードすることって可能ですか? ググったりしてみると「ダウンロードさせる」方法ばかりが出てダウンロードする方法がわかりません。 ご教授お願いします。
>>16 file_get_contents($url)
>>17 すみません。
説明不足でした。
ダウンロードしたいファイルはzipファイルなんです。
20 :
nobodyさん :2013/03/19(火) 23:05:04.66 ID:8eU3/8tb
何度もすみません(-_-;)
>>17 すみません。
説明不足でした。
ダウンロードしたいファイルはzipファイルなんです。
22 :
nobodyさん :2013/03/19(火) 23:12:02.43 ID:8eU3/8tb
>>21 ありがとうございました。
zipファイルでもいけるみたいですね。
自分の勉強部族でした……
いいってことよ
>>18 ID出さないゴミは二度と来るな
お前自分がどれだけ迷惑か自覚ないだろ
クズすぎる
25 :
nobodyさん :2013/03/19(火) 23:42:39.35 ID:8eU3/8tb
連投すみません。 以下のようにコードを組んでみました。 file_put_contents($file_path, file_get_contents($url)); URLはzip直リンクです。 このようにしてみたのですが、ダウンロードしたファイルをみたところ0バイトの無容量ファイルとなっていました。 何故このようなことになってしまうんでしょうか?
少しは自分で考えろ
サーバが対応してないんだろ あきらめろん
putしちゃダメだろ
>>25 回答したら勉強不足でしたって言われそうな気がするので、勉強部族らしく勉強してきてください
$ch = curl_init("
https://github.com/foo/bar/archive/master.zip ");
$fp = fopen('unko.zip', 'w');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_exec($ch);
curl_close($ch);
fclose($fp);
このようにしてみましたが同じく0バイトzipでした。
お願いします。誰か助けてください。
31 :
nobodyさん :2013/03/20(水) 00:15:08.45 ID:vtosDUC4
またID出し忘れた……
$ch = curl_init("
https://github.com/foo/bar/archive/master.zip ");
$fp = fopen('unko.zip', 'w');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_exec($ch);
curl_close($ch);
fclose($fp);
このようにしてみましたが同じく0バイトzipでした。
お願いします。誰か助けてください。
丸投げにはスクリプト作成料金がかかります。 おいくら支払えますか?
ブラウザで直接そのURL叩いたときのヘッダ見てみろよ
34 :
nobodyさん :2013/03/20(水) 00:30:36.74 ID:H3JypdK8
100円じゃ動けないのでヒントだけあげましょう。 ダウンロード前にログインして下さい。 ていうかちゃんと相手サイトの仕様を把握して下さい。
ていうか教えてもらおうとしてる立場で情報省略するなよ foo/bar/なんてあるわけねえだろ ちゃんとしたURLも出さないならとっととカエレ
37 :
nobodyさん :2013/03/20(水) 00:36:32.01 ID:p05jljgI
俺のクソコードはresume対応だがクソだしあげない
俺のクソコードはメモリに考慮して巨大ファイルでもいけるがクソだしあげない
うおおおおおおおおおおおおおおおおおおおお
$sql = "SELECT " $_GET['aaa']; このコードでSELECT以外を実行することって可能?
そもそも動かない
>>37 ありがとうございます。
でもダウンロードすらできませんでした……
>>43 低知能が一般人と同じ努力と時間でできるわけねーだろ
自分が一般人レベルだと無意識に自惚れるんだろお前
低知能は低知能らしく泥水すすってろ
>>37 あ、勘違いでした、いけました。
ありがとうございました。
46 :
41 :2013/03/20(水) 01:14:58.28 ID:???
事故解決しました
>>41 .がないので動かない。まぁ揚げ足取りはいいとして、
コロンはさんでDELETEなんかを追加するのは可能。
セミコロンな
50 :
nobodyさん :2013/03/21(木) 13:55:44.02 ID:H+c6ch+k
【PHPのバージョン】 5.1以降 【質問内容】 タイプヒンティングについて PHP 5.1以降でタイプヒンティングが使えるようになりました。 マニュアルを見ると、 > タイプヒントは int や string といったスカラー型には使えません。 また、トレイト も使えません。 とあります。 スカラー型でタイプヒントができないのは、何か理由があるのでしょうか?
52 :
50 :2013/03/21(木) 14:03:55.57 ID:???
phpってさ?
55 :
nobodyさん :2013/03/21(木) 19:40:39.73 ID:vaqS6iye
【OS名】Windows7 【PHPのバージョン】5.4.13 【連携ソフトウェア】Memcached 【質問内容】 memcachedをwindows環境で利用したいのですが、php_memcached.dllが見つからず詰まっております。(memcacheの方ならありましたが…) memcachedサーバは別途用意済みです。 前に働いていた職場では利用できていたので簡単にできると思っていたのですが浅はかでした…。 導入方法をご教授いただけると幸いです。
自分で作れば?
memcachedのマニュアルのとこの導入からインストールまで読んでいけば ソースコードが入手できるリンクがあるから そこからソースコードを入手して自分でコンパイルする たぶんC言語だからCのコンパイラを探しなさい
>>56 いろいろサイトをみつつ格闘していますが、そもそもコンパイルする環境が…という状態なので
まずVisualStudioをインストールしています。
>>57 memcacheのほうでした…。
>>58 一度辿っていって挑戦してみます。
無理そうならWindowsではmemcacheのほうを使用するように振り分けたいと思います。
そんな雑な誘導したら今度はlibmemcachedがないですってならないか?
62 :
59 :2013/03/21(木) 23:34:01.37 ID:vaqS6iye
なんとかlibmemcachedはできたみたいなのですが、 php_memcachedのコンパイルがうまくいかず(nmakeでエラーが出るもどう修正していいか分からず…) 適当に変更しつつ無理やり進めていくももう限界な感じなので諦めます…
63 :
nobodyさん :2013/03/22(金) 00:50:03.31 ID:ZypSZ1+e
PHPで複数のブログを一括更新するプログラムをつくりたいのですが 初心者で何をどうしていいかわかりません。 勉強できるところ教えてください。
>>63 情報系の専門学校
PHPそのものは教えてもらえないと思うが
卒業時にはPHP使ってそれを組めるレベルにはなってるはず
66 :
nobodyさん :2013/03/22(金) 12:00:48.07 ID:M7ldJLa/
ソースコードから5.4.13をビルドして~/php にphpをおいてます。 まず、私のUbuntuに入っているphp 5.3を使って php src.php のようにやるとすぐに実行されます。 しかし、この自分でビルドしたPHPを使って ~/php/bin/php src.php のようにやると実行されるのに10分くらいかかってしまいます。 どうしたらいい? そして何故かインターネットにつながってないときだと ~/php/bin/php src.php のようにやるとすぐに実行できます。
67 :
nobodyさん :2013/03/22(金) 13:52:52.12 ID:f80zdUg/
ボタン押下 → サーバー0 → サーバー1 → サーバー2 → サーバー3 という流れでサーバー0から他のサーバーに分散処理を行っています。 20件以上のデータを3件ずつ処理→レスポンスが返る 5件のデータを3件ずつ処理→レスポンスが返る tcpdumpを確認しているとサーバー1,2,3は処理が終わってレスポンス を返す通知をしているようにみえます。 サーバー0のほうがレスポンスを取得できない状態のようです。 考えられる原因は何がありますか
68 :
nobodyさん :2013/03/22(金) 13:53:23.06 ID:f80zdUg/
訂正 20件以上のデータを3件ずつ処理→レスポンスが返らない
includeしまくりのphpファイル読むのすごい大変なんだけどどうすればいいの?(WordPressです)
70 :
nobodyさん :2013/03/22(金) 14:46:18.71 ID:mJIp3k85
【OS名】FreeBSD 6 【PHPのバージョン】5.3.8 【連携ソフトウェア】MySQL 【質問内容】 質問失礼します。 phpで動的に生成したhtml(js含む)を暗号化するライブラリを探しています。 「サーバサイドSHTML for PHP」というツールを見つけました。 やりたい事はまさにコレなのですが、とある事情により組み込めませんでした。 他にライブラリは無いでしょうか? よろしくお願いします。
当たり前だけど、 ブラウザのデベロッパツールで複合後のhtmlが見えるけどな
完全に隠蔽するのは無理 右クリで見られなくするだけならjavascriptで動的に生成すれば
74 :
nobodyさん :2013/03/22(金) 18:38:25.64 ID:jSNpdJza
仕事でPHPをやることになったんですけど、全然わかりません おうちで読めるおすすめの本を教えてください。 自宅でPHPは出来ないので、リファレンスとかじゃなく読むだけでなぜかメキメキ上達する本を教えてください。
まずは自宅でPCを使えるようにするといいかな
とりあえずxampp使えるようになろうか
print 自宅のPCじゃ"やりたくない"です。。。
理由は3行
79 :
nobodyさん :2013/03/22(金) 18:57:22.94 ID:jSNpdJza
echo<<<EOF 面倒でうs EOF;
公式通読がいちばん簡単な気がするけど…… 用例もあるし
こんなとこでそんな下らない質問してる暇があったらさっさと勉強始めろ お前にはただやる気がないだけだ
>>74 できもしないことを引き受けるなゴミクズ
お前みたいなゴミは納期直前になってからできませんとか言い出すからマジで迷惑
社会に出てくるなクズ
そもそもスレタイ通り下らねぇ質問なんだから、 スルーするか答えてやったらどやろか?
>>79 XAMPP 面倒とか言い出したら、PHP覚えるのは無理だと思うぞ。
俺、PHPはこれっぽっちも判らないけど(言ってて悲しい…)
自前のPC に XAMPP 入れて rep2 を使えるように動かすまで、
30分かかってないぞ。
本当は、XAMPPや rep2 のドキュメント読んで、
やっとけって書いてあったセキュリティ上の設定とか動作上調整した方が良さそうな設定を
読んだりいじったりして、1時間ちょっと掛かってると思うけど。
まぁ、それでもそんなもんだ。
>>81 スレの存在否定しとるがな。
初心者はXAMPP使うな
>>85 >初心者はXAMPP使うな
駄目だしして理由も代案出さないのは下の下。
別に XAMPPがベストとか最高だからお勧めとか言ってないし。
テスト用、学習用には困らんだろ。
「面倒でうs 」って言ってる
>>79 に返答してみやがれ。
XAMPP否定されると自分が否定されたように感じるくらいの技術力って真面目にやばいと思うぞ
否定じゃなくて駄目だしするなら代わりの答え出してやれって。 そもそも、技術力以前に「これっぽっちも判らない」って言ってる訳だから、 やばいもなにも戦闘力0なんだけど。
初心者にはXAMPPは難しいだろ。 本家からビルド済みバイナリを取ってきて解凍して、php.exeなどにスクリプトを渡したら実行できるぞ。
xamppはapache,php,mysqlと煩わしい設定が一通りすんである 本家のバイナリは無効なものが多く設定をいじる必要があり開発するだけならxamppのほうがよい 有効にしてるものが多いほどセキュリティリスクが高まるが ポートも閉じてサーバを運営するわけではないので問題ない
phpはサーバーサイドで使われることが多いが、サーバーから呼び出す事は必須でない。 apacheとか初心者には不要。余分なものがあると複雑になり混乱する。
xamppみたいなスーパーハカー用の環境を素人に勧めるのは鬼w PCが複数台あるなら、どれか一台にインストールと設定が簡単なUbuntuとかCentOSとかを入れる。 一台しかないなら仮想環境に入れる。 インストール時にLAMP環境をまるごと入れられるから、猿でもPHPの練習環境が作れる。 VirtualBoxにCentOSを入れて、あっさりPHPが使えるようになったときは xamppを勧めた鬼を恨んだw
不具合について調べて対処できないようでは、どんな言語でも無理だな。 Web Platform Installer でも使え
初心者はXAMPP使うな
>>74 で「PHPをやることになった」って言ってるから、
php の zip なり、Installer 入れて PHPすればいいんじゃね。
>>94 それをいうなら、「初心者は PHP使うな」も真になったり…
お前らはプログラムがしたいの?サーバの設定をしたいの?
Webアプリケーションを作るのであればサーバーの設定もできないとダメだな
プログラムがしたいからサーバはことは知らなくていいって考えなんだ
知る必要がない プログラマーの仕事じゃないから
知らないと鯖の設定なのか自分の書いたPHPコードのバグか分からない場合もある ここの質問見てたらパーミッションすら分かってないゴミがいる
んなあほな warning出すのに
鯖はプログラムで動いてるんだけどね
だからXAMPPは使うなと言っただろう
XAMPPは使うなっ!!!!!!!!!!!!!!!
やっぱ荒らしてるのはチンピラだったんだな
107 :
nobodyさん :2013/03/24(日) 02:46:07.29 ID:MVB0e/DS
curlで重いファイルをpost、アップロードする時に途中経過を取得するにはどうしたらよいでしょうか ダウンロードする時は分かったのですが。
>>107 お前がしなきゃならないのはファイルアップロードの途中経過を取得することではなく
今すぐに回線を切ってネット社会に迷惑をかけないことだ
分かったかゴミ
110 :
nobodyさん :2013/03/24(日) 05:39:24.59 ID:MVB0e/DS
>>109 分かりにくくて申し訳ありません。
ブラウザ→サーバー にアップロードする時の途中経過ではなく
サーバー→別のサーバー にcurlを使ってアップロードする時の途中経過の事です。
>>107 ダウンロードするときのコードを教えてくれ
そしたら直してやる
113 :
nobodyさん :2013/03/24(日) 13:45:27.68 ID:MVB0e/DS
>>111 ダウンロードはこれで現状動いています。
$curl = curl_init();
$options=[];
$options[CURLOPT_URL] ="
http:// 〜〜"
$options[CURLOPT_FOLLOWLOCATION] = true;
$options[CURLOPT_WRITEFUNCTION]=function($a,$b){
$currentByte=curl_getinfo($a)["size_download"];
printf("\r%2.2f/%2.2fMB",$currentByte/1024/1024,$contentLength/1024/1024);
};
$options[CURLOPT_HEADERFUNCTION]=function($a,$b){
if(preg_match('{Content-Length:(\d+)}',$b,$match)){$contentLength=$match[1];}
};
curl_setopt_array($curl,$options);
$response = curl_exec($curl);
curl_close($curl);
114 :
nobodyさん :2013/03/24(日) 18:14:59.12 ID:+46FugGl
終了タグ?>って基本使わないんですか?
むしろつけなくても動くことに驚きなんだけど
>>116 閉じタグは、HTMLが混在する時に使う区切りの扱い。
PHPだけのファイルでは、変なキャラクタが出力されたりしないように
省略するのが昨今の流行り。
コードの書き方が流行りで変化するPHP(笑)
>>113 ←うわw冗談を真に受けて本当にコード晒したゴ#ミがいるよwwww
>>114 htmlに埋め込むときは使う
phpだけの場合は使わない
>>113 みたいな恥さらしは一体何がしたいんだろうか。
122 :
nobodyさん :2013/03/25(月) 01:12:25.22 ID:Ox4syU6B
アクセスしてくる携帯を識別してそれぞれに同じ動作をさせる事は可能でしょうか 具体的には文化祭でそこら中にQRコードをはって、それでスタンプラリーをしようかと思っているのですが
123 :
nobodyさん :2013/03/25(月) 01:14:34.95 ID:ISkubUPD
こんばんわぁ〜 PHPぷろぐらまぁ〜の おねぇ〜さんだよぉ〜 今日はどんな質問が あるのかな?
>>117 書かないことが気持ち悪いって人は沢山いるんだけど、
書くことによって起こる面倒なやり取りを避けるために、気持ち悪いことを承知の上で
書かないようにしようって判断した感じだよね。
「最後に空行がひとつあるんですがこれは?」とかまじでうっとうしいから
気持ち悪いとかじゃなくて実益で判断しろよ 気持ちいいコードしか書かんのかお前は
>>122 みたいに質問すらロクにできないクズは何なの?
127 :
nobodyさん :2013/03/25(月) 03:30:36.57 ID:zKokAmn+
>>119 ダウンロードする時のコードからアップロードする時のコードに直すことが出来ないのですか?
ダウンロードとあっぷろ
>>127 ダウンロードするときには受け取った分から量がわかるけど
アップロードで丸ごと渡したらどこまで送信したかは、送った場所からはわからんだろ。
>130:nobodyさん :2013/03/25(月) 12:43:29.77 ID:??? [sage]
>
>>127 ダウンロードするときには受け取った分から量がわかるけど
>アップロードで丸ごと渡したらどこまで送信したかは、送った場所からはわからんだろ。
はい、本日最高のヴァカ入りました
そんなこと言ってコード出させようとしても無駄w
133 :
nobodyさん :2013/03/25(月) 17:17:47.63 ID:wVRiuIe8
サニタイズ(無害化)について質問です。 次の変数$hostnameをDBに登録する場合、サニタイズは必要でしょうか? よろしくお願いします。 $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
135 :
nobodyさん :2013/03/25(月) 17:55:08.36 ID:Xg0aZ+mi
Aサーバー→Bサーバー(長時間処理) Bサーバーの処理終了もAサーバーがレスポンスを受け取らない。 Aサーバーがタイムアウトしてるとしか考えられないのですが httpd.confのTimeoutとphpのタイムアウト設定以外に何処かいじるところ ありますか?
>>135 > タイムアウトしてるとしか考えられない
で、タイムアウト「してた」の?
137 :
135 :2013/03/25(月) 18:04:26.97 ID:???
>>136 いえ、Bサーバー側ですべての処理が終わっても、クライアント側のPHP
はずっと動作したままブラウザは接続中になっています。
Bサーバーのtcpdumpではackをずっと飛ばしてるのですが、Aサーバーの
tcpdumpログに動きがないので、Bサーバーは強制切断になってます。
139 :
nobodyさん :2013/03/25(月) 18:09:03.98 ID:Xg0aZ+mi
>>138 間違えてsage入れてました。
この質問は取り下げます。
140 :
nobodyさん :2013/03/25(月) 18:21:17.35 ID:zKokAmn+
>>130 ブラウザやFTPクライアントはアップロードする時も%表示やプログレスバーが表示されますけど
phpでは表示出来ないという何か事情があるのでしょうか
>>140 curlで送ってるんじゃないの?
phpでcurlの関数に渡してはいおしまい、だと取れないだろって言ってるの
ダウンロードのコード晒してたから、そのまま使ったんじゃそうなるって話。
コールバックとか調べてみ。
A→Bへのコネクションだと思うんだけど、Aのログには別にRSTもFINも飛ばしてないんだよね? コネクション張れてるならB→AへのACKがAに到達しないのはおかしいなぁとおもう。 nagleが絡んでるわけでもないんだよね
144 :
133 :2013/03/25(月) 19:48:46.69 ID:CCFS7U7g
>>134 ありがとうございました。
$_SERVER['REMOTE_ADDR'] の値が改竄される危険性については、
あまり心配しなくて良さそうですね。
取り下げられた質問にいつまでも絡んでる自己顕示欲くんウザ
自己顕示欲に見えるのはちょっと頭がおかしい
ごめん間違えた。ちょっとじゃなくてかなり。
どういたしまして
さすが底辺言語のスレ 常に煽りあってるよな
あおってるのが質問者でも回答者でもない人ってのが面白いところだよ
基本的な知識が足りないと判断されて回答してもらえなかった質問者やID出し忘れて叩かれた質問者が逆ギレして暴れているだけだろう。
この板のPerlスレ見てみろ たまに煽り合いもあるけど基本平和そのものだぞ 言語使用者の民度は2chのスレッドにも表れる
ここしばらくおとなしかったのに春休みになったら荒れだしたな
お前ら全員Ruby使えは荒れることもないだろうよ
156 :
135 :2013/03/26(火) 11:09:54.49 ID:mRDPS0mY
>>142 返信ありがとうございます。
RSTはBサーバーではやってますが、Aのほうでは全く反応ない状態で
ackも送ってません。
nagleはちょっと調べてみないとわかりません。
157 :
135 :2013/03/26(火) 12:16:11.31 ID:mRDPS0mY
>>142 curlの
CURLOPT_TCP_NODELAYで無効にして試してみます。
ヒントありがとうございました。
質問取り下げたんじゃねーのかよ 嘘つきは消えろ
ループが分からないので教えてください 単純に文字を100回だすとかならまあ分かるんですけど データベースとか絡んでくるとわけわからなくなってきます
嘘つきは泥棒の始まり 本当にここは犯罪者予備軍のスレだな
IDでてないよ
出てないから俺も静観してるとこ。
164 :
nobodyさん :2013/03/26(火) 18:55:08.33 ID:p9pFyvrs
ループ教えてください
165 :
135 :2013/03/26(火) 19:00:48.07 ID:???
嘘つきでもシステムが出来ればいいのです。 だってプログラマーでしょ
>>164 for(int i =0; i < 10; i++){
for(int j = 0; j < 10; i++){
}
}
167 :
nobodyさん :2013/03/26(火) 19:41:13.66 ID:p9pFyvrs
>>166 ループとイフの組み合わせを教えてください
この質問になんの意味があるんだろう? その程度のこと知った所で何もプログラム組めないぞ 初心者向けのサイトでも見て学べ
>>166 ルールを守れない屑に回答してんじゃねーぞ精神異常
お前そこまでして自己顕示欲を満たしたいのか
>>171 はぁ?なにこいつ
最初出てなかっただろうが
万引きで捕まってから
お金払えばいいんでしょ!とか逆ギレするDQNと同じ精神構造
>>166 共々消えろ
>>166 はどう見てもマジレスじゃない
お前らアホか
>>174 いったじゃん。回答者でも質問者でもない人が馬鹿だって
178 :
nobodyさん :2013/03/26(火) 21:41:24.07 ID:p9pFyvrs
ぼくのために争わないで みんなで仲良くPHPしましょう
なんでこんなに人気なの?
180 :
nobodyさん :2013/03/26(火) 21:52:43.45 ID:kZMtE//2
>>179 初めてやったのがphpで、それで事足りてるからほかの言語をやるきになれない...
サーバサイドで使ってるのはPHPだけだと思う。
MySQLとの連携とかはあるけど。
183 :
nobodyさん :2013/03/26(火) 22:15:55.27 ID:kZMtE//2
>>182 フレームワークあれば開発速度ものすごい上がるしな。
<?php echo "こんにちは"; ?> として、test.phpを保存しても、 ブラウザで読み込むとそのまま出てしまうんですが、コンパイル的なのが必要なんですか?
サーバー=PHPとHTMを解釈する環境。
>>184 その test.php はどこに保存されてて、ブラウザはどうやって開いているのかな?
ローカルに保存してローカルで開いたらそうなるけど。
ブラウザは PHP解釈しないから。
php解釈するモジュールを組み込める Apache などの Webサーバーにアップロードしておくか、
phpをcgiで実行できるようにWebサーバーに設定して同じくアップロードする。
そんでブラウザから Webサーバーを通じてアップロードしたしたファイルにアクセス。
というのがニワカの俺の知識。
test.php.txtになってるってオチだろ
189 :
nobodyさん :2013/03/27(水) 10:16:02.44 ID:KYdi+aYH
PHPファイルのincludeができる範囲ってどんなもんなんでしょうか? ドメインが違っても出来てしまいますか?
file:///C:/test.php なんだろ。
>>189 phpとして読めるならね。
普通、httpでphp読むと実行結果が返ってくるよね?
193 :
nobodyさん :2013/03/27(水) 11:04:48.30 ID:KYdi+aYH
>>192 つまり相対パスで呼び出さない限りincludeは出来ないということで良いのですね
安心しましたありがとうございます
194 :
nobodyさん :2013/03/27(水) 11:22:45.13 ID:o3YcYIdi
dataCheck($a,"txtA"); dataCheck($b,"txtB"); function dataCheck($str,$name){ if(strlen($str) == 0 || !preg_match('/^[0-9]$/',$str)){ print("<html><head><title>入力エラー</title></head><body>"); print($name." は半角数字を入力してください。<br /><br />\n"); print("<a href=\"#\" onClick=\"history.back(); return false;\">再入力</a>\n"); print("</body></html>"); exit; } } txtAとtxtBの両方がfalseの場合、両方のエラーを表示させたいのですが この場合だとどちらか片方しか表示されません。 両方表示できる方法をお願いします。
>>194 exitをなくせばいいと思うよ。
それとhead、bodyタグ等は関数の外で出力。
>>114 PHPだけのファイルの場合は付けない方が良く、その理由は明確。
PHPだけのファイルはrequireされるが、そのときそのファイルに?>に続くスペースなどがあると、
それが出力に影響を及ぼす場合がある。
また、PHPのコードでHTTPヘッダを出力するとき、requireしたファイルに?>に続く余分なスペース
や改行などがあると、もうHTTPヘッダは出力できなくなる。
そのため、?>は省略した方が良い。
ちなみに、PSR-2というコーディングガイド(PSRが何者かは要google)では、?>は省略が必須と
なっており、(
http://www.infiniteloop.co.jp/docs/psr/psr-2-coding-style-guide.html )、
コーディングルールを静的にチェックするツールでは、エラーとして報告されるだろう。
dataCheck($a,"txtA"); dataCheck2($b,"txtB"); print("<html><head><title>入力エラー</title></head><body>"); print("</body></html>"); function dataCheck($str,$name){ if(strlen($str) == 0 || !preg_match('/^[0-9]$/',$str)){ print($name." は半角数字を入力してください。<br /><br />\n"); print("<a href=\"#\" onClick=\"history.back(); return false;\">再入力</a>\n"); } } function dataCheck2($str,$name){ if(strlen($str) == 0 || !preg_match('/^[0-9]$/',$str)){ print($name." は半角数字を入力してください。<br /><br />\n"); print("<a href=\"#\" onClick=\"history.back(); return false;\">再入力</a>\n"); } } 適当にやったらなんとなく目的の動作に使づきましたが、「再入力」というのが2つ表示されたりと なんとなくもっと簡単にできると思うんだが・・・ もし両方入力が不正の場合は、 「txtA txtBは半角数字を入力してください。」 と表示されるのが理想。$nameにtxtA txtBが代入されてるんだけど それを配列で取り出す方法がわかりません。
198 :
nobodyさん :2013/03/27(水) 14:06:09.03 ID:GIbhyuNj
質問です。よろしくお願いします。 データベースから100件のデータを取得して、PHP側にて、whileで処理する場合、 そのwhileループ内で、更に、5回ずつデータベースに問い合わせると、 合計500回データベースにアクセスすることになってしまいます。 こういう場合には、どうするのがベストですか? テーブルを結合して取得すればよいかとも思うのですが、 問い合わせが、5回、10回と多くなるとテーブルの結合も難しいです。
>>197 PHP以前の問題だ。
function validate($str){
// 妥当なデータならtrueを、そうでない場合はfalseを戻す
return strlen($str) !== 0 && preg_match('/^[0-9]$/', $str);
}
$buf = '';
if (!validate($a)) {
$buf = "txtA,";
}
if (!validate($b)) {
$buf .= "txtB";
}
if (strlen($msg) > 0) {
$html = <<<EOB
<html><head><title>入力エラー</title></head><body>
$buf は半角数字を入力してください。<br /><br />
<a href="#" onClick="history.back(); return false;">再入力</a>
</body></html>
EOB;
}
>>198 > こういう場合には、どうするのがベストですか?
> テーブルを結合して取得すればよいかとも思うのですが、
それしかない。
> 問い合わせが、5回、10回と多くなるとテーブルの結合も難しいです。
難しくてもやれ。
>>199 誤:if (strlen($msg) > 0) {
正:if (strlen($buf) > 0) {
202 :
198 :2013/03/27(水) 18:47:39.02 ID:MD7cwBMv
>>200 なにか、他にテクニックがあるかとも思ったのですが、
やはり、テーブルの結合をするしかないようですね。
有難うございました。
テーブルの構造もやりたい内容も詳しくわからないのにテクニックとか 出しようが無いだろw 必要な呼び出しなら何回だろうが必要なだけ呼ぶしかないと言うだけのこと。
結合すると > そのwhileループ内で、更に、5回ずつデータベースに問い合わせる これがそもそもなくなるんじゃないかっていうのが回答者の意見だと思う でも > テーブルを結合して取得すればよいかとも思うのですが、 > 問い合わせが、5回、10回と多くなるとテーブルの結合も難しいです。 これがわからない もうちょっと詳しく頼むわ
205 :
198 :2013/03/27(水) 19:26:24.23 ID:MD7cwBMv
>>204 不明瞭な点が有り、すみません。
意図していることは、結合するテーブルが5個、10個と多くなると、
SQLが複雑化するということです。
また、DBの設計上、結合が無理な場合も有り得るということです。
PHP関係なくね?
自分はデータベースを使うとき、内部は単一のテーブルしか使わん。 Sqliteメインからかもしれないが、分けるなら別ファイルにする。
208 :
nobodyさん :2013/03/27(水) 20:19:03.85 ID:r73Jwrfn
>>205 そうなってくると、DB設計見直してもいい気がします。
>>205 今スマホなんでURLは示せないけど、Oracle SQLパズルってサイト検索してみて。
一個のクエリで驚くほどいろんなことできるから。
ループ内のクエリは絶対だめ。
210 :
nobodyさん :2013/03/27(水) 20:38:31.67 ID:2iOdM1fp
PHPの練習問題などを公開しているサイトは無いですか? イマイチ練習法がわかんなくて
211 :
198 :2013/03/27(水) 20:55:59.05 ID:I26BQZQ8
Perlスレ荒らすのやめてもらえませんかね 昨日まで平和に進行してたスレが1日で50レス近く荒れてるんですよ かなり迷惑なので他のスレにお願いします
被害妄想乙
ストアド使えよ
>>209 >ループ内のクエリは絶対だめ。
これなんでダメなん? PDOなんかだとループ前提の仕組みもあるよね
>>216 > これなんでダメなん?
実行時間が長くなり、サーバにも負担がかかるので。
例えば1000行戻ってくるクエリをループして、それぞれの行で5回検索をしたとすると、
ループ内では合計5000回のクエリ実行が必要。
対ローカルでもクエリの実行は数ms程度かかる。
1回のクエリにつき1msかかるとすると、このループの実行時間は5秒。
ネットワーク経由だと、10ms以上かかったりするので、数十秒〜数分のオーダーになるかもしれない。
一方、全部JOINして1回のクエリで終わらせられれば、数十〜数百msくらいで終わる。
> PDOなんかだとループ前提の仕組みもあるよね。
MDB2しか使ったことないんだけど、PDOのその仕組みってどういう奴なの?
マスターテーブルなんかを事前にhashで持っておき、ループ内ではクエリの実行を行わず、 hashを参照する方法もある。 が、大抵はJOINした1回のクエリより遅い。
219 :
nobodyさん :2013/03/28(木) 13:33:51.38 ID:Cp6GJ5bL
【OS名】Linux 【PHPのバージョン】5.3.10 【連携ソフトウェア】MySQL phpでPDO使ってMySQLいじってる初心者です 指定の行の取得ってどうやるんでしょうか $stmt = $dbh->prepare('select xxx from xx', array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, $num); ってやっても最初の行しか取れなくて困ってます
ループで回すか、フェッチAllとか
ありがとうございます fetchAll使って解決しました
何でマルチポストに回答してんの? そこまでして自己顕示欲を満たしたいの?
いいチャンスだったしただサイトの宣伝したかっただけだよ
匿名でIDも出さずに回答してるのに、自己顕示欲とかwww
>>224 俺がマ板からこの板に誘導したから。
が、よく
>>222 をみたらム板にもマルチしてたのか。どうでもいいけど。
そういえばPDOのLIMIT句バグはもう直ったのかな
>>228 質問ならID出てるはずだから質問じゃないな
独り言はTwitterでやれ精神障害
>>229 君も心に何かの問題を抱えてるようだよ。
夫婦喧嘩ってこういう感じなのだろうか。 言い合えるってだけで羨ましいス… 別に何も無いヨ…
strposで文字カウントすると ">" が4文字もカウントする 使えないんですけど何でですか?
234 :
nobodyさん :2013/03/29(金) 00:53:54.84 ID:G7mP7j2C
>>233 htmlspecialchars()とか前に使ってない?
'>' (大なり) は '&gt;' になります。
>>234 ありがとーーー!!!
htmlspecialcharsを甘くみてたよ、ほんと助かった
>で4じゃねーの
更新してなかった・・・死のう
>>232 やっては駄目だといわれているのは、検索クエリ。
DBをキュー代わりに使ってるときは検索でもループ内で使うお
ループで検索クエリを流すかどうかは状況によるよ 一概にダメとは決めつけられない、というか決めつけるのは大抵の場合よくない
JOINできるんだったら、一回で済ませた方がいいだろ
とっくにそんな話は終わってんだろ
ループしないといけない場合でも、ストアドで実装できるならストアドの方がいいね。
250 :
nobodyさん :2013/03/29(金) 19:01:31.30 ID:YTM0Vtw2
【OS名】FreeBSD 【PHPのバージョン】5.4 【質問内容】 サブクラスに定義していない(スーパークラスの)関数 の中でサブクラスの変数は利用できないのでしょうか これができればサブクラスの関数をスーパークラスに 引き上げることができて少しエレガントになるのですが
その変数も基底クラスにもってけば?
【OS名】UbuntuServer12.04 【PHPのバージョン】5.3.10 【連携ソフトウェア】MySQL データが1行のテーブルに記録された情報をmysql_fetch_assocなどの取得系で求めると必ずfalseが帰ってきます。 ただ2行以上ある場合はしっかりと帰ってくるのですが、肝心の1行目の情報がスルーされて2行目以降のデータが帰ってきます。 例)AAAのみ : bool(false) 、 AAA BBB CCCの三行 : BBBとCCCのみ帰ってくる この場合ってどうしたらいいんでしょうか。SQL側の問題になるのでしょうか?
phpmyadminかコンソールからSQL実行したらどうなるの?
>>254 一行の場合でも結果がしっかり返ってきます。
書き忘れてましたがこのケース、whileで回すときだけ発生するのです。
>>255 ルールより自己の利益を優先するクズ野郎は消えろ
>>255 の特徴
IDを隠す池沼
情報を後出しする糞
260 :
nobodyさん :2013/03/30(土) 21:59:35.99 ID:OzKgLCO2
PHPの配列で存在しない値を変数に代入したときどうなるの? 例えば $a = $hairetsu['unko']; unkoに対応する値はない。 このとき$aにはなにがはいるの? こうしたとき、 isset($a) ってしたときfalseかえってくる?
>>260 >◆質問する時の注意
>・ 質問者として、態度をわきまえること。
試してから質問してはいかがでしょうか
>>260 だれもテメーみたいなksに期待なんかしてないんだからfalseが返ってこようがこまいが関係ないだろ
一生電子ゴミを生産してろ
これは < 3 で真のはずなのに結果が 34 22 76となり 3回繰り返されず1回出力されるだけなんですがどうしてでしょうか? <?php $result[0] = 34; $result[1] = 22; $result[2] = 76; for ($i = 0; $i < 3; $i++){ print $result[$i].'<br />'; } ?>
267 :
264 :2013/03/31(日) 12:16:43.33 ID:???
>>266 出ない理由を聞いているのであってあなたが試した結果はきいていません。
うっとうしいのでわざわざアンカうってレスしてもらわなくて結構です。
> これは < 3 で真のはずなのに結果が 34 22 76となり 何もおかしくない
269 :
264 :2013/03/31(日) 12:31:32.34 ID:???
267さんは偽です。 3回ってのは 34 22 76 34 22 76 34 22 76 こういうことです。for文は繰り返しですよね?
0からやり直せや
id出さない限り何度でも騙られるぞw
273 :
264 :2013/03/31(日) 14:32:08.32 ID:???
>>272 騙りではありません。
煽りたいだけなら黙っていてください。
ここにいる人たちはこんな簡単な質問にも答えられないのでしょうか?
俺は別にIDなんて気にしないけどIDに異様に拘る人がいるから質問するのならなりすましを防ぐ意味も込めてID出しとけばいいんじゃない
異様に拘るってアホか。騙りが出るからID出せって最初から言ってんだろ。テンプレ読めよアスペ。
276 :
264 :2013/03/31(日) 17:55:19.44 ID:???
IDとかどうでもいいねん。 質問したんだから答えろや 話が先に進まねぇやろ
あの手のガキはどっちみち答えないと思うよ
2重ループに陥って死ねや
質問に答えた上でIDだしてくれない? とか普通に言えばいいのに、いちいち煽る
またそんなこと言ってルールに文句言うw
>>280 ルール重視して、スレの目的が達成できないとか本末転倒なので
柔軟に対応しろってこと。
ルール作った目的は偽者防止のはずだが、明らかに偽者じゃない人
にもIDだせってやりすぎだろ。
一番のルールは、荒らしを相手にしないことだ。
ruby基地が消えたと思ったら此れだよ
284 :
281 :2013/04/01(月) 14:31:30.54 ID:BwLTFG84
mysqlで少し場違いな気がする質問ですが DBを利用した掲示板を作成しました データを20件までとして古いものから削除したいので 以下のようにコード組みました もう少しスマートにコード作りたいのですが ご教授ねがいます //日付と時刻の変数宣言 $date = date("Ymd"); $time = date("His"); //書き込み内容をDBへ $result_insert = 'INSERT INTO date(name,body,date,time) VALUES (\'' .$name.'\',\''.$body.'\','.$date.','.$time.')'; mysql_query($result_insert, $con); //指定件数の超過数算出 $result_select = 'SELECT * FROM date'; $number_count = mysql_num_rows(mysql_query($result_select, $con)) - 20; //超過分を削除 $result_delete = 'DELETE FROM date ORDER BY date,time LIMIT '.$number_count; mysql_query($result_delete, $con);
285 :
284 :2013/04/01(月) 14:32:53.28 ID:BwLTFG84
書き込んだら更新されて名前が
>>284 じゃなくなってました
気にしないでください
mysql_queryは非推奨
DELETE FROM date where not exists (select * from date order by date desc ,time desc limit 0,20 )
>>284 ・これ一件書き込んだら20件消えない?
・SQLインジェクションは大丈夫?
290 :
289 :2013/04/01(月) 15:24:18.12 ID:???
ごめん、 > ・これ一件書き込んだら20件消えない? これ勘違いだった。
必ずPREPARE使う様にした方がいい、すぐ慣れるさ。 基本的に読む時に20件引っ張ってくればいいんで 消すこともないと思う。
SQLのlimit部分だけ$_GET['limit']で取得してるんですけど、これでもDELETEとかDROPされちゃう可能性ってあるんでしょうか?
295 :
nobodyさん :2013/04/01(月) 15:31:52.11 ID:TTwnP515
すみません
>>292 ですがsageのチェックはずしたつもりが●のチェック外してました…
>>292 limit="; DROP TABLE hoge"
とでも書けばいけるやん?
SQLに;が入ってれば弾けばいい
>>298 どうせ半端なことするなら mysqli_real_escape_string() 使え
半端なら半端をつらぬきとおせ
300 :
284 :2013/04/01(月) 15:40:30.63 ID:BwLTFG84
>>286 >>293 わからんからそのままつかうことにします
>>287 単体で実行したけどエラーが出ました
#1093 - You can't specify target table 'date' for update in FROM clause
sqlよくわかってないんですみません
>>289 SQLインジェクションはnameとbodyに対し事前に行ってます
指摘ありがとうございます
303 :
284 :2013/04/01(月) 15:48:29.65 ID:BwLTFG84
>>291 ごめんちょっと調べたけど
俺の実力では意味がわからなかった
>>300 table名が同じだと無理。別名つけてやればいいはず
数を数えるのと消すのを別の行でやると複数同時に動いた時バグるぞ。
トランザクションにしてもいいけど
>>297 mysql_queryって2つのSQL同時に実行出来ないでしょ ;で区切っても
306 :
284 :2013/04/01(月) 16:28:56.62 ID:BwLTFG84
>>302 置き換えてみたら動かなくなった
>>304 言ってることはわかるけどどうやって実現するのかわからない
勉強しないと駄目だね
>>306 動かなくなった じゃなくてさあ・・・
いや、別に良いや俺のサイトじゃないし
他の部分がmyql_のままなんだろ mysqlとmysqliでは別モンだから全部変えなきゃいけないぞ
309 :
284 :2013/04/01(月) 17:26:22.71 ID:BwLTFG84
>>307 >>308 ごめん名知識が無くて
全部変えて見たらデータベースに接続なってもうた
よくわからなくなってしまった
310 :
284 :2013/04/01(月) 17:29:28.39 ID:BwLTFG84
説明不足でした mysql_connectをmysqli_connectに変えて接続かのうか処理したところ 弾かれたという現状です 受け渡す値もかえないとだめだったりするかもです
弾かれた って何がどうなったの?
312 :
284 :2013/04/01(月) 17:51:18.80 ID:BwLTFG84
$con = mysqli_connect('126.0.0.1', my_user', 'パスワード'); if (!$con) { $error = true; exit('データベースに接続できませんでした。'); } ここの処理で接続が弾かれてしまう そもそもmysqlとmysqliの違いもわかってない やばい
mysqli_connect_errno() の値は?
こうじゃね? $con = mysqli_connect('126.0.0.1', ’my_user', 'パスワード','DB名');
それ指摘するなら、 126も127になおしといてやろうぜw まあ書き込みでミスったんだろうけど
316 :
284 :2013/04/01(月) 18:40:42.39 ID:BwLTFG84
すみません
mysqli_select_db()の方でした
それで調べてみたら入れる値の順序が逆だったそうです
うまいこと動いてくれましたありがとうございます
まだ質問が残っているのですが
>>287 がうまく動いてくれない
>>304 の助言を元に挑戦してます
317 :
284 :2013/04/01(月) 18:42:24.59 ID:BwLTFG84
>>314 >>315 ごめんなさいそこは自分の使ってるサーバー情報なので
書き換えた際におかしくなっただけです
今現在動いてます
細かなところに気づいていただきありがとうございます
動いてる?それは何かおかしい mysqliはmysqlにくらべて多くの場合引数が1コ多い
$con = mysql_connect('126.0.0.1', 'my_user', 'パスワード');
>>312 ↓
$con = mysqli_connect('126.0.0.1', ’my_user', 'パスワード','DB名');
>>314
面倒くさいから全部設定に書いて引数無しで接続してるわ・・・
321 :
284 :2013/04/01(月) 21:02:06.55 ID:BwLTFG84
323 :
284nttkyo039102.tkyo.nt.ngn2.ppp.infoweb.ne.jp :2013/04/01(月) 21:28:12.90 ID:BwLTFG84
>>322 いえ、違いますよ
DBを使おうとおもい勉強がてら作ってみたのですがうまく行かない
長ったらしい文章になる等々あって今回質問しました
メール本文にメルアド埋めるのhtmlエンコしたいけどてまきまふん
そーせーじえっぐまふん
ソーセージエッグマフィン美味しいよね 朝マックのときは大抵あれ買う
味覚障害
328 :
nobodyさん :2013/04/02(火) 17:29:03.92 ID:pCXIVpZH
お知らせ 市原警察署の生活安全課の帰化人創価警官の指導の元、 入学式から2週間ほど、在日の創価学会員を主体とした自称防犯パトロールが、 2週間ほど行われることになりました 生活安全課の指導であることと、パトロールであることは、 絶対に公言してはいけないとの指導も、帰化人創価警官より出ています 期間中は2人組の在日の創価学会員が、頻繁に創価批判者の自宅周辺を、 うろつき回ると思われます 日本人の方は、充分に注意してください
ID出てるけど質問に見えない気がしないでもない
ソーセージなんとかもいいけどハッシュポテトもいいよ あれは癖になる
メール本文にメルアド埋めるのhtmlエンコしたいときはどうかきますか?
母国のコミュニティでどうぞ
333 :
nobodyさん :2013/04/03(水) 08:13:37.42 ID:h+HuJAZG
HPにphpのソース載せたいんだけどソースを無効にして表示する方法を 教えてください。よく、php系のページに載せてあるけどあの方法がわからない。
preとかcodeとか
ENT_COMPAT|ENT_HTML401と等しい定数 例えばENT_DEFAULTが定義されてないとかバカだろw その後の引数の$encodingを触りたいだけなのに 延々とENT_COMPAT|ENT_HTML401と書かされるww
いまどき5.4未満とか
PHP書くやつがHPとか言っちゃうのか
339 :
nobodyさん :2013/04/03(水) 10:39:54.58 ID:Ko35x5uB
imagejpegについて質問させてください。 imagerotateで画像を回転させて imagejpeg($rotate_file, null, 100); とすると画像データがそのまま表示され、画像が表示されません。 以下のようにヘッダーをつけると header("Content-Type: " . $mime . ""); imagejpeg($rotate_file, null, 100); 「Warning: Cannot modify header information - headers already sent」というエラーが出ます。 HTML上に画像として表示するにはどうすればよいのでしょうか?
>>339 画像処理スクリプトは、HTMLと混在させず、画像専用に単独でPHPファイルに記述します。
その画像ファイルを<img src="gazou.php">などとしてHTMLファイルから読み込みます。
341 :
339 :2013/04/03(水) 12:14:26.87 ID:Ko35x5uB
>>340 回答ありがとうございます。
画像処理部分は色々な関数を突っ込んでる部分の一部になります。
function.php内にあるfunction rotate(){ 処理 } という感じになります。
単独となるとfunction.phpからrotate()関数を切り出さないといけないということでしょうか。
そうなるとちょっと構成そのものを見直さないといけないので意外と面倒そうですね。
>>339 >function.phpからrotate()関数を切り出さないといけないということでしょうか。
いや、切り出す必要はないと思う。
画像専用ファイル(gazou.php)から、その rotate関数を読み込めばいいんじゃないかな。
そもそもローテーションしなければ表示されるの?
試しにヘッダー出力を最初にやってみ
あーあと画像以外のデータ一切出さないようにな
345 :
339 :2013/04/03(水) 13:59:52.79 ID:Ko35x5uB
みなさん回答ありがとうございます。 出力側は <html> <body> <?php require_once(関数ファイル); echo "<img src=" . rotate('roteta.jpg') . ">"; ?> </body> </html> 関数ファイルには function rotate($filename){ $filenameを回転処理 imagejpeg($filename); } という風にしています。 恐らくimg srcで指定しているものがバイナリデータそのものになっているのでおかしなことになっているんだと思います。 img srcで指定するファイルはあくまでファイル形式である必要があるという認識でいいのでしょうか?
img src=なんちゃら ってあったら、サーバじゃなくてクライアントのブラウザがなんちゃらを 取りに行くだろ?よく考えてみてよ。
埋め込む方法も無いことは無いけど、とりあえず Content-Type: image/jpeg のヘッダとバイナリを出すだけの php作ってみ
sample.html <html> <body> <img src="./gazou.php"> </body> </html> gazou.php <?php require_once(関数ファイル); rotate('roteta.jpg'); //出力処理 ?>
349 :
339 :2013/04/03(水) 14:23:36.76 ID:Ko35x5uB
みなさん度々の回答ありがとうございます。
>>346 確かにブラウザ側からするとバイナリ表示されるアドレスを追いかけようとするわけですからうまく表示されるわけないですね。
>>347 画像を表示するだけのものは作ってみたのですが、全部1つのファイルでまとめれればラクだな〜と思って
呼び出せればと思っておりました。
>>348 こちらは1度試してうまくいくことは確認しておりました。
ただファイルを1個にまとめることが出来ればラクだな〜と思っていたため
ファイルデータをimg srcに渡せばいいのではないかと勘違いしておりました。
使うものをAPI的にまとめていまして、画像だけ別ファイルを作成して引っ張ってくるのはどうなんだろうかと思ってしまっておりました。
一般的には手を加えた画像を表示させる際は、別ファイルを用意してそれを経由する形で表示させるのが普通なのでしょうか。
一人で開発などしていてそのへんの作法がよくわからないこともあって今回の質問となってしまいました。
httpの基本的な仕組みからいって、HTMLファイルはHTML等で表示して、 画像ファイルは別ファイルになるから1つにまとめるのは難しいんじゃない。
大して難しくは無いが、意味あるんかな
どうしても埋め込みたいなら src="<?=data:image/jpeg;base64,'.base64_encode($バイナリデータ)?>" とかでできないこともないけど、、こっちのが扱いにくい気が
353 :
339 :2013/04/03(水) 15:14:12.46 ID:Ko35x5uB
みなさん本当にありがとうございます。
1つにまとめるのはそんなに深い意味はないです。
単純に1個のファイルにまとまってたらラクかな〜程度のものです。
画像に関しては別ファイルから取ってくるようにします。
その方がHTML的にもスマートかと思いますし。
>>352 そんなやり方あるとは知りませんでした。
このやり方だとさすがに扱いにくい気もしますが、データをそのまま表示できる方法として覚えておこうと思います。
ありがとうございました。
世の中に腐るほどあるWebサイトのHTML眺めるといいよ
355 :
nobodyさん :2013/04/03(水) 15:56:07.94 ID:HfBT+72d
【PHPのバージョン】5.4 【連携ソフトウェア】MySQL 【質問内容】 さくらレンタルサーバースタンダードに作ったMYSQLのデータをphpで書き出したページを公開したいのですが、 表示するphpファイルにSQL文を書いているので、phpファイルをダウンロードすると SQL文が丸わかりになってしまうと思うのでファイルに書かないようにしたいです。(隠したいです) データベースのID等を記したのをreuire_onceで別ファイルから読み込めることを知ったので、 SQL分もその要領で別ファイルから引っ張ってくればいいのかなと思ったのですが、 普通はどのように隠すものなのでしょうか、MYSQLとPHPだけではなく他のプログラミング言語やサービスなども組み合わせるものなのでしょうか。 それともSQL分を隠さない(別ファイルから出力しない)のが普通なのでしょうか。 あと、ソースの途中の$kekka["0"]とかも見えてしまいますが、これも隠したい場合、 reuire_onceで他のファイルから引っ張ってくるものなのでしょうか。 行数の関係で色々省いていますがソースです。 $tempHtml .= " <td>".$kekka["0"]."</td> <td>".$kekka["1"]."</td>; <tr> <?= $tempHtml ?> </tr> レンタルサーバーの仕様を見るとPerl Ruby Python PHPが使用可能のようでした。 もし見当違いの質問をしていたらすいません。 よろしくお願いします。
通常はphpからは読めるけどhttpdからは読めないところに置く ドキュメントルートより上とかね 無理ならディレクトリ作ったり作らなくても、.htaccess で制御 >あと、ソースの途中の$kekka["0"]とかも見えてしまいますが 普通はこれは無いと思うけど
DBのIDを別ファイルから持ってくるんじゃなくて、 DBの処理まるごと別ファイルにやらせよう。 そのファイルは、直接参照で見えないようにしておこう。
つか、どうやったらPHPファイルをダウンロードできるんだ?
>>358 一般的なファイルとして認識させればPHPファイルを
そのままダウンロードしちゃう
初歩のトラブルや名
レンタルサーバが設定をミスってたときのことを考慮しようってことかなぁ まぁ、その辺を考慮するなら.htaccessで制御もやっちゃいけないね
361 :
355 :2013/04/03(水) 17:10:13.72 ID:HfBT+72d
皆さんどうもありがとうございます。
>>あと、ソースの途中の$kekka["0"]とかも見えてしまいますが
>普通はこれは無いと思うけど
すいません、勘違いしておりました。
Irvine等のダウンロードツールで
http://hogehoge.com/test.phpをファイルとしてダウンロードすると内容が見えると思ったのですが 、
もう一度確認してみましたら、ダウンロードしたtest.phpを見てもphpの処理部分は見えませんでした。(消えていました。)
DB処理の部分は用意したファイルに処理させるのが一般的とお見受けしました。
アドバイス頂いたように、
/www/の上階層の非公開ディレクトリに別ファイルを用意して、そのファイルにDB処理をまるごとやらせるようにしてみます。
レス下さいましてありがとうございます。
>>359 どうやって一般的なファイルとして認識させるの?
>>356 > 普通はこれは無いと思うけど
なら、
> SQL文が丸わかりになってしまうと思うので
これも普通はないよね。
普通のWebアプリケーションは、アプリケーションのroot以下に全部置いちゃうよ。
/var/www/htmlより上にアクセスできないことだってあるんだし。
ああ、SQL文だけ別に抜き出してるのかと思った phpのソースに埋め込んでるなら読まれないよ。
意味わかんない
>>367 httpでアクセスすると対応してくれる人はhttpデーモンさん
ftpでアクセスすると対応してくれる人はftpデーモンさん
sshでアクセスすると対応してくれる人はsshデーモンさん
どのデーモンさんがどのファイルに入れるかはコンテキストで設定できるんだけど
普通は、httpデーモンさんはphpファイルさんに直で話しかけられない恥ずかしがりやさんだから
apacheさんに変わりに聞いてもらっている
だからブラウザってphpファイルを見てるのじゃなくて
apacheさんが 「phpさんがこんなこと言ってたぜ」って言ってるのを見てる
ちなみにhttpデーモンさんは普通はアパッチさんのwwwより上を見にいけないので
wwwより上に置いておけばブラウザからはアクセスできない
phpファイルはアパッチさん(の一部)が読みに行くから
php内でwwwより上にリンクを貼ればアパッチさんの入れる範囲で読み書きできる
SQL接続関係は 私はwwwより上に置いている
ちなみに私はこのDB関係のクラスを
DIO データインターフェイスオブジェクト とよんでいる
DIOはtheWorldメソッドなどを持つ
メソッドじゃなかった ファンクションだた
370 :
nobodyさん :2013/04/03(水) 21:00:14.58 ID:YRjUCssz
WordPress での作業における質問なのですが、PHP一般の話題だと思いこちらで質問させて頂きます。 今、Windowsのローカル環境で error_reporting を 32767 にセットして警告をシラミ潰しにしているのですが、 Declaration of Walker_Nav_Menu_Edit::start_el() should be compatible with Walker::start_el(&$output, $object, $depth, $args, $current_object_id = 0) in D:\localhost\wordpress\wp-admin\includes\nav-menu.php on line 207 というのをどうやっても消せません。 これは継承元のクラスメソッドとシグニチャが一致しない場合の警告なのですが、元の Walker::start_el と同じに変更しても消えないのです! 同じ警告がこのファイルの別のクラス)(Walker_Nav_Menu_Checklist)でもやはり発生して消えません。 この種類のエラーはWordPressのいたるところに散在していて、他は確認できる範囲では全て消せました。(このファイルの別のクラスでも消せたものもあります) しかしこのファイルのこの箇所のみ解消できないのです。 どなたかお分かりになる方はいらっしゃいませんか?
>>368 _, ,_
w (・ω・ )
(~)、 / i )
\ ` |_/ /|
`ー_( __ノ |
( `( 、ノ
wwwww_ノ`i__ノ
>>368 > 普通は、httpデーモンさんはphpファイルさんに直で話しかけられない恥ずかしがりやさんだから
> apacheさんに変わりに聞いてもらっている
> httpデーモンさんは普通はアパッチさんの
2度もでてくるってことはhttp daemonとapacheがそれぞれ存在する環境なんだろうなぁ。
phpダウンロードされたらSQLインジェクションどころの騒ぎじゃねーな
>>375 上の奴、冗談なのかマジなのか判別不可能なんだよ。
>>376 保存されるファイルが〜.phpだからダウンロードできてると勘違いしたに賭ける
apacheの設定でやらかしてるとダウンロードできちゃうよな あと ~ とか .bak で落とせるところが今でもある どうみてもレン鯖なところにビッグチャンスあり
379 :
nobodyさん :2013/04/04(木) 16:19:30.19 ID:ukDPOk48
関数の読み方一覧はありますか? sprintf (エスプリントエフ) ob_start (オービースタート) とかでよい?
381 :
370 :2013/04/04(木) 17:59:41.69 ID:JZyowHPw
>>370 WordPressはさっぱり知らないし、どのWPのバージョンの話なのか、PHPのバージョンは何なのか
さっぱりわからないが、何で消そうとしてるの?
出なくなるまで、ログレベルを下げるわけにはいかないの?
それと、どうやって消してるのか知らないけど、WP本体を変更しちゃったら、バージョンアップしたら
変更が消えちゃわない?
あとググった?
384 :
nobodyさん :2013/04/05(金) 04:18:02.22 ID:OQtVBSh8
getimagesize()でアップロードしたファイル(拡張子は.jpg)の画像タイプをチェックしてるんですが ある特定の画像のみ上手くいきません $fileType = $_FILES['uploadPic']['type']; if(preg_match("/jpeg/", $fileType)){ jpgならアップロード処理 }else{ echo $fileType; } としても、jpgと判定されない上に、echo $fileTypeで何も出力しません さらに別のやり方で、 switch(exif_imagetype($_FILES['uploadPic']['tmp_name'])){ case IMAGETYPE_JPEG: アップロード処理 break; default: echo exif_imagetype($_FILES['uploadPic']['tmp_name']); } この方法でも、 echo exif_imagetype($_FILES['uploadPic']['tmp_name']); で何も出力しません 何が原因なんでしょうか PHPは5です
385 :
384 :2013/04/05(金) 04:51:07.31 ID:???
自己解決しました ファイル容量的には全く問題なかったんですが、画像の寸法が大き過ぎたようです 一辺が3000px以上あると、PHPはメモリエラーを起こすらしいです 知らなかった…
>>370 >>381 Reflectionで調べたら、違いがあるかもしれないよ。
編集しているつもりが別のファイルだったりするってこともない?(おれはあるw)
しかし、WPはいまだに引数の参照渡しとかやってるのか。 まぁ、後方互換性じゃしょうがないか。
いや、意味わからんし・・・なんでフォームのvalueにechoしてんの?
そんなのphpの範疇じゃない
>>391 <input value="<?=urlencode($moji)?>">
>>389 やってみたらどうなった?
$mojiに何も入ってないとか?
$_REQUEST['moji'] にしてみたら? XSSしてくださいって感じだけどもw
>>391 なんか、いろいろわかってないな。
?以降はURLパラメータという奴で、HTTP GETしたら勝手に付く。
hoge.php
--
<title>Test</title>
<body>
<form method="GET" action="search.php">
<input type="text" name="term">
<input type="submit">
</form>
</body>
--
を表示させて、テキストにabcと入力してsubmitしてみろ。
URLが
http://.../search.php?term=abcになってるから 。
んで、自分自身のURLに対してGETし、変換結果をテキストボックスに表示させたいなら、こう。 hoge.php -- <?php $converted = isset($_GET['term']) ? 'hoge' : ''; ?> <title>Test</title> <body> <form method="GET" action="hoge.php"> <input type="text" name="term" value="<?php echo $converted; ?>"> <input type="submit"> </form> </body> --
まあ、このままだと、永遠にhoge.phpへのGETを繰り返すだけなんですけどね。
打ったそばからURLに変換していきたいってことだと思ったんだけど? PHPじゃ無理だろ
>>400 URLを変換する意味が分からない。
次にGETしたときに、パラメータが付加されるのだから。
402 :
nobodyさん :2013/04/05(金) 14:19:13.57 ID:39+wkXdW
【PHPのバージョン】5.3
【PHPのバージョン】MYSQL
001.php、002.php、003.php・・・をMySQLのDB内レコードの、
指定したIDのレコードを表示させたいのです。
今はこんな感じでそれぞれ、ファイルを用意しようかと思っているのですが、
http://www.rupan.net/uploader/download/1365139040.png ファイルが数百ファイル必要になってしまい、作業手順も多くなってしまいます。
003.phpを004.phpにファイル名をリネーム
004.php内のsql003.php→sql004.phpに変更
sql003.php内のwhere id = 3 を id = 4に変更 ・・等々
これらの方法を実現させるにはphpの何かの機能を使えば実現出来るでしょうか。
また、一般的にはどのように実現させるものなのでしょうか。
403 :
402 :2013/04/05(金) 14:24:04.75 ID:39+wkXdW
訂正です。 ×【PHPのバージョン】5.3 ×【PHPのバージョン】MYSQL ↓ ○【PHPのバージョン】5.3 ○【連携ソフトウェア】MYSQL
406 :
370 :2013/04/05(金) 14:42:12.80 ID:???
>>382 >>383 >>386 レス有難う。解決した。
問題を単純化するとこういうことだった
class A {
function meth($arg1, $arg2 = 0) {}
}
class B extends A {
function meth($arg1 = 0, $arg2 = 0) {}
}
class C extends B {
function meth($arg1, $arg2 = 0) {}
}
// エラーレポート内容
Declaration of C::meth should be compatible with A::meth($arg1, $arg2 = 0) in ........
1.継承メソッドが親メソッドにさらに初期値を追加定義することはエラーにならない。つまり、Bにおけるmethの定義
2.継承メソッドが親メソッドより初期値を少なくすることはエラーになる。つまり、Cにおけるmethの定義
ただ、エラーレポートがCの定義内容をAとの比較でしか報告していないのでBを調べることを怠った。
要するに、PHPのエラーレポートシステムが、おれの怠慢を補ってくれない程度にクソだったってことだ。
408 :
407 :2013/04/05(金) 14:51:27.81 ID:???
悪い、このURLはPostgreSQLのだった。 MySQLの場合どうやるかはググってくれ。
for (i = 0; i < 100; i++) { //数行の処理 } を100ブロックに展開するって話思い出した。
ダメだー 無料の掲示板導入しようとしてるんだがことごとく失敗するw 初心者でも設定が簡単な無料掲示板教えて できれば画像などを投稿できるやつがいい 夢幻ってサイトので10ぐらい無料の試したが全部しっぱいしたw
スーレーチー
413 :
402 :2013/04/05(金) 19:24:49.12 ID:39+wkXdW
勉強不足でした。。入門書通読して勉強してきます。
>>407 なるほど、普通はそういった方法を使うのですね。
ありがとうございます、勉強になります。
このスレ、まじで和むな。
このスレは他の質問スレより回答がわかりにくく、厳しいと思いました。
質問は?
さきゅばすがあるフォルダに移動して さきゅばすCLI版を起動させるバッチファイルを作ったんですが 名前を指定して実行などでは普通に出来るのにPHPのexec();でだけ出来ません。 どうすればexecで起動出来ますか?
【OS名】Windows
【PHPのバージョン】5.3.18
【連携ソフトウェア】MySQL VertrigoServ
【質問内容】
>>417
>>417 >出来ません。
ってだけで、
エラーメッセージとかコマンドの詳細を書かないってことは、
エスパーできる範囲で質問せざるをえないわけだが。
イベントログかPHPのエラーログ見た?
セーフモードは?
フルパスで起動してる?
パスに空白入ってない?
権限は?
exec('test.bat'); とでもやってんだろ
422 :
nobodyさん :2013/04/06(土) 18:25:33.81 ID:yOARrNMO
【PHPのバージョン】5.3 【連携ソフトウェア】MySQL <?php $hoge = intval($_GET["hoge"]); $q=<<<eot select * from table where id = $hoge; eot; $re=mysql_query($q); $hairetu=mysql_fetch_array($re); ?> <body> <?= $hairetu["taijuu"] ?> これで実行すると下のようなエラーが出てしまいます。 Notice: Undefined variable: taijuu in C:\xampp\htdocs\xxxx.php on line 100 3行目を追加($taijuuを定義)して、<?= $hairetu ?>に変更すると、 (途中省略) $re=mysql_query($q); $hairetu=mysql_fetch_array($re); $taijuu = $hairetu["taijuu"]; ?> <body> <?= $hairetu["taijuu"] ?> 正常に<?= $hairetu["taijuu"] ?>が処理され表示されます。 なぜ、<?= $hairetu["taijuu"] ?>ではエラーが出るのでしょうか。
>>422 下のほうに$taijuu変数があるんでしょ。
そちらを書き換えればいい。
100行目って出てるよ。
424 :
nobodyさん :2013/04/06(土) 19:04:29.97 ID:yOARrNMO
>>423 ありがとうございます。そこが問題だったようです。
そこを書き換えて、あと100行目前後の変数の部分が変な記述になっていたので
これも直したら正常に処理することが出来ました。
426 :
nobodyさん :2013/04/08(月) 09:47:10.31 ID:Hgt8t7EN
【OS名】CentOS 6.0 【PHPのバージョン】5.1.6 【連携ソフトウェア】なし 【質問内容】 ファイルを圧縮・解凍したいと思っています。 PHPが5.1.6なのでZipArchiveがありません。 phpMyAdminなどの追加も出来ない環境なのでモジュールを使ってするということができません。 コマンドも権限が無いので叩けない状態です。 こういった状況で圧縮・解凍する方法がPHPであればアドバイスもらえないでしょうか。
ピュアphpのコードで自力でやる
5.1.6でも標準でgz使えるんじゃないのか。 調べてサーバーで使用禁止の設定を確認したか。
>>426 つまり、zlib関数も使えないってこと?
430 :
426 :2013/04/08(月) 11:39:04.03 ID:Hgt8t7EN
みなさん回答ありがとうございます。 検索ワードが悪かったせいか、上位にZipArchiveに関する事が多く出ていました。 zlib関数があることを知りませんでしたので、そちらで汎用的なzipファイルを作成できるという ことであればそちらを使ってみたいと思います。
432 :
nobodyさん :2013/04/08(月) 23:33:19.67 ID:w0n+quq7
【OS名】CentOS 5.3 【PHPのバージョン】5.1.6 【連携ソフトウェア】なし / モジュール追加不可 【質問内容】 2038年を超える日付計算をしたいのですが、PHP5.1系のためDateTimeも使えず モジュールも追加出来ないためPearで計算することも出来ません。 こういった状況で2038年を超える日付計算をするにはどのようにすればいいのでしょうか?
>>432 unixタイムのマイナス値使わないなら マイナス値対応させれば2106年くらいまでけそうだな
独自ファンクション作ってしまえ
そしてここで公開しよう
64bit使えばいいじゃん?
日付計算が具体的に何をさすかで自分で実装可能なんじゃね
>>406 亀だがありがとう。
出くわしたときに助かります
437 :
426 :2013/04/09(火) 09:05:47.21 ID:Bv2LP4mI
そういえばPearとかはdatetime使えなくても使えるけど マイナス値になったら2038年以降とみなして計算するとかそういう作りになってんのかね。
マイナスを考慮してるといっても2106年で限界が来るだろ 根本的解決になってないけどそれでいいのかよ
ここは9999年まで使えるユリウス通日をだな
class MyDate { private $year; private $month; private $day; public function addYear($year) { $this->year += $year; } public function addMonth($month) { $this->month += $month; if ($this->month === 12) { $this->year++; $this->month = 0; } } } とかのクラス作ればいいんじゃないかと思うんだが、違うのかな。
443 :
nobodyさん :2013/04/09(火) 19:25:12.90 ID:Bv2LP4mI
2106年まで計算出来れば十分だよ そんときゃ俺はもういないし
俺はいるかもしれない
445 :
sage :2013/04/09(火) 20:32:27.31 ID:???
2106までいるってなにもんだよ
新人類
今俺ハタチだろーあと93年だろー 113・・・ギリギリセーフだろー
448 :
nobodyさん :2013/04/10(水) 01:21:33.51 ID:V2usnkco
449 :
nobodyさん :2013/04/10(水) 01:22:41.12 ID:V2usnkco
>>448 の続き
phpのソース部分です。
$doukutu=<<<EOM
select
洞くつ.レベル
洞くつ.技
スキル.攻撃力
スキル.消費MP
from 洞くつ
join スキル
on 洞くつ.技 = スキル.技
where 洞くつ.敵 = 'スライム';
EOM;
$query_doukutu=mysql_query($doukutu);
$kaijou=<<<EOM
select
海上.レベル
海上.技
スキル.攻撃力
スキル.消費MP
from 洞くつ
join スキル
on 海上.技 = スキル.技
where 海上.敵 = 'スライム';
EOM;
$query_kaijou=mysql_query($kaijou);
452 :
nobodyさん :2013/04/10(水) 08:28:04.93 ID:V2usnkco
>>450 ありがとうございます、ユーザ変数を使うと後で参照出来るのですね。
さっそく活用してみます。
>>451 なるほど、書いていませんでしたが前の行で敵名を別で読み込んでいるので、
それをwhere 敵=に読み込んでいたのですが、
敵テーブルに場所列を付けるというやり方もありますね、検討してみます。
ありがとうございます。
伝わっているとは思うけど、洞窟、海上、山道テーブルを敵テーブルとして統合するってことね そもそも何を心配しているかによるけど。 スキルテーブルを何度もjoinするのが心配? それより地形ごとに何度もクエリを発行するほうが負荷。 てか1リクエスト事に地形は1種類だけでいいのでは?だったら参照する地形テーブルを動的に変えるか、上で書いたように統合すればいい
どうせ、キャッシュに入ってるだろ。 心配なら、自分でキャッシュすればいい。 この件でSQLの書き方工夫したところでたいした効果はない。
クラスについて「オブジェクト」「new」「カプセル化」の用語を使って説明しなさい。
落書きは、自分のノートに
PHP初心者にありがちではあるが いまさらオブジェクト指向の話題とかふるなよ あんなのは最早知ってて当然のレベル
プログラミング、オブジェクト指向のどちらの初心者にとっても、やっぱり難しい話だと思うよ。
459 :
nobodyさん :2013/04/10(水) 16:01:47.70 ID:IX7jFUbJ
依存性の注入についてわかりやすく3行でまとめて下さい
PHP厨をもっと量産してくれ PHP使ってる奴って安価で切りやすい労働力だからもっと社会に輩出してほしい それ以外にPHP厨に価値はないからな
いまはしらんが。 昔、PSや任天堂はダメでセガというやつ、windows、unixはダメでMacというやつがいて 異常な情熱をして燃やしてるのがいたが。 同じ事で主流、メジャーに対する反抗なんだろうな。 それ自体かいいか悪いかでなく、メジャーだからという理由。
>>461 よし、そのためにはPHPのお仕事を今よりももっと量産してくれ
そしたら簡単な仕事がさらに増えてルーチンワークで金を稼げる
464 :
nobodyさん :2013/04/10(水) 21:54:25.24 ID:V2usnkco
>>453-454 なるほど、キャッシュに入るのでしょうか。それでしたらそれに越したことは無いのですが、
リクエストが多くなっていることと、また、ソースが複雑になっていたことも考慮して
テーブルを統合してみました。アドバイスどうもありがとうございます。
465 :
nobodyさん :2013/04/10(水) 22:42:35.48 ID:B4F75Z08
PHPで作った掲示板に書き込みがなされるたびにIPアドレスを保存するようにしている。 ここからさらにIPアドレスから自動的に国まで特定したいと思ってるんだけどいい方法無い? ちなみにGeoIPというツールをインストールすればIPアドレスから国を調べることができるらしいけど あいにくうちのレンタルサーバー(000webhost)はシェルの操作ができないからmake; make install;とか出来ないんだよね。 なんかもっと簡単に、どこかにIPアドレスを投げると国名を返してくれるネットサービスとかあればいいんだけど。
なんでPHP厨って
>>465 みたいにウェブの基本も分かってないゴミしかいないんだろうな。
ウェブの基本も知らずにウェブを通して利用するシステム書いてるとかありえね。
そんなことも知らないレベルならセキュリティリスクもありまくりだろうな。
悪意のあるハッカーに踏み台を用意してるゴミ=
>>465
>>465 お前がやらなきゃならないのは国の特定ではなく今すぐ回線を切ること
>>466 > なんでPHP厨って
>>465 みたいにウェブの基本も分かってないゴミしかいないんだろうな。
>
> ウェブの基本も知らずにウェブを通して利用するシステム書いてるとかありえね。
>
> そんなことも知らないレベルならセキュリティリスクもありまくりだろうな。
>
> 悪意のあるハッカーに踏み台を用意してるゴミ=
>>465 具体的に465のどこの発言からwebの基本が分かってないと判断したのだろうか?
ちなみに、IPアドレスから国を判断するというのであれば、自分で調べれば自前で実装できる。
GeoIPのメリットは都市まで調べられるところだな。
タイムスタンプを視認しやすい年月日時フォーマットに変換するのってプラグインつくらず標準機能でできるの?
strftime のことかな
>>472-473 なんでルールを無視しようと思ったの?
そんなに荒らしたいの?
お前らみたいなクズのせいでPHPが馬鹿にされるんだよ
というか、ここのルールだなw id出さずに聞くとはね。
>>472 秒数なんで足し算とか割り算とかしたら簡単にできるよ
>>472 Cロケールの可能性を考慮して、ここはdate()で。
365541705を 2013/04/10 (Wed) 06:08:25 に変換するという質問です
さすがに id 出してくれないとw
483 :
nobodyさん :2013/04/11(木) 17:04:10.44 ID:HixpqTLW
すみません、なんのことかわかっていませんでした sageを削除するんですね
484 :
nobodyさん :2013/04/11(木) 17:09:45.63 ID:itiKrwCW
つい最近、PHPではうるう秒が使えず、libcなんかと互換性が無いみたいな話を見かけたような気がするがきのせいか?
485 :
nobodyさん :2013/04/11(木) 17:10:02.05 ID:0KD/BzYB
IDが出ないこの板が悪い
うるう秒って会議で決めるもんなんだから無理に決まってんだろがクズがよー
487 :
nobodyさん :2013/04/11(木) 17:16:41.35 ID:HixpqTLW
簡単にはできないということですか?
お前が毎日ニュースサイトで閏秒の決定がないか監視する必要がある
>>483 echo date("Y/m/d (D) H:i:s", 365541705);
echo strftime("%Y/%m/%d (%a) %H:%M:%S", 365541705);
ロケールとか影響しないフォーマットにしてみたけど
この数字だと 1981/08/01 (Sat) 19:21:45 になるから元が違う?
まあ 60 秒が存在できるかどうか、というのもあるしなあ
>>489 え!元が違うことはないかと
メール送信時に同時に書き込まれてます
492 :
nobodyさん :2013/04/11(木) 17:37:33.71 ID:HixpqTLW
すみません またsage削除を忘れました
元が(エポックタイムとは)違う何かなのでは。
>>491 頭の1抜けてるっしょ、1365541705 だろう
じゃなくて、単に一番上の「1」が抜けてるんだな 1365541705
ああかぶりました。495=493
497 :
nobodyさん :2013/04/11(木) 17:48:38.28 ID:itiKrwCW
ちょっと手元で試してみた。 test.c -- #include <stdio.h> #include <time.h> int main() { time_t t = 915148821; struct tm *tm = localtime(&t); printf("%s\n", asctime(tm)); return 0; } -- test.php -- <?php echo date("Y/m/d (D) H:i:s", 915148821) . PHP_EOL; -- うるう秒を考慮するzoneinfoを使うと… $ TZ=/usr/share/zoneinfo/right/Japan ./test Fri Jan 1 08:59:60 1999 $ TZ=/usr/share/zoneinfo/right/Japan php test.php 1999/01/01 (Fri) 09:00:21 うーむ…。
解釈の違いによって20秒くらいの誤差が出てもかまわないという考え方もある。
499 :
nobodyさん :2013/04/11(木) 18:23:57.62 ID:HixpqTLW
メールを見直しましたが頭に1はついてないみたいです 365541705は date( substr(time(), -9) ); 2013/04/10 (Wed) 06:08:25は date( "Y/m/d (D) H:i:s", time() ); という関数で吐き出されています
>>499 なんでわざわざ substr で 後ろから9文字取り出してるの?
10桁あるんだから 1が落ちて当然だよね?
>>500 ワロタw
時刻が関係する場所だから-9がずーっと時差関係の数字に見えてたww
GMT+9だもんな日本時間
503 :
nobodyさん :2013/04/11(木) 18:54:33.33 ID:HixpqTLW
>>500 あれの意味はうしろから9桁なんですね
どうしてそうしたのか尋ねてみます
明日以降になると思います
>>500 10桁になる前に書かれたロジックとか。
それはすごい
506 :
nobodyさん :2013/04/11(木) 22:45:58.95 ID:yLGwf0zn
>>471 > ちなみに、IPアドレスから国を判断するというのであれば、自分で調べれば自前で実装できる。
IPアドレスの国への割り振りって動的に変動しているけどそれはそういうのに追従できる方法?
15桁の数字の真ん中の5桁を抜き出すの1行で書けます? 123456789123456の真ん中の67991
文字列変換とsubstr
文字列に変換?
そもそもストリップをどうするのか解らなくて 汗
var [ alias, dom ] = ate.split("@");
10万でわって10万で割ったときのあまり
>10万でわって10万で割った 最初は全部ひらがなで「わって」って書いてるのに、次は「割って」って書いてる。 この一貫性のなさは絶対アスペだろ。 そこを変えるなら全部変えるべき。 最初は「100,000でわって」にして、 次は「10万で割って」にするとか。 これだったら「最初と次を変える」という一貫性が窺えるから気持ち悪さはない。 中途半端に変えるってのは精神的に安定してない証拠。 こいつ絶対にアスペ。 普段のコミュニケーションにも支障をきたしてそう。 気持ち悪い。
一貫性の無さは、むしろアホなんじゃ…… アスペの統一性の高さはちょっと異常レベルだし
そういうくだらない部分の指摘しかできないのもアスペルガーか何かじゃないの?
>>515 技術的なツッコミができないからそういう感じになっちゃうのか
何でここにいるの?
>>519 文字列変換は暗黙の型キャストを嫌う場合の処理。
substr はヒントも何もそれが答えだよ。
自分で調べてないのが丸わかりだ。
あとたぶん8を9に置換する処理が必要だな
>>515 これマジで書いてるよな
こういうキモイの初めて見た
世の中キチガイってマジでいんだな
>>525 って自分がキチガイでリアルでもキモがられてるのに気付いてなさそうw
527 :
nobodyさん :2013/04/14(日) 13:16:41.05 ID:GUqrSjpz
$a[0]から$a[200]の数値が入った配列の操作について聞きたいです。 配列の範囲を指定して、その合計値を出す方法が知りたいです。 $a[50]から$a[70]の数値をすべて合計した値を出すなど
>>527 array_sum(array_slice($array, 50, 21))
529 :
nobodyさん :2013/04/14(日) 15:05:52.19 ID:GUqrSjpz
530 :
nobodyさん :2013/04/15(月) 17:12:04.80 ID:Zye3ucx/
自分用にゲームの発売日なんかを自動で集めてきて表示するサイトってPHPで作れますか?
532 :
nobodyさん :2013/04/15(月) 17:17:26.44 ID:Zye3ucx/
>>531 ありがとうございます
ついでといっちゃなんだがなんかヒントくれよな
かき集めてきてHTML出力すればいいんじゃないの 定期的にcronなりタスクスケジューラなんかでかき集めておいて、 生成しておいたプレーンなHTMLにアクセスするほうがいいかもしんない。
534 :
nobodyさん :2013/04/15(月) 17:25:23.97 ID:A3jblSzx
すいません、開発環境を構築していたところ、 本番環境ではでなかった 以下のようなエラーが表示されるようになってしまいました。 A PHP Error was encountered Severity: Notice Message: Use of undefined constant END_TRANSACTION - assumed 'END_TRANSACTION' Filename: db/mysql.php Line Number: 117 【PHPバージョン 5.3】 原因・回避方法わかりましたらご教示ください。。。
>>532 まず手動で集めて表示するサイトを作ってそれを自動化
>>534 ドキュメントルートがおかしいのではないかって海外フォーラムでいわれているよ
開発環境と本番環境それぞれの、そのあたりを注目してみてはどうでしょう
538 :
534 :2013/04/15(月) 18:10:51.68 ID:A3jblSzx
>>537 ありがとうございます。そのあたりを疑ってもう少し頑張ってみます。
>>534 本番環境でEND_TRANSACTIONを定義しているライブラリは、開発環境に入ってる?
入ってるなら、参照できてない(パスの解決ができていない)とかかな。
あるいは、本番環境のエラー出力レベルで~Noticeしてて、本番環境でもそのエラーが
発生してるけど、ログには出てないだけとか。
540 :
534 :2013/04/15(月) 18:50:39.07 ID:A3jblSzx
>>539 本番環境でもNoticeレベルのエラー表示はされるので
そのあたりの設定とは関係ないようです。
アプリケーションは丸ごとコピーしてアップしているのですが、
その中にはEND_TRANSACTIONの定義は見当たらないようなのです。。
ちなみにDB環境は以下のように変わっています。
---------------------------------------
ソフトウェア: MySQL
ソフトウェアバージョン: 5.1.49-log - FreeBSD port: mysql-server-5.1.49
データベースクライアントのバージョン: libmysql - mysqlnd 5.0.10
PHP 拡張: mysqli
---------------------------------------
↓
---------------------------------------
サーバのバージョン: 5.0.95
プロトコルバージョン: 10
MySQL クライアントのバージョン: 5.0.95
PHP 拡張: mysql
---------------------------------------
海外サイトも調べているのですが、明確な解決法が見当たらず。。。
542 :
nobodyさん :2013/04/15(月) 19:35:48.72 ID:3Mv3hGy+
PHPに書くデータベースの接続パスワードは別ファイルに書くのが慣習だけど 実際にPHPに一緒に書いてて覗き見られることってある?
544 :
534 :2013/04/15(月) 20:10:52.09 ID:A3jblSzx
>>541 解決しました。。。
vogooというリコメンドエンジンAPIです。
ライブラリのコンフィグファイルのDB設定が本番環境のままなのが
原因のようでした。
545 :
nobodyさん :2013/04/16(火) 01:28:10.29 ID:ooHoVKGv
値で検索してその配列のキーを取り出したいです。 例えば $a[0]から$a[100]の配列があるとして 6000と同じ値が入った配列を$aの配列から取得 ↓ その配列のキーだけ取り出して変数に入れる
546 :
nobodyさん :2013/04/16(火) 01:43:46.90 ID:D4JSFeay
日本語でおk
547 :
nobodyさん :2013/04/16(火) 02:08:35.35 ID:ooHoVKGv
聞き方が下手で申し訳ないです このような配列があった時に $a[0] =50 $a[1] =51 $a[2] =52 $a[3] =53 $a[4] =54 値から配列の変数を調べる方法が知りたいです 例えば値が54に該当する配列の変数がどれなのかを調べる時に使いたいです あと配列の変数がわかった後に、そのキーだけほしいです この例だと 54で調べると ↓ $a[4]が該当して ↓ そのキーの4 となって最終的に4がほしいです。
>>547 $key = array_search(54, $a);
549 :
nobodyさん :2013/04/16(火) 03:20:31.00 ID:ooHoVKGv
>>547 配列の場合は、普通は「変数」とは言わずに、「インデックス」とか「添え字」という
551 :
nobodyさん :2013/04/16(火) 11:29:04.50 ID:ooHoVKGv
キーでいいじゃんw
ハッシュじゃね?
PHPはその辺あいまいだから・・・
PHPは添え字とハッシュと両方あるんだよな
配列の添字だと思われるのは実は連想配列のキー。
PHPのマニュアル見るとわかるんだが、PHPでは「配列のキー」という言い方は普通に使われる。
PHPでは添え字のことをキーと呼ぶ
559 :
nobodyさん :2013/04/19(金) 01:52:35.21 ID:BkSiPRWu
vpsサーバーで下のコードを動かしてるのですが
<?php echo file_get_contents('
http://xxx.xxx.xxx/test.cgi ');?>
下のエラーが出てしまいます。
failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in xxx
urlに直接ブラウザでアクセスするとtest.cgiがちゃんと表示できます。
下のコードだとちゃんとyahooのトップが表示できます。
<?php echo file_get_contents('
http://yahoo.co.jp/ ');?>
ローカルのxampp上で同じプログラムを動かした場合もちゃんと表示できます。
原因なんでしょうか??
560 :
559 :2013/04/19(金) 01:57:02.52 ID:BkSiPRWu
以下の環境です 【OS名】CentOS6.2 【PHPのバージョン】5.3.3
そのエラー内容を見てみたらなんか分かるんでないの
562 :
559 :2013/04/19(金) 08:23:54.41 ID:???
ありがとうございます。ログ見たら解決しました。 cgiの方で呼び出しもとのホストを弾く設定になってたみたいでした。
質問する前に、なんで先にログを確認しないのか
564 :
nobodyさん :2013/04/19(金) 13:02:39.65 ID:lhK9q9u1
フレームワークに挑戦しようと勉強してるのですが、質問させてください 今までオブジェクト指向で書いたことがなく、ページ遷移の際にセッションに保存してそこからデータを 出し入れしたのですが、フレームワークで書かれたウェブアプリのサンプルソースを みていると、インスタンスに全部入れ込んでいく方法がとられているのですが、 インスタンスにデータを保存して、そこから読み出し書き出しをして処理しようと思うのですが、 インスタンスに設定情報や取得情報を代入した場合、 ページ遷移した場合は当然保持されないのでしょうか
文章推敲して質問し直して
566 :
564 :2013/04/19(金) 14:35:58.50 ID:lhK9q9u1
はい・・・すみません フレームワークの場合、クラスファイルをautoloadで読み込んだりするために クラスファイルのパスやその他各種設定情報をインスタンスに格納していくかとおもいますが、 ページ遷移をまたぐ場合、インスタンスは保持されるのでしょうか それともセッションなどに一時的に保存する必要があるのでしょうか
フレームワークの場合とか言われても フレームワークで違うし インスタンスに格納すると決め付けられても。 というか、 インスタンス と言うものを 勘違いしてる? ページ間のデータのやり取りはフレームワークが勝手にやるのかもしれないし、 オブジェクト指向関係ないし
568 :
564 :2013/04/19(金) 15:35:16.89 ID:lhK9q9u1
わかってない者のわかってない質問になっていると思います、すみません・・・ もう一度整理して・・・ やろうとしてることは、ユーザ登録のページを作成 (入力フォーム→確認画面→送信完了)で、今まで3つのphpファイルでページ遷移をしていました 今度は、index.phpにアクセスしてフォーム等の設定を読み込み→入力フォームを表示、 ユーザが入力をして確認ボタンを押すと、データを受け取るクラスを実行してindex.phpに リダイレクトし、確認画面を表示させる〜(以降略) という動きを考えているのですが、フォームボタンを押してページ遷移(リダイレクト)させるという処理が 単純に最初に示したphpファイル毎にページが遷移していくやり方と比較して フレームワークの場合は一連の動作になるのでしょうか それとも、一旦セッション等に保存して、index.phpが再度読み込まれた際にセッションから設定を 呼び出して処理をおこなうものなのでしょうか
フレームワークによる index.phpで受けて index.phpで表示する。 別にセッションで受け渡ししないでも作れるよね。 アクションで、受けるとこ、結果表示するとこ分けて、セッションで受け渡す形で作るのもあるし
>>569 > アクションで、受けるとこ、結果表示するとこ分けて、セッションで受け渡す形で作るのもあるし
横からだけど、これ具体的にはどのフレームワーク?
571 :
564 :2013/04/19(金) 16:36:11.06 ID:lhK9q9u1
>>569 なるほどです
MVCの解説サイトなどを見ながら勉強してるのですが、
だいたいindex.phpにリクエストがきて、コントローラから、初期化や設定ファイルなどを読み込んで、
Dispatcher.phpで振り分けられて、アクションに応じたクラスが実行されて、
結果をビューに渡して表示させる
・・・という流れで理解をしたのですが、ビューの結果をクライアントにレスポンスとして返されたあとのことに
触れられている説明がなく(読み足りないのかもしれません)、
クライアントがその次にリクエスト(たとえばフォームで入力ボタンを押す)をした際に、
次の振り分けでボタンを押す処理のクラスを実行するに、またindex.phpが呼び出され、
初期化や設定ファイルの読み込み、クラスのautoloadなどを最初からしなければならないのか、
はたまたその辺は保持されているものなのか、セッション等で設定を保存して読み込むようにしてあげる必要があるのか
その辺で疑問に思った次第です
書籍のサンプルでは、最初に読み込まれた際に、設定情報を格納したインスタンスを凍結させ、
それ以降の設定変更ができないようにしているのですが、そのインスタンスをセッションに保存したりするような
記述が見つからなく、混乱している状態です
>>571 なにで引っかかってるのかわかんないから 的外れなのかもしれないけど、
普通は、どんなアクセスも全部 index.phpで受けて 毎回毎回 初期化、設定読込は行われる。
基本的には、リクエスト毎に実行され、処理が終われば消えてなくなり、
各リクエストは関連なく独立しているものです。
アクセスしてる個人単位で連続しているように見せかけるために、
個人だけに関連するデータをセッションで保持したりしますが、
普通はインスタンスごと持ったりみたいなことはしないものです。
>>571 その勉強中のMVCのサイトか、勉強中のフレームワーク名を出すと話が早いかもよ。
毎回最初からだよ。 セッション情報を使うことで続きっぽく扱えるだけで、HTTPはリクエストごとに独立した処理をするのが原則
Merge branch 'PHP-5.4' into PHP-5.5 や Merge branch 'PHP-5.3' into PHP-5.4 は 先に古いバージョンで修正されたものが 新しいバージョンの方にも適用されたという事でよいのかな?
>>577 気づいてないかも知れないけど、君がそうかもよ?
581 :
564 :2013/04/21(日) 17:35:31.74 ID:QsqTX+06
みなさまレスありがとうございます なるほど、1回毎に読み込みがおこなわれるわけですね 引っかかってる部分がようやくとけました どうりで保存したりする処理がないわけですね となると、リクエストに対して、必要な設定読み込みを考えないとダメですね 何でもかんでも最初に初期化設定読み込みをautoloadなどで一括に処理してしまうものだと思ってました 全体の流れや効率を考えた外枠から考えないとダメですね
質問させてください YouTubeやニコニコ動画などは再生可能なサムネイルを 出力できますが、 ニコ生放送は再生可能なサムネイルを貼り付けることは出来ますか?
584 :
nobodyさん :2013/04/22(月) 17:30:21.42 ID:0nrxKiO8
zend frameworkを使うことによって得られるメリットは?
586 :
nobodyさん :2013/04/22(月) 23:14:46.67 ID:YyKrblk5
○じゃあのさんの入れ知恵○
じゃあのさん来た! 次スレ
26:以下、名無しにかわりましてVIPがお送りします[]
2013/04/22(月) 22:59:02.35 ID:8TN30C6y0
じゃあ、こっからが情報戦レクチャーに入るぜwww
敵の資金源をおまいらでも一枚噛んでぶっ潰す方法だwwww
不買運動やデモは単なる手段でしか無いwww
俺が求めるのは更にその先だwwww
--- 以下スレ情報 ---
高岡さんがフジ韓流ゴリ押し批判したら干されたのでウジテレビ凸
http://hayabusa.2ch.net/test/read.cgi/news4vip/1366637744/
>>585 いちいち反応するなボケ
お前も荒らしか?
>>584 フレームワークを使うことによって得られるメリットと同等のメリットが得られる
590 :
nobodyさん :2013/04/23(火) 21:53:05.68 ID:870eDqk8
>>564 亀だけど、ぜんぜん方向の違う勘違いしてるじゃないか
お前らちゃんと指摘してやれよw
PHPはリクエストのたびに起動して一プロセス消費して終わり。
これ、フレームワークがどうたらとか関係なく、言語仕様な。
一度作成したインスタンスを再利用するなんてのはシリアライズして
DBに保存してっていう、どっちかっていうと変態っぽいやりかただから、
まだ手を出さないほうがいいと思うし。
鼻水出たw
593 :
nobodyさん :2013/04/24(水) 04:12:15.02 ID:6o5SNjBY
全体の流れや効率を考えた外枠からではなくhttp通信の流れからだろ
HTTPはステートレス。そうじゃなく見える場合はプロトコル以外の部分が工夫してるだけ
hoge.php を外部から呼び出す時、引数を与えたいのですが、 hoge.php?saitama=chichiu 以外に方法はありますか? PHP 5.2.17です。
IDが出てないとダメなんです。ごめんなさい。
597 :
nobodyさん :2013/04/24(水) 12:01:08.73 ID:L2MfGf1m
hoge.php
を外部から呼び出す時、引数を与えたいのですが、
hoge.php?saitama=chichiu
以外に方法はありますか?
PHP 5.2.17です。
>>596 すみません。
POSTするんじゃだめ? あとPATH_INFO使うとか
って外部からってのは具体的にどういう?
あるだろw
?saitama=chichiuでsaitamaとchichiu拾うの? foreachで$_GETからkeyとvalue取ってくるの?
ディレクトリ構造に見せかけてるだけで実際getと変わらんじゃん
はいはい
608 :
nobodyさん :2013/04/25(木) 02:19:49.33 ID:UuN6Innx
php5.4.14 PEAR1.9.4
Windows7でpeclで pecl_http を入れようとしてダウンロードまではいったのですが
その後エラーが出て止まってしまいました。これはどうすればいいんでしょうか。
pecl install
http://pecl.php.net/get/pecl_http downloading pecl_http-1.7.5.tgz ...
Starting to download pecl_http-1.7.5.tgz (174,624 bytes)
.....................................done: 174,624 bytes
71 source files, building
ERROR: The DSP pecl_http.dsp does not exist.
>>606 httpdが必要って言いたいのか。
こじつけもいい加減に・・・
>>609 英語なのであいまいにしか翻訳できなかったので間違っていたらすいません。
これはhttp_build_urlを使うためにpecl_httpを入れようとしたけど使えなかったから
http_build_url() を自作したっていう話ではないですか?
私がしたいのは http_build_url ではないのでこれには当てはまらないのではないでしょうか。
612 :
609 :2013/04/25(木) 13:44:56.25 ID:UuN6Innx
ID忘れてました。
>>611 は 609 です。
613 :
608 :2013/04/25(木) 13:46:28.43 ID:UuN6Innx
さらに間違い。
>>611 ,612 は 608 の間違いです。たびたびすいません。
614 :
nobodyさん :2013/04/25(木) 14:17:01.66 ID:0FNu+M2T
>>614 サーバーにディレクティブ渡せば楽勝でしょ。
WordPressやCakePHPのURLの仕組みを調べてみれば?
いくらでもやり方はあるけど、 .htaccess に、特定のファイル名の時はapplication/x-httpd-phpを追加する とかが一般的かな
PHPオンリーでって話じゃないのか
PHPのビルトインウェブサーバで実行できなきゃだね
質問者いなくなっちゃったのか
俺はくだらない質問をする お前たちは答えてろ
俺はただ見物して楽しむ♪
>>615 楽勝には同意するけど
> サーバーにディレクティブ渡せば楽勝でしょ。
用語を勉強しなおしましょうね
623 :
nobodyさん :2013/04/26(金) 07:59:11.43 ID:h02AATTS
基礎の基礎で申し訳ありません インスタンスを生成後、オブジェクトにアクセスする際 $this->val valの部分に他の配列に入れておいた文字列でアクセスするにはどうしたらよいでしょうか $val = array(a,b) $this->a $this->b のょうに繰り返しで処理したいです 配列だとhoge[$val]といったようにしてましたが、オブジェクトの場合はどうなるのでしょう
625 :
nobodyさん :2013/04/26(金) 13:34:02.60 ID:wd6ISbqU
【OS名】CentOS 【PHPのバージョン】5.3 【連携ソフトウェア】MySQL 【質問内容】 DBに書き込みデータを保存する掲示板を作っているのですが ユーザーが書き込んだ文字列をHTMLエスケープするのはどの段階にするべきでしょうか 勿論'や;に\をつけるのはDBに保存する前だと思いますが、 <や>等HTMLとして影響を与える文字をエスケープするのはDBに保存する前か それともDBにはそのまま保存して出力する際にエスケープすべきでしょうか 一般的な考え方があったら教えて下さい
考慮するのは2点 DBにデータを入れる際のSQLインジェクション そしてデータをHTMLに出力する際のクロスサイトスクリプティング DB操作にどのAPI使ってるのかしらんがDBに入れる際 mysql関数ならmysql_real_escape_string PDOならプリペアードステートメントを使う DBから取り出してHTMLに出力するときにhtmlspecialcharsを使う
もちろんデータをselectするとき検索など外部に入力を依存するシステムの場合は select文にたいしても同様にSQLインジェクション対策を行うこと
628 :
nobodyさん :2013/04/26(金) 15:17:37.16 ID:wd6ISbqU
PDO+静的プレースホルダで、DBにはそのまま保存。 出力するときに、htmlspecialcharsを使う。 これしかない。
>>625 有効にするタグがあるのかどうか(<a>や<strong>, <pre>などは生かすとか)によって違う。
また、エンコードが何なのかによっても違う。
>>625 色んな所で古くから議論されてるけど、
基本はDBに生で保存して出力時に整形する。
いろんな検証の仕方をしても多分ここに落ち着く。
それを踏まえた上で、パフォーマンスを高めるためのチューニングとして
エンコード済みのデータをケースバイケースで本データとは別に保存しておいたりすると良い。
>>625 ほかの人も言っていることとほぼ同様だけど
取り立てて仕様に影響するような要件がない場合は、DBには可能な限り生なデータを突っ込んだほうがいい。
突っ込む前に整形するとその後の拡張性がすこぶる悪くなったりする。
で、PHPでMySQL使っているならば、mysqli_real_escape_string関数あたり使いなはれ。
で、出力するときは、htmlspecialcharsあたりでXSS除けしなはれ。
ちなみにWHERE句なんかで外部からの値突っ込むときもちゃんとエスケープ処理かけるんだぞ。
もう一つ言うと、LIMITやOFFSET句みたいな場所を除いて外部から受け取ったIntegerを突っ込むときも
ちゃんとエスケープ処理して'つけてSQL文に流し込め。
LIMITやOFFSETは、Integer以外入りようがないのだから、正規表現かなんかでバリデートすべし。
DBに保存する前に、入力データそのものを変更するって考え方、誰が広めたんだ? 昔はそれが普通だったのか?
同じ回答を繰り返すPHP回答者△
635 :
nobodyさん :2013/04/26(金) 18:14:09.48 ID:2flPsSFU
MySQLはPHPと共にオワコン
>>633 たんに何のセキュリティ問題なのかとか具体的なことがわからなかったってだけでは?
とりあえずエスケープにはhtmlspecialcharsを使っとけばいいって覚えちゃった人が
自分のサイトでこういうふうにして入れますみたいに書いて
それを間にうけた第三者が真似していくという
セキュリティホールの名称はわかっても具体的な内容までは知らない人 内容はだいたいわかるけど実際に問題になるコードが書けない人 本当にアマでセキュリティホールを理解してるのは少ない
>>632 そういう時は、同様じゃない部分だけ書くのが大人
普通のファイルに<>でカラムを分割していたから そのカラムの範囲を破壊されないために <と>をエスケープしていたんだよねwww
>>637 そうそう、そんな理解していない奴らが簡単にWebアプリもどきを作れるようにしたPHPは犯罪
世界規模のサイバーテロに匹敵するほどの犯罪
犯罪者予備軍のPHP厨にはお似合いかw
641 :
nobodyさん :2013/04/26(金) 22:33:10.72 ID:zqV1AZ+p
>>640 わしのことやな、、getpost変数はほぼホワイトリスト解決させてる、、ヌルバイトだけはどう来るか予想できん。。。。
失礼さげ
>>640 理解してないやつらが簡単に〜
なんてどの言語でもそうじゃないか
644 :
nobodyさん :2013/04/27(土) 14:25:23.44 ID:RdpUkJUr
それが同じなどというのは言葉遊びに過ぎない 仮にmcintosh(詳細な綴りは知らん)とwindowsに同じ問題があったとして その影響が同じだなどという主張と変わらん
つまり罪深さで言えばWindowsそのものが大罪を犯してるわけだ
mcintoshはないだろ なんでmacって呼ばれてるのか考えろ!
Mcdonald'sじゃないのよ!
648 :
nobodyさん :2013/04/27(土) 19:00:06.77 ID:RdpUkJUr
興味のない知らんもんは考えても正解にはたどり着かんよw
649 :
nobodyさん :2013/04/27(土) 22:27:02.27 ID:78HtUPwG
○じゃあの野間まつり○
じゃあのさん来た!
421:以下、名無しにかわりましてVIPがお送りします[]
2013/04/27(土) 21:53:57.62 ID:qYDE1sEQ0
てか、すっかり野間ちゃんのこと忘れてたわwww
別件で色々あってなwwww
所詮その程度の存在なんだけどなwww野間ちゃんなんてwwww
じゃあ、今からやるかwww罰ゲームなwww
あーあwww野間のせいだwww野間が全部悪いwww
--- 以下スレ情報 ---
高岡さんがフジ韓流ゴリ押し批判したら干されたのでウジテレビ凸
http://hayabusa.2ch.net/test/read.cgi/news4vip/1366990405/
650 :
nobodyさん :2013/04/28(日) 01:08:05.93 ID:A2fSkdFW
【OS名】Windows 【PHPのバージョン】5.3
ウェブサイトを制作しており、初回訪問時に設問を表示し、その答えに応じてメニューの並び順などを変えたいと思っています。
Cookieに保存し次回訪問時も引き継ぎたいです。
$pt = $_POST["pt"];
if ($pt == ""){
$pt = $_COOKIE["pt"];
if ($pt == ""){
header("HTTP/1.1 301 Moved Permanently");
header("Location: ./start.html");
quit();}
} else {
setcookie("pt", $pt, 0, "/", "www.exsample.jp");}
$topMenu[0] = "<a href=\"aa\" alt=\"aa\">aa</a>";
$topMenu[1] = "<a href=\"bb\" alt=\"bb\">bb</a>";
switch ($pt){
case "1": $topDisp = array(0, 1);
break;
case "2": $topDisp = array(1, 0);
現在このように書いており、「start.html」にて
<form method="post" action="index.html">
<a href="
http://www.exsample.jp " onclick="forms[0].pt='1'; forms[0].submit();">1</a>
<a href="
http://www.exsample.jp " onclick="forms[0].pt='2'; forms[0].submit();">2</a>
<input type="hidden" name="pt" value="" /></form>
と、選択させCookieへの保存を行なっているつもりです。
しかし「index.html」へアクセスすると「start.html」に飛びはするのですが、選択しても「start」から移動しません。
どの部分に間違いがありますでしょうか。あまり知識がなく、どうか教えていただきたいです。
また、現在は「start」という別ページを置いていますが、jQueryなどを使い、設問画面がポップアップするという形を取りたいと思っております。
その方法(どの部分でどういった書き方をすれば良いか)も教えて頂ければと思います。
長文となって申し訳ありませんが、よろしくお願いします。
毎回ブラウザ終了時にクッキー消してる人には大迷惑だな
クラスのヒアドキュメント内での挙動について聞きたいです。 // 222を出力するクラスaaa class aaa{ function aaa_m(){ echo "222<br>"; } } // クラスaaaを継承したクラスbbb // ヒアドキュメント内でクラスaaaのメソッドを出力 class bbb extends aaa{ function bbb_m(){ echo <<< EOF 111<br> {$this->aaa_m()} 333<br> EOF; } } $bbb = new bbb; $bbb->bbb_m(); クラスbbbのメソッドbbb_mを使うと 111、222、333とならぶはずが 222、111、333となります となってしまいます。ヒアドキュメント内でクラスを使うと 最初に呼び出される仕様なのでしょうか?
655 :
nobodyさん :2013/04/28(日) 19:17:29.32 ID:mmUnQlFQ
すみませんIDわすれてました
657 :
nobodyさん :2013/04/28(日) 23:50:47.53 ID:3X4yk4QN
質問の答えの前にまず言っておくがコーディング自体に大きな問題がある で、質問の答えだが、ヒアドキュメントのパースする際に まずはその中の命令を処理する必要があると思わないか? この結果には驚くような要素は何も含まれていないと思うよ。
array_mapを使って下記のような関数をつくってたのですが、 クラスファイルで使いたいと思い、作り直しを試みているのですが function hout($d) { if (is_array($d)) { return array_map('hout', $d); } else { $d = htmlspecialchars($d, ENT_QUOTES); } } 以下がオブジェクトで Class Hout publice function __construct($d)
659 :
nobodyさん :2013/04/29(月) 00:04:09.93 ID:C0H6wuFm
660 :
nobodyさん :2013/04/29(月) 00:07:12.36 ID:cl3jdKHB
すみません、途中投下してしまいました・・・ クラスファイルで書いてみたのがは以下の通りです Class Hout { private $d; public function __construct($data) { $this->d = $data; if (is_object($this->d)) { $this->d = get_object_vars($this->d); } } public function htmlout() { if (is_array($this->d)) { return array_map('htmlout', $this->d); } else { $this->d = htmlspecialchars($this->d, ENT_QUOTES); } } }
661 :
660 :2013/04/29(月) 00:13:10.57 ID:cl3jdKHB
return $this->d が最後抜けてますが、転記ミスです
Class Hout { private $d; public function __construct($data) { $this->d = $data; if (is_object($this->d)) { $this->d = get_object_vars($this->d); } } public function htmlsc() { var_dump($this->d); if (is_array($this->d)) { return array_map('Hout::htmlsc', $this->d); } else { $this->d = htmlspecialchars($d, ENT_QUOTES); } return $this->d; } } としてみましたが、ループしてしまいます・・・
phpでオブジェ使ったことないわしがarraymap途中でプロパティが途中で配列じゃなくなったと勝手に予想
安易にネットとPCを普及させたヤフーBBやPCショップにまで矛先いきそうな
666 :
662 :2013/04/29(月) 04:14:22.43 ID:cl3jdKHB
>>664 さんのを参考に見直していくと
var_dump($val);
$val = get_object_vars($val);
var_dump($val);
とすると、結果が
object(ArrayObject)[17]
string '0' (length=1)
string '1' (length=1)
string '1' (length=1)
string '0' (length=1)
array (size=0)
empty
となってしまうのが、上手くいかない原因のようなのですが、
なぜに、get_object_varsを通すとemptyになってしまうのでしょうか・・・
array
[0] => string'0'
[1] => string'1'
[2] => string'1'
[3] => string'0
とさせたいのですが'
667 :
nobodyさん :2013/04/29(月) 09:07:52.19 ID:aXyeiYnz
PHP5.4でMemcached 2.1.0(libmemcached 1.0.13)入れてます。 addServers(array( 192.168.0.11 => 11211, 192.168.0.12 => 11211, 192.168.0.13 => 11211 )); で複数のMemcachedクラスタを構成しています。 Memcachedが落ちた(get(key1)できなかった)場合、DBに直接アクセスしてデータ(val1)を取得した後、 書き込みset(key1,val1)を行います。 この状態で、たとえば192.168.0.12が落ちた場合、192.168.0.12にマッピングされていたkey1が 0.11か0.13にマッピングし直されて継続されることを期待しているのですが、どうも0.12に向けられていた 割り当てられていた分が全部DBに直接アクセスしているっぽいです。 addServersでサーバーを追加したら、そのどれかが落ちていたとしても、再マッピングはされないのでしょうか? OPT_DISTRIBUTIONを変えても駄目でした。 そうすると、addServersを行う前にサーバーの死活をチェックして、もし0.12が落ちているのであれば addServers(array( 192.168.0.11 => 11211, 192.168.0.13 => 11211 )); のようにしないといけない、ということなのでしょうか? (この方法だともちろんうまくいきましたが、何か納得いかず・・・)
汎用性のかけらもないわけのわからないクラスですね
cacheとはそもそもそういうもん。 サーバーを冗長化するのは、負荷分散で、データの多重化ではないよ。 データベースへのアクセスをメモリーを使って高速化するのが希望なら、tokyo tyrantを使いなさい。
670 :
667 :2013/04/30(火) 15:11:25.92 ID:/LZjkS9q
どうもです。確かにNoSQLのほうがいいかもしれませんね。
ただ、
>>667 の説明がまずかったようなので、流れを書きますと
Memcachedクラスタ:A、B、C
仮にkey1 => val1がBに対応づけられているとする。
ここでBが落ちたとき
プロセスX
(1) get(key1)する
(2) 当然失敗する
(3) DB叩いてval1を取る(実際には色々加工してval1を作るわけですが)
(4) set(key1,val1)する
(5) 今はクラスタが{A,C}なので、今度は(例えば)Aにkey1 => val1が保存される
プロセスY
(6) get(key1)する
(7) 今度はAに保存されているval1が返ってくる
こういう動作を期待しているんですが、どうもプロセスYでもプロセスXと同様にDB叩いてるっぽいんですよね。
それもタイミング差で数プロセスってレベルじゃなくて、数百というプロセスが何分間も。
当然DBが(結果を加工してval1を作っているWebサーバも)捌ききれなくなってあぼん。
状況説明が下手すぎる 6で失敗してることは確認したの? 6で成功する環境が構築できていることは確認したの?
そら、もともとの3台の設定のままなら、 同じように失敗してるとこへ聞きにいって、同じこと繰り返すに決まってる。 クラスタ纏めてるサーバーが1台あって死活まで管理してるならともかく、 簡易的な分散なんだから。
>>671 すみません・・・
> 6で失敗してることは確認したの?
Yes
> 6で成功する環境が構築できていることは確認したの?
addServers(array(A,C))なら期待したとおりに動きます。
>>672 こんなコード書いてやってみましたが、確かにval1は取れませんね・・・そういうもんなのか(´Д`)
$m = new Memcached();
$servers = array(
array('localhost', 11211), //Memcachedが動いている
array('192.168.0.201', 11211), array(...), array(...), ... //存在しないサーバー100個ぐらい適当にぶっこむ
);
$m->addServers($servers);
$m->set('key1','val1',time()+100); //多分localhostじゃないとこに書き込もうとしてる
var_dump($m->get('key1')); // bool(false)・・・
下手にイチイチ死活チェックするより、てきとーなスクリプトで常駐監視させて
Bを速攻で復旧させたほうがスマートじゃないだろうか
数秒間落ちただけでDBが死ぬほどクリティカルじゃないんだろ?
ハードのトラブルとかで長期間落ちる場合は、addServersのところを自動なり手動なりで
書き換えてクラスタから切り離す。
あとは
>>669 のようにNoSQLか。どう冗長化すりゃいいのか俺は知らんけど。
>>670 アクセスが1秒間に数百もあるようなシステムなの?
そら秒間数十リクぐらいのシステムならMemcachedクラスタ構成にする必要ねーだろ DBそのまま叩いてもイケる
そんなサイトがPHPって・・・ 作成者が2chで質問って・・・
あ?PHPなめんな
wikiとかアフィブログとかでもピークで秒間数百なんて簡単にいくだろ
680 :
nobodyさん :2013/05/01(水) 03:40:01.52 ID:cfjacJ3h
初歩的な質問ですみませんが、わかるかた教えてください。 $a = 1; $b = 0; if ($a == 0) if ($b == 0) print "a"; elseif ($a == 1) if ($b == 0) print "b"; else if ($b == 1) print "c"; 上記のようなコードを実行すると、想定では「b」が表示されるはずだったのですが 何も表示されずに終了します。 $a = 1; $b = 1; とした場合も「c」が表示されません。 $a = 0; $b = 0; では想定通り「a」が表示されます。 なぜこのような動作をするのか教えて頂けないでしょうか。
まさかelseifがくっついてるからとか??
しらねえが括弧つけてくれ。 見にくすぎる。
if ($a == 0) { if ($b == 0) { } } elseif ($a == 1) { if ($b == 0) { } } else { if ($b == 1) { } } なんだこのクソみたいなコードは・・・ if ($a == 0 && $b == 0) { } elseif ($a == 1 && $b == 0) { } elseif ($b == 1) { }
うおくっつけててもええんか、、
685 :
680 :2013/05/01(水) 06:56:39.93 ID:???
>>683 のコードのように{}を入れると正しく動作します。。
理由がさっぱりです。。
if〜elseif〜else文のときは必ず{}を入れろということでしょうか?
>>670 やりたいことが分かった。
AddServerには、weightオプションがあるよ。
ABCをそれぞれ、321にしなさい。Weightの重い順にアクセスする。
weightがフラットだと、均等にアクセスするから、ABCのどれにアクセスするか分からない。
一度アクセスすると、CならCにずーっとアクセスする。でないと、結果が取れないでしょ?
あと、Daemon Toolsを調べなさい。落ちたmemcashedを自動的に再起動してくれる。
>>680 その式の解釈は
if ($a == 0)
{
if ($b == 0) print "a";
elseif ($a == 1)
if ($b == 0) print "b";
else
if ($b == 1) print "c";
}
だからです。 なんで elseif のが 一個目のifの受けだと思ったんです?
pythonerなんじゃね?
>>685 自分でコード追ってみりゃわかる
わからないうちは括弧入れよう(わかっても読みやすくするために入れるけどね)
インデントは読みやすくするために必須だけど、間違ったインデントに騙されないようにね。
690 :
680 :2013/05/01(水) 12:46:23.79 ID:???
>>687 ,689
有り難うございます。
そういうことでしたか。勘違いしてました。
ようやく理解できました。
俺も基本括弧は入れるな 括弧つけないのは ... ... if ($FLAG === 0) echo "error"; ... ... こういう場合だけ
トラブルを起こさない書き方をする これ常識ネ
リーダブルコードを10回読め
>>685 その認識レベルなら必ず括弧入れるべき。
面倒くさいのはわかるが括弧で区切りつけないと後々絶対同じような問題起こす。
適当なエディタでインデントしなおせば分かりやすいかも。 たとえば、こうなった。 if ($a == 0) if ($b == 0) print "a"; elseif ($a == 1) if ($b == 0) print "b"; else if ($b == 1) print "c";
あー。。全角スペースでごまかしますorz if ($a == 0) if ($b == 0) print "a"; elseif ($a == 1) if ($b == 0) print "b"; else if ($b == 1) print "c";
698 :
nobodyさん :2013/05/01(水) 19:43:46.49 ID:j59swQb1
オブジェクト指向で質問です public $hensuu; 〜 〜 $hoge = "hensuu"; echo $this->$hoge; として、$hogeに入ってる文字列でプロパティにアクセスしたいので、 存在しないプロパティを呼び出さないようチェックを入れたいのですがうまくいきません if(property_exists($this, 'hensuu')) ではtrueが返ってくるのですが、 if(property_exists($this, $hoge)) ですとfalseが返ってきてしまいます・・・
試したらtrueになってるけど。 そのコードどうなってんのよ。
$hogeに 'hensuu' が入ってないだけってオチに思える。
それ以前の問題として、プロパティは全部privateにしてメソッド経由で読み出せよ そのメソッド中で変なプロパティ読み出さないようにチェックしれ
703 :
nobodyさん :2013/05/01(水) 23:56:42.39 ID:iNKD91fw
error_reporting(-1); とすれば全てのエラーを出力してくれますが、 このエラー内容を取得することは出来ますか? エラーを画面上に表示させずに、エラー内容をテキストか何かに書き出して おきたいと考えています。 標準出力ではなくテキストなどへの出力方法などあればアドバイスいただけないでしょうか。
>>703 error_get_last()
register_shutdown_function() と絡めてみるとうまくいく思う
っていうか、ログに吐き出したいだけか。 なら、 error_log() だな。
error_logは自作エラーメッセージをログに出力するもんだろ・・・
apache経由ならerrorログに出てるでしょ
708 :
nobodyさん :2013/05/02(木) 05:49:01.99 ID:PlTCCm2Z
Nagios のプラグインが使える監視ツールを作ろうと思っています。 そのプラグインの使用は、終了コードと標準出力にテキストを出すというものです。 exec 関数でやればいいようですが、処理の並列化のため、 exec ('/pathto/program > /dev/null &', $output, $return_var); とすると、標準出力を得られません。何かいい方法はありますか? ファイルにリダイレクトしてそれを読むのでしょうか?いやいや。
709 :
703 :2013/05/02(木) 07:53:36.09 ID:7Z0Os0eY
みなさん回答ありがとうございます。 回答をもとに対応してみたいと思います。 ありがとうございました。
カーセックス最高
>>708 標準出力捨ててんのに何がしたいのよwwwwww
非同期で標準出力取りたいなら、どっかのファイルにぶち込んで
別のプロセスでそのファイル監視し続けるしかないんじゃないの?
他言語のスレッドみたいな感覚で使いたいんだろうなあというのは伝わってくる
結局 nagios のソース読んだら、 fork して子プロセスで popen して読み取って、 ファイルに書き出してやがったですよ!
ぽぺん
ありがち そして事態はより複雑に
718 :
sage :2013/05/03(金) 07:54:54.79 ID:???
上の方でも出てますがエラーを取得するのにerror_get_last()が使えるとありますが 複数のエラーが発生した場合は最後のエラーしかとれません。 エラーをすべて取得する方法ってありますか?
ログとれログ
720 :
sage :2013/05/03(金) 08:59:40.30 ID:???
レンタルサーバーでもログとか取れるもんなのでしょうか?
レンタル鯖っつったってphpとperlしか動かないものからOS自分で入れるものまで色々あるがよ・・・
apacheの生ログ見られる鯖はある
>>721 適当にあたりをつけて回答しろよ
なんでもヒントが出てくると思ってんじゃねーぞ
えっ すみませんココ試験会場だったのですね間違えました
VMとかrootあるなら見れるとこ多いけど 普通のレンタル鯖だと生ログ見れるところはないと思う phpとかPerlしか動かせない鯖だと全部のエラーをキャッチしておくってのは無理じゃないかな
>>725 wkey.meだけどユーザー毎のホームディレクトリにlogディレクトリがあってそこにログたまっていくぞ
レンタル鯖っていっても昔と違って数百円/月で仮想root付きのがあるからなぁ
仮想サーバほしいなら貸そうか? なんつって
月1000円未満で借りられるVPSがたくさんあるのに、今時プログラマがレンタルサーバ 借りる理由ってなんだ?
管理がめんどくせえ
セキュリティも考えると全部管理すんのめんどくせーよ
節子、それレンタルサーバや >月1000円未満で借りられるVPSがたくさんあるのに、今時プログラマがレンタルサーバ
クラウドで、サーバー立て放題 いまどき、負荷で他人に迷惑とか心配するようなのなんで借りるのか。
楽だから
>>732 レンタルサーバとVPSって別物だよ
まあごっちゃにしてる業者があるのかもしれんが
めんどくさいから、って大きな理由だよな。
>>735 借りられるVPSがレンタルサーバーではないだと!?
さすが連休だな
そういういみでいえばホスティングでもレンタルサーバーになるんだよな
レンタルサーバーって営業形態を指す言葉だろ
サーバを借りるって意味だろ
レンタルサーバもVPSもVPCも共用サーバといえるわな
物理的には共用サーバだが論理的には専用サーバとか そういうたぐいのめんどくせー話はいらんわ
何にもめんどくさいないのに
ここ何スレ?
748 :
nobodyさん :2013/05/05(日) 17:12:44.70 ID:WrP9RIzV
db登録ユーザーが大別して2種類います。 IDの先頭にsenior(シニア)がつくユーザーと、つかないユーザーです。 senior102315 senior102516 112316 senior118311 120210 121653 ・ ・ seniorを削除して全ユーザのIDを数字のみにしたいのですが UPDATE `table_ID` SET `field_ID` = REPLACE(`field_ID`,'senior',''); 記述がどこか違っているのかわかりません。 一括削除の操作は別のコマンドを使うのでしょうか?
それdbの質問じゃ? 間違ってるようにみえないけど、試しに select してみ SELECT field_ID , REPLACE〜 FROM 〜 とかさ
750 :
nobodyさん :2013/05/05(日) 17:58:30.08 ID:WrP9RIzV
スレが違うとのこと、すみません そうそうに引き揚げますのでこれだけみてください なぜ機能しないのでしょう SELECT field_ID, REPLACE(`field_ID`,'senior','') FROM `table_ID`;
引き上げてねえww
ここで聞いてるってことは、phpから呼んでるんだよな? 機能しないってのは結果が0件とか? エラー表示させるとか、一番単純なやつで結果見るとかしてみては
そもそも設計が悪いだろ IDは数値のみでもってシニアかどうかはフラグでもつければいいのに
IDが重複して主キー制約に引っかかってるとエスパー
phpスレらしく全部selectして $newid = preg_replace("/senior/","",$oldid); $query = "update usertable set id = $newid where id = $oldid"; とかどうかな
>>753 設計したクソ野郎は既にどっか消えたとかよくある話
今は既存のDBに好きなカラム付け足したり 制約コロコロ変えたり拡張が簡単になってるんでそ 断片化が半端なさそうだが
昔はカラム追加できなかったんかw
できる範囲のことはDB側でやったほうがいいっていうけど
SQLの知識が足りないなら無理せず
>>755 みたいにPHP側に回せばいいだけだな
内容的にどうせ1回しかやらねー処理だし、足りない頭で変にクエリをあれこれ考えるよりphpでやっちまったほうが早いだろうな
クエリのほうが楽だろ
足りてる頭でやるならな
PHPが始めての場合 PHP→SQLって流れが一般的かと そうするとPHPのほうが楽な人も多いと思う
>>764 10人いたら9人分かるコードにしとかないと。
いまのところ2人でてきたしダメだろ。
SQLでできることをわざわざPHPを介して操作とかいくらなんでも馬鹿すぎる
まったくだ アホばっか
>>748 がスカタンだからそういう話になってんだろ
そりゃSQL自由自在に使える奴ならSQLでやったほうが早いに決まってる
そうでもない
クエリって何? SQLの方が理解できる人多いと思うわ
>>771 S,Q,Lまで知ってて、Qだけ何?とかないだろw
1回しかやんないんだから求める結果が得られればPHPでもSQLでもいいとおもうけどな 継続的にやるとかなら負荷とか処理速度とか考えるけど
SQLでやるデメリットって何
特定の処理に弱いとかもあるだろうけど 多くの場合PHPで加工を入れたほうが遅いのは想像に易い が一応ちゃんとベンチとってからそういう事言わないとな PosqlみたいなのもあるしSQLが早いっていう考えはちょっとおかしい
SQLでやるとバグの温床になりそうな処理はあるな パッと見て何がやりたいのか、なんでそうなるのか凡人の頭じゃさっぱりわからないキチガイSQL
SQLがわからんとか、さすがにネタだよね? いくらなんでも片手間の俺よりはできるだろうと思って外注に出してるけど、 業者さんがこのレベルってことはないよね?
>>777 PHPでやったってスパゲッティコード書けば同じだろ
言語の問題ではなくそれを書く人の問題だってこと分かってないよなw まぁSQLやらない/できない言い訳を必死に考えてんだろうけど
馬鹿? SQLでやったほうがいい処理もあるし、PHP側でやったほうがいい処理もあるに決まってんだろ そんなにSQL好きならHTMLタグまで全部SQL側で生成しろよwwwww
馬鹿はお前だ
視野の狭い奴ばっかだな
視野の広いコメントをよろしく
>>778 外注とはコスト削減のために使うものであって、自分より質の高いものを得るために使うものじゃない(確信)
えっ?
>>778 はとりあえずスレチだから放っておけ
初心者だらけのスレで何を言ってるんだって感じだな
このスレって初心者用スレだったっけ?
初心者だらけとはいったが初心者用とはいってない
(キリッ
792 :
nobodyさん :2013/05/07(火) 01:37:23.03 ID:zoq9xUOz
質問おねがいします。 phpって実行時に一度C言語に変換された後機械語に変換されるんですか? それともphpインタプリタが直接機械語に変換するのでしょうか? プログラムの動作する仕組みがよくわからないので教えてください。
794 :
nobodyさん :2013/05/07(火) 02:41:07.19 ID:zoq9xUOz
>>793 あざっす。
その変換されたものをファイルに書き出すことってできないんですかね?
というのも実行時にいちいち変換するより、もうほとんど手を加えないとういプログラムなら
変換したものを動作させたほうが速いだろうと思うのですが。
開発中 -> インタプリタで実行するごとに変換
本番環境 -> コンパイル?されたファイルを変換せずに実行
できたらみんなやってる
796 :
nobodyさん :2013/05/07(火) 06:06:21.19 ID:zoq9xUOz
>>795 そうなんですか。ありがとうございます。
初心者が言うのも変ですが、変換はできてそれを実行もできるのに
変換したものを保存することができないってのがよくわからんです。
c言語ならコンパイルしたものがファイルとして保存できますよね。
なぜphpは変換したものが保存できないのですか?
eAcceleratorとかあるやろ どうやってんのかしらんけど
799 :
nobodyさん :2013/05/07(火) 09:24:00.12 ID:zoq9xUOz
>>797 ,798
apc_bin_dumpfileでできましたー。
これ以前試したことがあってできなかったからapcはまだ不安定なんだと思ってたんですが、
php5.4.13 + apc3.1.13でファイルに書き出せました。
このバイナリデータはすでにphpは関係ないってことですよね?
ということはc言語も関係ないってことだと思うのですが、
これどうやって実行すればいいんでしょうか?
HipHop HipHop VM Phalanger
801 :
nobodyさん :2013/05/07(火) 10:36:29.78 ID:n6USVSPe
【OS名】Windows7 【PHPのバージョン】5.4.13 【連携ソフトウェア】 【質問内容】超初心者です。 HTMLの記述の中に、<?PHP 〜 ?>を書いて、そこにPHPプログラムを書いて動的なものにしていくと思うんですけど、 while とかで求める繰り返し処理をして連想配列から出した値を、HTMLの記述のあちこちに表示させたい場合、 その表示させたい箇所ごとにwhile分を使わないといけないんでしょうか?例えば <?PHP <body> while (list($key,$val) = each($arr)){ echo "$key $val \n"; } </body> ?> の場合だと問題ないのですが、<body>にけっこう多いコードがあったときにもし"$key"と"$val"をバラバラの場所に 表示させたいときに、それぞれにwhileを使うしかないのでしょうか? よろしくお願いします。
別に変数に丸ごと入れて一回で出力してもいいし 好きにやればいい
803 :
801 :2013/05/07(火) 10:40:42.79 ID:n6USVSPe
<?PHP while (list($key,$val) = each($arr)){ echo "$key"; ?> 〜間にHTMLの記述〜 <?PHP echo "$val"; } ?> こんな感じで上と下に表示できるかなーと思ったのですが、ダメでした。 よろしくお願いします。
結局何をどうしてもループは複数回やらないとだめですよ
どうダメだったんだよ 間のHTMLは一回だけにしたいって意味? ループ中は文字列変数につないでいって ループ出てからechoすりゃ一回でいける。
806 :
801 :2013/05/07(火) 10:56:47.81 ID:n6USVSPe
そうです。1つのループで複数の変数を別の場所に表示しようとして、803のようなことを やっったりしてました。 ?>と<?PHPで、いったんPHPから抜けたら 間のHTMLはループされずに echo "$key" と echo "$val" だけループされるのかと思ったけど、そうなりませんでした。 変数につないでいってループ出てからechoをやってみます。 ありがとうございました。
何がしたいのかわからんが $str = ""; while(...) { $str = "<li>".$key."=>".$val."</li>"; } echo $str; echo $str; echo $str; 後は好きにしろ
>>799 APCに読ませてPHPに実行させる。
独立したapacheモジュールみたいなものを書き出しているわけじゃないよ
.= でないと
>>806 ああ
<?PHP
echo implode('', array_keys($arr));
?>
〜間にHTMLの記述〜
<?PHP
echo implode('', array_values($arr));
?>
811 :
nobodyさん :2013/05/08(水) 17:19:35.07 ID:QMrGFLn3
test.php <?php echo "1"; echo "2"; echo "3"; ?> sample.php $file = file('test.php'); としたときに $file[0] には echo "1"; がはいります。 しかし $file[5] には ?> が入っています。 ?>は取得出来るけど<?phpはどうやっても取得されないのでしょうか? 実際には2行目にecho "1";が来るのに配列としては[0]なのであわせられればと思っています。
>>811 どうやって確認した?
var_dump 使った?
もしも結果もブラウザから見てるならソース表示させてみ
814 :
nobodyさん :2013/05/08(水) 18:19:51.72 ID:QMrGFLn3
var_dumpでブラウザ上に表示したら array(5) { [0]=> string(6) " string(10) "echo "1"; " [2]=> string(10) "echo "2"; " [3]=> string(10) "echo "3"; " [4]=> string(2) "?>" } となってました。 ブラウザ側のソースには [0]=> string(6) "<?php " [1]=> string(10) "echo "1"; と表示されています。 html上のものでなぜソースが異なるのかちょっと意味がわからないです。
<?php " [1]=> がタグ扱いでブラウザで表示されないだけじゃねーか。
いや <?php とかはタグの始まりとみなされてブラウザが次の > まで 表示しなくするだろw どうしてもブラウザに出したければ、htmlspecialcharsを通すとかでどうかな。
>>814 ちょっと意味が分からないならたくさん勉強することだ。
var_dumpは出力にそのまま垂れ流すことしかできないからソースを見るしかw
820 :
t :2013/05/08(水) 21:34:36.96 ID:zJfXxHKJ
【OS名】mac10.8 【PHPのバージョン】5.3 【連携ソフトウェア】 【質問内容】 $encodingText=htmlspecialchars($writingText); $encodingText=str_replace('\r\n','<>',$encodingText); $encodingText=str_replace('\n','<>',$encodingText); $encodingText=str_replace('\r','<>',$encodingText); $encodingText=str_replace(PHP_EOL,'<>',$encodingText); ここで聞く事なのかどうか。。2chのlogみたいにcsvにフォームからの書込みを一行保存したくて改行を<>に変換したいですけど これだとcsv内は改行されてしまいます。。何故かPHP_EOLを使った部分で改行が「"改行<>"」という形でcsvに保存されます。 どうすりゃ改行を一行にまとめられますかね???ちなみに最初のhtmlspecialcharsは関係なかーたです
文字コード絡みじゃねーのとエスパー
>>820 改行コード(\n)がシングルになってる。
展開させるためにはダブルにしろ。"\n"
htmlspecialcharsは出力の直前にかけろ。
ただし2chがそういう仕様ならそれを真似るなら仕方ない。
str_replaceでまとめられるものはまとめろ。
つまりstr_replace(["\r\n", "n"], '<>',$encodingText);
"\r"で改行なんて今更ない。昔あったのかも知らん。
遺贈。
100を-100のようにプラスとマイナスを反転させたいのですが 反転させるような関数はありますでしょうか? なければ100-(100*2)みたいな感じしかないでしょうか。
824 :
t :2013/05/08(水) 22:26:44.16 ID:zJfXxHKJ
>>822 ありがとうございます。str_replaceのシングルをダブルクオートに変えたら行けました。
どーもですどーもです。
ちなみにその[]で囲むやり方知らなくてこっちで動かなくて気になるんですができれば。。。。。
825 :
t :2013/05/08(水) 22:28:51.25 ID:zJfXxHKJ
>>824 あ、ごめん。php5.3なんだな。
5.4からその記法は使えるよ。
array() => []
827 :
t :2013/05/08(水) 23:17:42.41 ID:zJfXxHKJ
str_replace(array("\r\n", "n"), '<>',$encodingText);
こうすればいけるよ。
>>826 のは
5.4から array() の代わりに [] が使えるようになったよって意味の => かと。
関数リファレンスくらい読めと
830 :
nobodyさん :2013/05/09(木) 09:06:33.16 ID:Jsywf66a
【OS名】CentOS 6.3
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL
【質問内容】
datetimeの比較がうまくいきません。
$start = new DateTime("2013/05/08 12:30:30");
$end = new DateTime("2013/05/04 12:30:30");
if( $start > $end )
{
echo "true";
}
else
{
echo "false";
}
としてもfalseのみが出ます。
仮に$startと$endを入れ替えてもfalseとなります。
http://php.net/manual/ja/datetime.diff.php を見るとオブジェクトの比較が出来ているようなのですが何か違っていますでしょうか?
いや同じだろ
>>830 のコードはtrueになるしなんか勘違いしてんじゃね
>>830 のコードは
new を使っているからオブジェクトで定義しているんじゃないの?
中の値で比較するんだったら
if($start->gettimestamp() > $end->gettimestamp())
とかで比較しないとダメなんじゃない?
>>832 つまり、コード以外の所が違うということだよ
836 :
nobodyさん :2013/05/10(金) 22:59:44.03 ID:nZ5eiGcK
PHPのマニュアルを丸ごと(ソースごと・・・)コピーしただけのサイトがよく検索に引っかかりますがあれはなんの嫌がらせですか?
ミラーサイトという言葉を知らないのかね
838 :
nobodyさん :2013/05/10(金) 23:21:28.67 ID:iT9k79IA
PHPは公式から既に嫌がらせだからな
コピーするならcssも引っ張って来いとは思う
840 :
nobodyさん :2013/05/10(金) 23:50:29.42 ID:ReW38688
XMLをsimplexml_load_string()でオブジェクトに代入してから 要素についてtrue(1)かfalse(0)かを確かめたいのですが var_dumpで object(SimpleXMLElement)#1 (1) { ["result"]=> object(SimpleXMLElement)#4 (4) { ["options"]=> object(SimpleXMLElement)#2 (0) { } ["raw"]=> object(SimpleXMLElement)#3 (0) { } ["status"]=> string(1) "0" ["statusmsg"]=> string(5) "Sorry" } } のようになっているのものを if($object->result->status) とすると0の場合も1の場合もtrueになってしまいます。 string型の0はfalseと判断されないのでしょうか?
>>840 var_dump($object->result->status)
842 :
nobodyさん :2013/05/11(土) 09:14:21.17 ID:3jYy1Xhq
phpを使った空メール→配信登録をつくってるんですが、 QRコード読み取りから空メールさせる方法とは別に、 サイトからユーザに空メールを送るようにもさせたいと思っております mailtoを貼り付けようと思ったのですが、この場合spamが心配です たとえば、phpで動的に書き出したページにmailtoを仕込んでおけば spam対策になるもんでしょうか それともなにか他に手だてがありますでしょうか
844 :
nobodyさん :2013/05/11(土) 12:18:36.78 ID:OhMoHBiS
どこかのブログでやってるけど フィールド名いじっておいて 普通に使うフィールド名は罠フィールドとしてcssで非表示 罠フィールドに何か入ってたらbotとして拒否 ということやってる
845 :
nobodyさん :2013/05/11(土) 22:28:31.55 ID:JC/Ksawh
error_log()について質問です 質問1 message_typeで1を指定したらメールを送れるってことですが、 この場合このPHPが入ってるのと同じサーバのsmtpdを利用するってことですよね? 他サーバのsmtpdを使うことは出来ないんでしょうか アプリケーションサーバとメールサーバを分けたい場合はどうすれば良いんでしょうか 質問2 エラーを出力保存するファイルを指定できるようになっていますが、 蓄積されたエラーが膨大になった時に、過去ログ化して新しい同名のファイルを 作成することになるんだと思います。 このとき、何を基準に新規ファイル作成するんでしょうか そういうのを指定できるオプションってないですか? よろしくお願いします
848 :
nobodyさん :2013/05/12(日) 12:39:50.54 ID:kHm/fQGT
すみません、上でerror_log()について質問したものなんですが、ログの文章が改行ができません ググるとたくさん該当する話が出てくるんですが $msg = "エラーです"; error_log($msg.'\n', 3, '/tmp/error.log'); error_log($msg.'\r', 3, '/tmp/error.log'); error_log($msg.'\r\n', 3, '/tmp/error.log'); error_log($msg.'\n', 3, '/tmp/error.log'); error_log($msg.'\r', 3, '/tmp/error.log'); error_log($msg.'\r\n', 3, '/tmp/error.log'); とどうやっても改行されません エラーです\n エラーです\n と、そのまま出てしまいます どうしたらいんでしょうか
849 :
848 :2013/05/12(日) 12:46:50.30 ID:???
化けてたらすみません、上記のサンプルの上三つはバックスラッシュ、下三つは¥記号です
改行はだぶるくぉーてーしょん。
851 :
848 :2013/05/12(日) 12:58:21.07 ID:???
>>850 ありがとうございます!
こんな使いわけが必要なんですね、ビックリしました
>>841 ありがとうございます。
オブジェクトの時は常にtrueなんですね
853 :
nobodyさん :2013/05/12(日) 22:07:17.68 ID:4FW3vhI4
854 :
nobodyさん :2013/05/13(月) 13:12:37.61 ID:Y6gDftln
【OS名】windows7 【PHPのバージョン】5.3 【連携ソフトウェア】 【質問内容】HTMLの入力フォームにURLを入力して、 予め保存してある複数のURLと重複していないか、 リンク切れではないかという判定をしたいのですが うまくいきません。 まず重複の判定は、入力フォームからの文字列を$str、 予め保存してるURLを"urlist.txt"に保存してます。 if(!$fp=fopen("urllist.txt","r")){ return ERROR(1); }else{ $urllist = file("urlist.txt"); foreach( $urllist as $url ){ //URLの重複チェック if (mb_ereg( "$str","$url" )){ return ERROR(2); break; } } fclose($fp); } こんな感じで、普通のURLだと重複チェックできるのですが、 yutubeやニコニコ動画などのURLだとなぜか判別できません。
855 :
854 :2013/05/13(月) 13:14:40.79 ID:Y6gDftln
そして、リンク切れのチェックはネットで見つけた get_http_headerというのをつかってみたのですが うまくできませんでした。 何か良い方法があれば教えてください。 よろしくお願いします。
正規表現のパターンなんだから、 .は任意の一文字で合ってしまうとしても、 ? があると通らないよね。
判別できない両者を出してみてどうなってるか見てみては
858 :
nobodyさん :2013/05/13(月) 15:15:30.49 ID:k+GDNsHp
【PHPのバージョン】5.3.6 function &hoge() { return new StdClass; } とすると、 Notice: Only variable references should be returned by reference とエラーログが出ますよね。 で、いったんnewを変数に入れてからreturnすると問題はなくなります。 しかしこれって、いったん変数に入れることで PHPの処理内容としてどのような違いがあるわけなのでしょうか? 恐れ入りますが、ものすごくわかりやすく教えて下さい。
859 :
854 :2013/05/13(月) 15:56:53.43 ID:Y6gDftln
>>856-857 レスありがとうございます。
見てみたら、yutubeやニコ動のURLには?、&など入ってました。
これを正規表現に展開しないようにすれば、判別できるようになるのでしょうか?
展開しないようにそのまま判別するには、?、&があった場合に\を付ける的な
処理をすればできますかね?
基本的に同一とみなす条件を調べないとならんと思うけど 完全一致でいいならstrcmpやstrcasecmp使ってはどうか。
>>858 質問の答えじゃ無いんだけど、なんで
function hoge()
とやらずに
function &hoge()
ってやりたいの?
862 :
nobodyさん :2013/05/13(月) 17:06:55.59 ID:k+GDNsHp
>>861 PHPの挙動と仕様への理解を深めたいだけで、やりたいわけじゃないです。
オブジェクトはデフォルトで参照で渡されるそうですが、
この場合、&を付けることでどのような違いが発生していますか?
864 :
863 :2013/05/13(月) 18:16:35.34 ID:???
だとしたら、なぜfunction &method()でreturn new Klass;としたときに、&(instance)的な処理が 行われないのだろうかという疑問が残るが、それは良くわからない。 良くわからないので、俺は&method()は一生使わないと思う。
PHPの場合は良くわからないけど、一時オブジェクトを参照で受けるってありなのか?
866 :
nobodyさん :2013/05/14(火) 00:45:31.37 ID:gD2UsIag
>
>>863 オブジェクトのIDとは知らなかったのでひじょーに勉強になりました。
> 式 の結果を返してくれることはありません。
> 可能なことは、値へのリファレンスを返すことができるということだけで、
> それ以外の何者でもありません。
という仕様だということで、&のretun newが無効なのも納得できました。
867 :
nobodyさん :2013/05/14(火) 01:13:37.48 ID:gD2UsIag
関連して気になったのですが、 function hoge() { return 1; } $r = &hoge(); とした時、$rの参照先はどこを指していますか? どこからもアクセスや改変がされない何処かなのでしょうか?
動きません
869 :
867 :2013/05/15(水) 07:58:41.28 ID:/TAZ4XOp
870 :
nobodyさん :2013/05/15(水) 22:55:26.37 ID:efuZNxA4
ぐぐる先生もなかなか回答をくれずさっぱりです。 くだらない質問ですが助けてください。 【OS名】Windows7+XAMPP1.8.1 【PHPのバージョン】5.4.7 【連携ソフトウェア】PEAR 1.9.4 【質問内容】 DBからテーブルのデータを連想配列に取り込もうとしています。 Web上にあった「while($row=$hoge->fetchRow(DB_FETCHMODE_ASSOC))」を利用して実行すると、 「Notice: Use of undefined constant DB_FETCHMODE_ASSOC - assumed 'DB_FETCHMODE_ASSOC' in hogehoge.php on line 34」とエラーが出てしまいます。 エラーの通り「while($row=$hoge->fetchRow('DB_FETCHMODE_ASSOC'))」とするとエラーは消えますが、取得した配列のキーはnullになります。 どうしたら回避できるでしょうか。 なにとぞお助けください。
初心者はxampp使うな
xampp良いと思うけどなー サーバーたててlampは辞めて欲しいけどローカル用環境ならxamppで十分でしょ
873 :
870 :2013/05/16(木) 08:03:03.05 ID:yTIwfF81
>>871 >>872 ありがとうございます。
XAMPPで構成されたAPACHEやPHPは単独で入れた場合と動作が違うということでしょうか。
XAMPP消してそれぞれ単独インストールしてみたほうがいいですか?
>>870 requireが足りてないんじゃないの?
875 :
nobodyさん :2013/05/16(木) 12:38:58.01 ID:IW38rAuX
ファイルの書き換えで fileで読み出し whileで全行検索 一致部分を変更 file_put_contentで元に戻すという形で書き換えています。 linuxのsedみたいに指定箇所をざっくり書き換える方法はありますか?
ざっくりって何だよ? あと、sedがいいならsed起動しろ。
877 :
nobodyさん :2013/05/16(木) 13:26:22.85 ID:IW38rAuX
>>876 すべてをいったん読み込むことなく
該当する場所のみを書き換えるのにざっくりという言葉を使ってしまいました。
申し訳ありません。
現在開発をしているところはコマンドを叩ける権限がないので
一旦すべてを読み込む以外でsedのように書き換える方法があればと思っておりました。
>>877 全部まとめて読むのが嫌なら一行ずつ読めばいいじゃない。
>>877 全てを読まないとどこを変更していいかわからないだろ。
sedだって全部読んでる。
うちのsedはきっちり書き換えてくれるよ。 ファイルの先頭に一文字追加したときに起こっていることについても勘違いしてそう。
sedが書き換えてくれないなんて誰も言ってませんが
ざっくり書き換えるsedをください
こっそり書き換えるsedなら
884 :
PHP神 :2013/05/16(木) 20:21:10.92 ID:???
>>875 読む分と書く分をfopenしてwhileでfgetsして処理してfwrite
885 :
870 :2013/05/16(木) 20:28:48.82 ID:pZ2YUXzt
>>874 ご指摘ありがとうございます。
requireはMDB2.phpだけ指定しています。
MDB2_driverも呼んでみましたが変わらなかったです。
>>885 そのコードはどこからコピーしてきたの?
DB_FETCHMODE_ASSOC は pear:DB MDB2なら MDB2_FETCHMODE_ASSOC
888 :
870 :2013/05/17(金) 18:10:51.64 ID:GrS1oXzW
>>887 解決しました!!
マニュアルはちゃんと全部読めってことですね、猛省します・・・。
みなさまありがとうございました!!
いや別のモジュールのサンプルコードをコピペしてくんなよってことだよ
890 :
nobodyさん :2013/05/17(金) 20:42:22.69 ID:hjTCl7an
PHP勉強し始めて1か月くらいなんですけど、質問です。スレチだったらすいません ↓このプログラムの値を受け取るにはどのようにしたらいいのでしょうか? <form action="sample10-2.php" method="get"> <?php $items=array('a-1'=>'ガム', 'b-2'=>'チョコレート', 'c-3'=>'クッキー'); foreach($items as $itemKey => $itemValue){ print('<input type="checkbox" id="'.$itemKey.'" value="'.$itemKey.'" /> <label for="'.$itemKey.'">'.$itemValue.'</label>'); } ?> <input type="submit" value="送信する" /> </form>
>>890 受取先でvar_dump($_GET)してみ
892 :
nobodyさん :2013/05/17(金) 21:54:07.09 ID:hjTCl7an
>>891 さん
array(0) { } ってでてきました。
送信するってボタン押した?
894 :
890 :2013/05/17(金) 22:06:06.39 ID:hjTCl7an
押しました!受け取る側のプログラムの変数宣言とかもわからないのですがそのせいでしょうか?
895 :
nobodyさん :2013/05/17(金) 22:27:59.48 ID:jIpNXAl4
レンタルサーバーで /public_htmlファルダに置いたa003.phpに対して 同じく/public_htmlファルダに置いたtest.shに #!/usr/bin/php cd ~/public_html /usr/bin/php a003.php と書いて、cronマネージャに sh ~/public_html/test.sh と書いて実行しましたが、a003.phpは動きません sh ~/public_html/test.shは間違いない記述で a003.phpは動作正常に動作しています。 test.shのphpの実行の間違えだと思うのですが、 教えてください。
実行権限とか、改行コードとか
>>894 getメソッドなら送信後のURLをコピペしてみ
898 :
nobodyさん :2013/05/17(金) 22:47:24.26 ID:jIpNXAl4
実行権限はa003.phpが777で test.shが777にしています。 レンタルサーバーの会社に問い合わせると、 phpは動く。 cronのコマンドなどのサポートは一切できない という返信が来ました もう、さっぱりわかりません
899 :
890 :2013/05/17(金) 22:48:23.15 ID:hjTCl7an
>>898 なんでPHP宣言でシェルスクリプト動かそうとしてるのさ
実行権限はa003.phpが777で test.shが777にしています。 レンタルサーバーの会社に問い合わせると、 phpは動く。 cronのコマンドなどのサポートは一切できない という返信が来ました もう、さっぱりわかりません
大事なことなので二度書きました
904 :
nobodyさん :2013/05/17(金) 23:06:17.51 ID:jIpNXAl4
test.sh cd ~/public_html /usr/bin/php a003.php こうですか
777にする意味がわからない
>>902 あとは php のパスかなぁ。確認した?たまに
/usr/local/bin/php
のところもあるよ
907 :
nobodyさん :2013/05/17(金) 23:52:42.50 ID:jIpNXAl4
phpのパス モジュール版 パス: /usr/bin/php となってました fc2 レンタルサーバーLITE
> sh ~/public_html/test.shは間違いない記述で これおかしくないか? 間違えてないって何で言えるの? シェルを実行しているルートからのパスにしないとダメだろ
909 :
nobodyさん :2013/05/18(土) 00:28:16.12 ID:sKm+lEFL
cron コマンドに sh ~/public_html/test.shと記述すると public_htmlの下に置いたtest.sh にecho "why" > ~/public_html/naze.txtと記述した時に public_htmlの下にnaze.txtが生成されるので、 sh ~/public_html/test.shで正しいと判断しました。
910 :
890 :2013/05/18(土) 04:48:14.04 ID:8v+sotfd
>>901 さん
受け取り側のプログラムのソースは
array(0) {
}
でした。
911 :
nobodyさん :2013/05/18(土) 06:37:50.58 ID:6ky0kPCm
どうしてこう頓珍漢な投稿しかできないかというと どうやって表示するのかすら考えようとしないからなんだよね(笑)
仮にシェルが正しく動いて、 a003.php が実行されても、
当然ですがPOSTはされません。
>>890 のPHPは、 そのような文字列を書き出すだけのものです。
その文字列が sample10-2.php へPOSTするような処理をするhtmlだと
認識して実行できるのはブラウザだけです。
普通はPOSTするだけのプログラムをPHPで書きます。
自動でPOSTするようなjavascriptを入れてブラウザになんとか渡して実行できていたとしても
checkboxは、チェックされていないとPOST時にキーすら渡しません。
はい?
シェルの書き方違うじゃねぇかw #! /usr/bin/sh /usr/bin/php 引数 引数はスクリプトのパスだ
916 :
890 :2013/05/18(土) 19:00:46.89 ID:8v+sotfd
>>912 さん
元のphpプログラムのソースは
<form action="sample10-2.php" method="get">
<dl>
<dt>商品</dt>
<dd>
<?php
$items=array('a-1'=>'ガム', 'b-2'=>'チョコレート', 'c-3'=>'クッキー');
foreach($items as $itemKey => $itemValue){
print('<input type="checkbox" id="'.$itemKey.'" value="'.$itemKey.'" />
<label for="'.$itemKey.'">'.$itemValue.'</label>');
}
?>
</dd>
</dl>
<input type="submit" value="送信する" />
</form>
です。受け取り側はわからないです
918 :
890 :2013/05/18(土) 19:30:34.88 ID:8v+sotfd
>>918 再現する送信側と受信側のPHPファイルをうpしろ。
まて この対戦がおわったら
これ受け取り側の問題だわ
922 :
890 :2013/05/18(土) 20:14:52.87 ID:8v+sotfd
>>919 さん
再現?PHPの勉強でブラウザ上に表示させたいだけなんです!
できたら受け取りのプログラムをどのように書けばいいか教えてください!!
>>922 <?php
print_r($_GET[);
?>
924 :
890 :2013/05/18(土) 20:34:42.77 ID:8v+sotfd
>>923 さん
GETの後はvalue属性の値でいいんですか?その時は変数宣言はいりますか?
print_r($_GET); こうだった このまま打て
926 :
890 :2013/05/18(土) 20:38:06.79 ID:8v+sotfd
>>925 さん
sample10-2.phpのほうで
Array ( ) て表示されてしまいました。
あーわかった 送信側idじゃなくてnameに変えろ
928 :
890 :2013/05/18(土) 20:54:09.48 ID:8v+sotfd
>>927 さん
できました!!ありがとうございます!!
ちなみにvalueの値を表示するのにはどうしたらいいですか?
$_GETは配列だからkey指定してやればいい
930 :
890 :2013/05/18(土) 21:12:47.65 ID:8v+sotfd
>>929 全部をチェックしたらArray ( [a-1] => a-1 [b-2] => b-2 [c-3] => c-3 ) と表示されるんですけど
キーだけ表示するにはどうしたらいいですか?
nameとvalueが一緒だからややこしいな この場合だと echo $_GET['nameの値'];で値が出せる a-1だったら echo $_GET['a-1']な チェックされてるものだけ全部表示したいなら foreach($_GET as $value){ echo $value; } で全部出る
932 :
890 :2013/05/18(土) 21:40:16.26 ID:8v+sotfd
>>931 さん
できました!ありがとうございました!!
933 :
nobodyさん :2013/05/19(日) 20:07:23.39 ID:5aKhdCp3
windows版のPHPで、デスクトップフォルダにファイルを出力させたいのですが、 $desktop_path = getenv("HOMEDRIVE").getenv("HOMEPATH"); $path = $desktop_path.'\test.txt'; file_put_contents($path,"hoge"); とやっても、デスクトップフォルダではなく、ユーザフォルダにファイルが出力されてしまいます どうするのが正しいのでしょうか
apacheの管轄外にファイルなんて勝手に作れるの?
HOMEPATHがユーザフォルダなんだから当たり前じゃん
(゚o゚;) ハッ ありがとうございました
ID出してな
スルーするならその質問は未解決ということになるが
いやまあ今回のは質問じゃないからな 質問者と同じ人ではあるだろうけど
942 :
933 :2013/05/20(月) 22:46:02.99 ID:???
>>936 は偽物です。
よく分からないから説明してくださいクズ共。
944 :
nobodyさん :2013/05/21(火) 13:52:14.79 ID:zVTd5q9v
ディレクトリにphp.iniを置いて設定を上書きする場合についてですが、 いろいろなサイトを見ると、すべてのディレクトリに置く必要があると書いてあります 一般的なフレームワークのように、 ルートに置かれているindex.phpが、サブディレクトリの各ファイルを読み込んでいる場合、 サブディレクトリにも置く必要があるのでしょうか?
946 :
nobodyさん :2013/05/22(水) 03:02:39.01 ID:bg0nnEgA
不可解なエラーが出ます。 mb_regex_encoding("UTF-8"); $str = "てすと"; $regex = '(\xEE\x80\x80)|(\xEE\x80\x81)'; $array = mb_split($regex,$str); →エラーなし $regex = '\xEE\x80[\x80-\x81]'; $array = mb_split($regex,$str); →Warning: mb_split(): mbregex compile err: too short multibyte code string 正規表現が表わすものは同じなのに、後の例では警告が出ます。 理由は何でしょう?
947 :
nobodyさん :2013/05/22(水) 07:03:42.22 ID:+OY2v0pP
同じじゃねえよ # 戻り値と後方参照は別として $regex = '(\xEE\x80\x80)|(\xEE\x80\x81)'; →$regex = '\xEE\x80\x80|\xEE\x80\x81'; と同一 $regex = '\xEE\x80[\x80-\x81]'; →$regex = '(\xEE\x80\x80|\xEE\x80\x81)'; と同一
948 :
nobodyさん :2013/05/22(水) 07:08:05.64 ID:s3ucw8IQ
>>948 どんな画像を生成したいかによるが生成自体はできる。
ただ、それなら10個ほど画像用意したほうが毎回生成するよりいいと思う。
php 画像生成 gd でぐぐればでてくる。
10刻みなんて誰も言ってないだろ
divの背景に画像入れて幅指定のスタイルをPHPで書き出せばいいだろ。
952 :
nobodyさん :2013/05/22(水) 09:48:53.15 ID:s3ucw8IQ
>>949 ありがとうございます。
自分でも画像を10個程度用意してやろうかと思ったのですが
出来ればmaxvalueなる値を設定出来るようにしたかったので
この方法が出来ればなぁと質問させて頂きました
ご提言頂いたphp 画像生成 gdで調べてみます。
ありがとうございました。
953 :
nobodyさん :2013/05/22(水) 15:14:10.07 ID:bg0nnEgA
>>947 ありがとうございました
同じになるように、エラーが出ない方を
$regex = '((\xEE\x80\x80)|(\xEE\x80\x81))';
としても、エラーは出ません。
[\x80-\x81]の展開部分に何か問題があるようです
mbregex compile err: too short multibyte code string
で検索しても、情報がほとんどなく困っています
鬼車では、そういう記述が出来ないようです。 [\xEE\x80\x80-\xEE\x80\x81] って書いてください。
956 :
nobodyさん :2013/05/22(水) 17:10:09.02 ID:bg0nnEgA
rubyの人が同じような現象を書いていたので、なにかそのへんかと思っていたのですが、そういうことですか ありがとうございました。
>>948 >>951 じゃないけど、この人の言うやり方はかなり効率的だよ。
PHP-gdや固定的な画像だけでなんとかするというよりも
cssやjQueryを併用してブラウザ側に視覚的な処理を持たせることも
考えたほうが、構築も負荷も楽になるじぇ。
グラフが保存できないという致命的な問題が
959 :
nobodyさん :2013/05/23(木) 19:09:57.40 ID:C+sPY2uV
自分の要件すらわからないという致命的な問題があるな、うん
なんでcanvas使おうって話にならないんだ?ここだけ何年も前で止まってんの?
なんでcanvas使おうって話になるの?
社会性がないワガガマンだからw
963 :
nobodyさん :2013/05/24(金) 10:01:17.06 ID:N0RBDP8p
【OS名】CentOS 6.4 【PHPのバージョン】5.3 【連携ソフトウェア】MySQL 【質問内容】 配列について質問です。 $_POST['num1'] $_POST['num2'] $_POST['num3'] と配列があるのですが、この個数が不確定な状態です。 num1 〜 num3 までのときもあれば num1 〜 num78 まであるときもあります。 現在は1個ずつnum*があるかどうかを確認してから取り出しているのですが num*の*の部分を正規表現みたいな感じで一気に抜き出すようなことはできないでしょうか? もしくは効率の良い方法などあればご教授いただけないでしょうか。
>>963 foreach ($_POST as $key => $val) { ... }
$results = array(); array_map(function($element) use ($results) { if(preg_match('/^num([0-9]+)$/', $element, $m)) { $results[] = $m[1]; } });
間違えた $results = array(); array_map(function($element) use ($results) { if(preg_match('/^num([0-9]+)$/', $element, $m)) { $results[] = $m[1]; } }, $_POST); これで $results に数字の部分だけが配列になって入ってるはず。
また間違えた 間違えた $results = array(); array_map(function($element) use ($results) { if(preg_match('/^num([0-9]+)$/', $element, $m)) { $results[] = $m[1]; } }, array_keys($_POST)); 何やってんだおれ
無理やり一行にするなって何回言ったらわかるんだ????????????????????
ifを1行に書く意味がわかんね 何のための三項演算子だ
$results = array(); array_map(function($element) use ($results) { if(preg_match('/^num([0-9]+)$/', $element, $m)) { $results[] = $m[1]; } }, array_keys($_POST));
$results = []; array_map(function($element) use ($results) { if(preg_match('/^num([0-9]+)$/', $element, $m)) { $results[] = $m[1]; } }, array_keys($_POST));
$r = []; array_map(function($e) use ($r) { if(preg_match('/^num([0-9]+)$/', $e, $m)) { $r[] = $m[1]; } }, array_keys($_POST));
974 :
nobodyさん :2013/05/24(金) 17:37:29.91 ID:tSKlADWF
ここでいいのかわからんですが 鯖がcentosで空メールのシステムを作っているのですが、 aliecesにパイプ処理で受信してからphpに処理を引き渡してます ウェブサーバーでphpを動かす時はapacheですが、こんな風にパイプで phpに処理させるときって、そのphpファイルを実行するユーザは誰なんでしょう
こういう使い方をしたいときは、レキシカル変数を参照で渡しましょう。 for($i = 1 ; $i<=78 ;$i++) if (isset($_POST['num'.$i])) $r[$i] = $_POST['num'.$i]; でいいんじゃねーのと思うがね。
>>974 こんな風にというのがどんな風なのかわからないが、コマンドラインでphpを実行するのならそのユーザ、
cronもそのユーザ、apacheで実行されるphpでコマンドを起動するなら、apache。
977 :
976 :2013/05/24(金) 18:02:40.48 ID:???
あ、aliecesって、/etc/aliasesのことか。 だったら、postfixなんかを起動したユーザ(普通はroot)かな。
978 :
976 :2013/05/24(金) 18:09:44.10 ID:???
979 :
nobodyさん :2013/05/25(土) 19:59:05.35 ID:aLejvzSw
strstrとmb_strstrってありますが、strstrでは日本語は判定できないってことでしょうか? UTF-8の文字コードであれば、mb_strstrを使うべきなのでしょうか?
そうです
981 :
nobodyさん :2013/05/25(土) 20:24:38.26 ID:aLejvzSw
ありがとうございました
日本語と英語 全角文字と半角文字 アルファベットとひらがな シングルバイトとマルチバイト UTF-8とASCII それぞれ意味が違うから気をつけてな
983 :
nobodyさん :2013/05/25(土) 20:30:05.85 ID:aLejvzSw
でもstrstrでも同じ結果で判定できたんですよね 何ででしょうか?
同じだったから
規制されているのでレス代行で申し訳ありません 質問と言うより相談なんですが mysqlのパスワードなどが書かれているphp(config.php)のの保存場所ですが 皆さんどのように保存してますか? httpでアクセスできない場所に格納するだけしかやってないのですが もっと良い方法とかあったりするんでしょうか?
俺のサーバーはプライベートな領域にファイルを置けないんで 公開ディレクトリに設置してるけど、 ホームページにドクロマークをつけて 「クリックするな」というリンクを張ってるよ。
PHPは糞って言われるけど、じゃぁ何を使ったらいいの?
ruby
>>989 言語の美しさ?とかじゃなくて実行効率・開発効率を重視してます。
ほぼ毎週くらい、新規に要求定義が変わってくるんです。
もう3年ほど運用してますが。
python googleも大好きpython python選んでおけば間違いない
python(笑)
perl「(なんで候補にあがらないんだろう・・・)」
perlのいいところって何よ?
pearl よりも一文字タイプ数が少ないところ
ぱーる(笑)
エラーが起きてもどの箇所でエラーが起きているのかがはっきり分からないところ
なるほど、それは便利だな!
999 :
nobodyさん :2013/05/26(日) 22:36:59.39 ID:lTpjZRZk
【OS名】CentOS 【PHPのバージョン】6.4 【連携ソフトウェア】MySQL PDO 【質問内容】 PDOの接続からload data infileを使おうとするとmysqlからAccess denied for userのエラーが出てしまうのだけど どうすればいいんでしょう? ちなみに接続オプションにPDO::MYSQL_ATTR_LOCAL_INFILEをセットしてもダメでした。
ageすません。 そして解決しましたmysqlの接続ユーザにfile権限がついてませんでした。 mysqlいちいち面倒くさい。。。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。