【PHP】下らねぇ質問はここに書き込みやがれ 45
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/05/12(土) 16:42:48ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 45
http://pc11.2ch.net/test/read.cgi/php/1177635762/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0750nobodyさん
2007/06/06(水) 01:55:19ID:???0751nobodyさん
2007/06/06(水) 01:58:00ID:???アップロードできない画像は主にjpgです。
アップロードできるjpgもあります。
ファイルサイズも関係ないようです。
(ファイルサイズが大きめのjpgにもアップロードできるものがあった。逆に小さいjpgだができないものもあった)
昔も同じ症状に陥りましたがたしかphpの設定関係だった気がします。。
いったいどこが原因でしょうか?
0752751
2007/06/06(水) 01:59:12ID:b3J3b1x00753nobodyさん
2007/06/06(水) 02:00:53ID:???0754nobodyさん
2007/06/06(水) 02:07:41ID:???スコープを決めるには変数宣言必要だし
変数宣言あるなら
my $hoge;
・・・
$hoge[] = 'fuga';
するなら
my $hoge = array();
・・・
$hoge[] = 'fuga';
のほうが "読みやすい" と思う。
だから俺は変数宣言は必須で初期化は任意でいいと思うけど
初期化してあるほうが「他の人が改修する時」とか。という感じだZE☆
phpの場合スコープいいかげんだから、初期化しといたほうが気配りさんじゃね
エディタの一画面で全部把握できるコードとかだったら俺も初期化とかしねーけどさ
0755751
2007/06/06(水) 02:15:59ID:b3J3b1x0いえ、jpgです。
どうもPHPの設定じゃない気がしてきました。
うーん。
0756nobodyさん
2007/06/06(水) 02:39:59ID:3mye17O+class Hello {
function hello() {
echo "Hello, ", Hello::bar();
}
function bar() {
return "world.";
}
}
Hello::bar(); のようにいちいちクラス名を書いているのですが、
これを省略することはできますか?
0757nobodyさん
2007/06/06(水) 02:43:49ID:0gT0vIE0あるオブジェクトを返してくるメソッドがfoo()があると仮定します。
その返されたオブジェクトがメソッドbar()を持っていたとき、
このメソッドbarを呼ぶには一度テンポラリ変数にオブジェクトを代入して、
改めてメソッドを適用しなくてはならないのでしょうか?
つまり、
$tmp = foo();
$tmp->bar();
と書くしかないのでしょうか。できれば
foo()->bar();
のように一度に書きたいです。無理でしょうか。
0758nobodyさん
2007/06/06(水) 02:50:53ID:oqXEdx16PHP4用と、PHP5用を分けて2つ作るか、
ソースに差がある部分を条件文で分けて1つだけ作るか
どっちにするか迷っています。
速度面を重視するなら、条件文がないほうが早いと思うので前者がいいですか?
互換性を保つため、PHP4の書き方で1つだけ作るという方法もありますが、
速度面でPHP5から導入された関数なんかも使いたいので、
それは今回なしの方向でお願いします。
0759751
2007/06/06(水) 02:52:21ID:b3J3b1x00761nobodyさん
2007/06/06(水) 03:17:31ID:???0762nobodyさん
2007/06/06(水) 03:23:36ID:???0763nobodyさん
2007/06/06(水) 03:35:50ID:???ttp://www2.alc.co.jp/ejr/index.php?word_in=substring&word_in2=reedeirrf&word_in3=zJPa7DCxJ15687987t
0764nobodyさん
2007/06/06(水) 03:36:26ID:???fucntion hogehoge()
{
}
}
ベタなのはこんなん?だけど複雑なのはめんどそう
0766いつもの人 ◆3Htx6mDqZs
2007/06/06(水) 03:55:05ID:???速度言ってるが、ベンチすらしたことなだろ
>>757
foo()->bar(); 4だと使えない?
call_user_func(array(foo(),bar))とか
>>756
self
0767いつもの人 ◆3Htx6mDqZs
2007/06/06(水) 03:57:26ID:???0768nobodyさん
2007/06/06(水) 04:05:02ID:???0769758
2007/06/06(水) 04:40:45ID:oqXEdx16DBを使う予定なのですが、
PHP4ではPDOが使えないので、分けようと思いました。
PDOは速度面キャッシュ効率などパフォーマンスに優れているので、
PHP5ではそちらを使いたいなぁと。
4でも5でも使えるPEARはパフォーマンスは悪いですし、
標準DB関数でもいいのですが、めんどくさくて・・・
>>766
ベンチはとってないです。というのもまだ着手してないので。
結構大きいものになる予定なので、
簡単なものを作って比較するのでは誤差も微妙で参考にならないと思い質問しました。
0770nobodyさん
2007/06/06(水) 05:03:22ID:???PDOは確かにね
DBの条件分岐だけならほんの少しで済むだろうし
別に作る必要は無いと思われ
条件文自体は何個あろうが変わらん(誤差以下
0771758
2007/06/06(水) 05:14:44ID:oqXEdx16心強いアドバイスありがとうございます。
では該当部分は1ファイルにまとめて作りたいと思います。
早朝からわざわざありがとうございました。
0772nobodyさん
2007/06/06(水) 08:29:01ID:???0773nobodyさん
2007/06/06(水) 10:25:01ID:jwkhTokvどこか、初心者でもわかりやすい
解説サイトありますか??
お願いします。
0774nobodyさん
2007/06/06(水) 10:26:32ID:jwkhTokv書き込む場所間違えた。
さーせん
0775nobodyさん
2007/06/06(水) 10:50:10ID:xvgl2fqUそれは違うのではないでしょうか。
正しくは 「文字列型が実は全て配列型で構成されてる」 で、
簡単に言うと 「文字列は文字の配列」 ですよね?
0776nobodyさん
2007/06/06(水) 11:18:36ID:???0777nobodyさん
2007/06/06(水) 11:22:52ID:???$hoge = "PHP-kuso";
$hoge[3] = "\0";
print $hoge;
こうしたらどう表示されるの?
0778nobodyさん
2007/06/06(水) 11:23:49ID:???0779nobodyさん
2007/06/06(水) 11:49:24ID:KZlHfOQYこれは何という名前の虚弱生でしょうか?対処方法はありますか?
0782nobodyさん
2007/06/06(水) 12:18:54ID:???糖尿病
>>781
俺もオンラインゲームにどっぷり
やっぱパソコン持っててオンラインゲームやってないやつってクズだよな
0785nobodyさん
2007/06/06(水) 14:06:18ID:???0786nobodyさん
2007/06/06(水) 15:13:12ID:y4bZ9a73このプログラムなんですが、
ソースを見た限りではJavaScriptは使われていませんよね?
こういう、順番に取得した結果をリアルタイムに表示ようなものは、
PHPだけで出来ますか?
全て終わるまで応答が何秒も返って来ないプログラムの場合有効そうですよね?
0787nobodyさん
2007/06/06(水) 15:18:59ID:???0788nobodyさん
2007/06/06(水) 15:52:07ID:???いちおうあるよ。あまり使われてないけど。
【総合】 Webprog板質問雑談スレッド 1
http://pc11.2ch.net/test/read.cgi/php/1131016915/
0789nobodyさん
2007/06/06(水) 15:52:36ID:???<?php
echo "Hello\n";
ob_flush();
flush();
sleep(2);
echo "World\n";
?>
0791790
2007/06/06(水) 16:06:47ID:???function fluch_echo($str,$sleep=0){
ob_flush();
flush();
sleep($sleep);
echo $str;
}
fluch_echo ("Hello\n",2);
fluch_echo ("World\n",2);
こんなの作ってみたんだがどうだろ
0792nobodyさん
2007/06/06(水) 16:11:53ID:y4bZ9a73どうもありがとうございます。
こんな面白い関数があったのですねー
早速これをつかって色々遊んでみます。
0795nobodyさん
2007/06/06(水) 17:27:09ID:???出力はいろいろなところでバッファリングされる
ob_flush( ) でPHPのバッファをApacheにフラッシュ
flush( ) でApache内のバッファをブラウザへ出力
<table>があると</table>が来るまでブラウザ内にバッファされて表示されない
0797nobodyさん
2007/06/06(水) 17:41:31ID:???IEかな
IEは256バイト以下の出力はブラウザにバッファされるからHelloの前にダミーの文字を256文字出力しておけばいい
<?php
echo str_repeat("A", 256);
echo "<br>\n";
echo "Hello\n";
ob_flush();
flush();
sleep(2);
echo "World\n";
?>
0798nobodyさん
2007/06/06(水) 17:43:37ID:sQx6t4Ws|| か or か、 &&か and か。
0799nobodyさん
2007/06/06(水) 17:46:16ID:???短かったり関数だったりする場合はorとかORとか書くかな
0800nobodyさん
2007/06/06(水) 17:53:16ID:???>>ob_flush( ) でPHPのバッファをApacheにフラッシュ
これ以降の出力をメモリに格納
>>flush( ) でApache内のバッファをブラウザへ出力
今まで溜めたものを射精して、通常処理でFA?
あとネストってなにがネストってるんだ…
0802nobodyさん
2007/06/06(水) 18:22:16ID:???つかそれは論理演算子…。
優先順位が違うから基本的に&&||だね。
or exit()くらいにしか使わんなぁ。or exit()自体もほぼ使わないけど。
0803nobodyさん
2007/06/06(水) 18:27:10ID:sQx6t4Wsなんでですか?orはだめなの?
0804nobodyさん
2007/06/06(水) 18:34:02ID:2+2ZUG2Dこの方向幕が何の電車(○○○系)に使われていたのか、知りたいです。
方向幕の装置は手で動かすハンドルが付いており、
電動式ではないようなので、かなりの年代物のようです。
印刷されているコマの駅は、山口県の一部(宇部・宇部新川・下関・厚東など)と、
日豊線の門司港〜大分間、鹿児島線の門司港〜川尻間、あと長崎線です。
幕の痛み具合から日豊線で使用されていた物のようなのですが、
それ以上のことは分かりません。
『急行』と書かれたコマがあるものの、多分普通電車の方向幕だと思います。
また、小郡が『新山口』となっていないので、やはり年代物でしょうか。
どなたかお詳しい方いらっしゃったら、どうぞ宜しくお願いします。
0806717 ◆.Ia5JkzwT6
2007/06/06(水) 18:50:43ID:???一行ずつ検査して行った所、どうやらセッションの中身が空なのかどうかを判別せずに$sestmpで移していたのが不味かったようです。
session_start();
$sestmp=$_SESSION;
session_destroy();
session_id(md5(uniqid(rand(),true)));
session_start();
$_SESSION=$sestmp;
を
session_start();
if(isset($_SESSION["hoge"])){
$sestmp=($_SESSION["hoge"]);
}
session_destroy();
session_id(md5(uniqid(rand(),true)));
session_start();
if(isset($sestmp)){
$_SESSION["hoge"]=($sestmp);
}
に書き換えたところ上手く動作するようになりました。
なぜこんな所で動作の違いが生じたのかは解りませんが、とりあえず動作するようになったので報告させて頂きます。
有り難う御座いました。
0807779
2007/06/06(水) 18:54:27ID:???レスくれたみなさん、本当にありがとうございます
明日からは首にならないように皆さんの意見を取り入れ、こっそりオンラインゲームしようと思います
0808nobodyさん
2007/06/06(水) 18:59:51ID:???0810nobodyさん
2007/06/06(水) 20:21:07ID:???0811nobodyさん
2007/06/06(水) 20:25:39ID:???0813nobodyさん
2007/06/06(水) 20:31:27ID:???今かなり大きな仕事やってまして、主任を任されています
これさえ終われば・・・と思ってはいるのですが、このままでは本当に鬱病になりそうです
明日こそは頑張ってオンラインゲームじゃなかった仕事します
0814nobodyさん
2007/06/06(水) 20:34:41ID:???>session_id(md5(uniqid(rand(),true)));
なんでわざわざ、自前でこんな事やってんの?
PHPが発行してくれるセッションIDは十分に信頼できるランダム性を持ってるぞ。
0816nobodyさん
2007/06/06(水) 20:44:24ID:???欝は表に症状が出たら手遅れだから
早めに病院いったほうがいいよ
> 明日こそは頑張って(略
典型的に欝になりやすいタイプだな……無理して2ヶ月休職とかなる前に手をうっとけ
あと がんばるな
0817nobodyさん
2007/06/06(水) 20:44:33ID:???0818nobodyさん
2007/06/06(水) 20:46:40ID:???session.entropy_file = /dev/urandom
session.entropy_length = 32
これで十分
0820nobodyさん
2007/06/06(水) 21:05:13ID:???おまいらガンガレ!ガンガレ!超ガンガレ!
「頑張れ」って鬱には逆効果なんだっけ
0821nobodyさん
2007/06/06(水) 21:45:54ID:???頑張れ、は確か痴呆症の人に言ってはいけない言葉だったと思う。
鬱の人には、頑張れ、といってあげると気分が楽になると思うよ。
0823nobodyさん
2007/06/06(水) 23:25:06ID:???生真面目な人はうつになりやすいので
頑張れ、とかいうとホントに頑張っちゃって病状悪化するので言っちゃだめ
と、マジレス
0824nobodyさん
2007/06/06(水) 23:40:10ID:???鬱の人間にもそれは分かってるはず。
言われても相手に悪気がないのも分かるし、
言われても気にしなければいいと言うことが分かっているのに、
なぜか病状悪化するんだよな。
確かに>>823の言うとおり生真面目すぎるんだろうな。
0825717 ◆.Ia5JkzwT6
2007/06/06(水) 23:43:50ID:RCcsVPbuめちゃめちゃですか?もうちょっと具体的にお願いします。
ちなみに最後から二行目の括弧はミスです。
>>814
特に根拠は無いのですが、なんとなく少しIDが短かいようで不安になったので、idを長くするためだけにやっています
>>817
マニュアルのコピペです
>>818
良く意味が解らないので保留にしておきます
と言うかそれ、窓だと動かないのでは?
>>819
ほとんどsession_regenerate_idが古いファイルを消してくれなかった頃に書かれた物のコピペですが、そんなに変でしたか?
やりたいことは毎回session_regenerate_id(true)と同等の動作をさせたいだけですが、前述の理由で長ったらしいコードになっています。
0826nobodyさん
2007/06/06(水) 23:44:04ID:???って書くとむきになってマジレスしてくる奴とかは鬱になりやすいので
にちゃんなんだからとさらっとスルーできるようにしましょう。
0827nobodyさん
2007/06/07(木) 02:01:20ID:???これで明日の運勢を決めてる
0828nobodyさん
2007/06/07(木) 02:33:49ID:???( ´・ω・`) ∧_∧
/ \ ( )うんうん、それがいいよね
.__| | .| |_ / ヽ
||\  ̄ ̄ ̄ ̄ / .| | |
||\..∧_∧ (⌒\|__./ ./
||. ( ) ~\_____ノ| ∧_∧
/ ヽ 賛成だね \| ( )
| ヽ \/ ヽ. ぼくもそうするよ〜、だってそれがよさげだもん
| |ヽ、二⌒) / .| | |
0829nobodyさん
2007/06/07(木) 03:01:48ID:???0830nobodyさん
2007/06/07(木) 03:06:20ID:???0831nobodyさん
2007/06/07(木) 09:31:41ID:???実際にはLinuxのサーバで動かすプログラムをwinでコーディングするって
問題ありますか?
もちろんphpやSQLのバージョンは同じという前提ですが…
0832nobodyさん
2007/06/07(木) 09:43:29ID:???難しいことしないにしても、マニュアルのファイル操作系関数はよく見ておいたほうがいい。
あとファイル名規則はLinuxにあわせること。大文字小文字にも注意して。
0834nobodyさん
2007/06/07(木) 10:08:56ID:???コーディング自体は何使っても問題無いが、
途中の動作テストをwindows上でやるのはあまりお勧めできない。実機がなければ、VirtualPCとかを使えばマシか。
文字コード改行コードの違い、マルチバイトの正規表現、CLI まわりは特に注意する。
0835nobodyさん
2007/06/07(木) 10:13:30ID:???>めちゃめちゃですか?もうちょっと具体的にお願いします。
>なぜこんな所で動作の違いが生じたのかは解りませんが
って書いてるんだから、変更に意味があると思ってないでしょう?あなたも。
そもそも元質問>>717の駄目原因、
>session_start();session_regenerate_id(true);では駄目でした。
session_regenerate_id(true);がソースのどこにあるのよ。
0836虚弱PHP
2007/06/07(木) 11:32:02ID:???ID被り&推測可能かが心配なら自前でMD5にするより
session.hash_function = 1
でSHA1にしたらいいんじゃあるまいか。
0837nobodyさん
2007/06/07(木) 12:07:42ID:???0838717 ◆.Ia5JkzwT6
2007/06/07(木) 18:40:54ID:5RXDLZBj>って書いてるんだから、変更に意味があると思ってないでしょう?あなたも。
確かにそうです。
変数の扱い方でも変わったのかな?と思いましたが、公式にも書いて無いですし、例えそうだとしてもエラーメッセージぐらい出てもいいものだ、とお手上げ状態です。
>session_regenerate_id(true);がソースのどこにあるのよ。
後半の処理をsession_start();session_regenerate_id(true);に置き換えても駄目だったと言う事です。
>>836
その設定項目は知っていましたが、パッと見でidの長さが自前で指定したときよりも短かったのでスルーしていました。
しかし、よく見てみるとハッシュ値は16進数なのに対し、PHPが吐くセッションIDはアルファベットを全て使っているようですね。
PHPが自動で吐くIDも、自前で指定したハッシュ値も安全性に大差無い事が解りましたので、このように変えてみました。
〜行数制限に掛かるのでini_set省略〜
ini_set("session.hash_function",1);
session_start();
//セッションが空の状態でregenerate_idするのを防ぐ
if(isset($_SESSION["hogehogehoge"])){
session_regenerate_id(true);
}
else{
$_SESSION["hogehogehoge"]=1;
}
このように変えてみました。
杞憂と早とちりで無駄にスレを消費してしまい、申し訳ありませんでした。
結局、何故テスト環境では空のセッションをregenerateしても大丈夫なのか解らずじまいですが、当面はこれで問題も出なさそうですし、解決したと言う事にして置きます。
アドバイスくれた方々有り難う御座いました。
0839nobodyさん
2007/06/07(木) 21:06:49ID:4r7P9twqPHPの作成は今回が初めてです。
昨日まで順調に進んでいたのに、あるところで詰まってしまい、現在困っているので、是非アドバイスお願いいたします。
例として・・・。
1ページ目に「A」を選択し
2ページ目に「b」を選択、
3ページ目に「任意の日付を選択」を選択し、プルダウン方式(××年××月××日 ←バツをプルダウン式))で日付を選びます。
4ぺージ目には「A-b-20070607.jpg」という感じに組み合わせた画像を表示したいです。
(組み合わせた画像はすでに友人が作成してあります)
とりあえず、3ページ目の「今日」で「A-b-20070607.jpg」と表示できるのですが、
「任意の日付を選択」では、その3ページ目のデーターしか値を渡すことができません。「--20070607.jpg」となってしまいます。
作り方は・・・
1ページ目
<a href="page2.php?q1=A">A</a>
2ページ目(page2.php)
<?php
echo "<a href=\"page3.php\"?q1=".$_GET['q1']."&q2=a>a</a>";
?>
3ページ目(今日)
<?php
echo "<a href=page4.php?q1=".$_GET['q1']."&q2=".$_GET['q2']."&q4=" $now_date = date("Ymd").">1:今日<br></a>";
?>
3ページ目の「任意の日付を選択」の作り方を教えてください・・・。
よろしくお願いします。。。
0840839
2007/06/07(木) 21:14:18ID:4r7P9twq任意の書き方としては・・・
//GETフォーム
echo("
<form action=\"testf_3.php=".$_GET['q1']."&q2=".$_GET['q2']."\" method=\"GET\">
<select name=\"year\" >
<option value=\"2006\">2006</option>
<option value=\"2007\">2007</option>
</select>
年
<br>
<select name=\"month\" >
<option value=\"01\">01</option>
<option value=\"02\">02</option>
・
<option value=\"11\">11</option>
<option value=\"12\">12</option>
</select>
月
<br>
<select name=\"day\" >
<option value=\"01\">01</option>
<option value=\"02\">02</option>
・
</select>
日
<br>
<input type=submit value=確定 >
</form>
");
0843nobodyさん
2007/06/07(木) 21:34:48ID:4r7P9twqform使用してるんだけど無理なんです。
>>842
hiddenかぁ、ちょっと調べてきます。
略している部分があるけど、書き方はこれであってる?
0844nobodyさん
2007/06/07(木) 21:40:55ID:???0845nobodyさん
2007/06/07(木) 21:43:55ID:???任意の日付の選択の作り方なのかHTMLフォームの文法チェックしてほしいのか
はっきりしろよ。
何がわからなくて何を教えてほしいのかはっきりしない質問はクズ質問だ
0847nobodyさん
2007/06/07(木) 21:54:01ID:4r7P9twq任意の日付の作り方を教えてほしいです
0849nobodyさん
2007/06/07(木) 22:01:56ID:???>>840の記述をして、
次のページに移動しても
$_GET['q1']と.$_GET['q2'].の値を受け取ることができません。
<form action=\"testf_3.php=".$_GET['q1']."&q2=".$_GET['q2']."\" method=\"GET\">
↑
この文法であっているのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています