【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カテゴリ)の各スレで
0715nobodyさん
2007/06/05(火) 20:51:11ID:6blsZ/zSすごい すごい!
こんなに素速く返事があるなんて!
あまりに初歩的すぎて、皆さんから怒られるかと思いましたが、
適切なご教示を頂きありがとうございました。
マニュアルとか解説系HPでも分からなかったのですが、
isset ってのも見かけては居たのですが、その変数が宣言されて
いるかどうかを調べる関数に違いないと即断していました。
いろいろあるんですね。
ありがとうございました m(..)m
0716nobodyさん
2007/06/05(火) 20:51:41ID:???> サーバによって上手くいく場合もあるのですが何を調べるべきなのかもわからない状態です。
とりあえず上手くいくサーバといかないサーバのGDのバージョンをリストアップしてみれば
0717nobodyさん
2007/06/05(火) 21:07:48ID:EQxq7rXderror_reporting(E_ALL);
if(isset($_COOKIE["hoge"])){
ini_set("session.gc_maxlifetime",14*86400);
ini_set("session.cookie_path","/hogehoge/");
ini_set("session.cookie_lifetime",14*86400);
ini_set("session.save_path","./hogehogehoge/");
ini_set("session.use_only_cookies",1);
session_start();
$sestmp=$_SESSION;
session_destroy();
session_id(md5(uniqid(rand(),true)));
session_start();
$_SESSION=$sestmp;
}
//以降省略
上記のコードですが、テスト環境(Windows+AN HTTPD+PHP5.2.1)では問題は無いのですが、レンサバ(Linux+Apache1.3+PHP5.1.6)で動かした所、特にエラーメッセージ等も無いのにセッションファイルがカラッポ(0バイト)になってしまいます。
単にsession_start();とした場合は期待通りに動作するのですが、session_start();session_regenerate_id(true);では駄目でした。
ローカルではいずれも意図した通りに動作するのに、何故レンサバでは動かないのでしょうか?
また解決するにはどうすれば良いのでしょうか?
0718nobodyさん
2007/06/05(火) 21:09:00ID:???アルゴリズムが難解すぎて…
具体的にどうやればいいですか?
>>688
最初はそれ使ってましたが
巨大になると挙動がおかしくなるんです
// ここまではok
echo base_convert('fffffffffffff',16,16);
// ここからng
echo base_convert('ffffffffffffff',16,16);
0719nobodyさん
2007/06/05(火) 21:28:52ID:???0720nobodyさん
2007/06/05(火) 21:30:26ID:???環境依存すぎ。
そういうことするまえに、
なにもせずに
session_start();で
var_dump($_SESSION);
が可能かどうかをしめすべきだ。
0721717
2007/06/05(火) 21:42:20ID:EQxq7rXdローカル、レンサバ共にarray(0) { }でした
環境依存と言いますと、どこかに汎用性の無い関数でも使っていましたか?
session.cookie_path等は前述のように単にsession_startした場合は大丈夫でしたので問題は無いと思います。
0722nobodyさん
2007/06/05(火) 22:09:27ID:???>アルゴリズムが難解すぎて…
ふむ、どの辺まで考えたの?
>巨大になると挙動がおかしくなるんです
まぁその理由はマニュアルに書いてあるけどね。
0724nobodyさん
2007/06/05(火) 22:21:26ID:???ココだけ見ると COOKIEが無いときは永久に通らないという罠
一行づつデバグしろよ
あと、/hogehoge/のパーミッションエラーとかはマジ勘弁
0725nobodyさん
2007/06/05(火) 22:23:44ID:???function bc_base_n2ten($num, $n) {
$len = strlen($num);
$result = ??
for ($i=0; $i<$len; $i++) {
$result = bcadd($result,
bcmul(base_convert($num[$i], $n, 10), bcpow($n, $len - $i - 1)));
}
return $result;
}
function bc_base_ten2n($num, $n) {
$len = strlen($num);
$result = ??
for ($i=0; $i<$len; $i++) {
$surplus = bcmod($num, $n);
$num = bcdiv(bcsub($num, $surplus), $n);
$result .= base_convert($surplus, 10, $n);
}
return preg_replace("/^0+/", ??, strrev($result));
}
function bc_base_convert($num, $n, $m) {
$num = bc_base_n2ten($num, $n);
return bc_base_ten2n($num, $m);
}
PEAR探さばこういうのあるかもしれないけどシラネ
息抜きに作ってみたからちゃんと動作するかもシラネ
0726nobodyさん
2007/06/05(火) 22:26:03ID:?????は上から
'0'
''
''
0727717 ◆.Ia5JkzwT6
2007/06/05(火) 22:26:49ID:EQxq7rXdレス有り難う御座います
一行ずつ試してみたいと思います
パーミッションはミスってたらエラーメッセージが表示されますし、session_start()のみだと正常に動作するのでそれは無いと思います
早いですが、今日はもう寝るのでトリップつけておきます
0728nobodyさん
2007/06/05(火) 22:41:18ID:???0729nobodyさん
2007/06/05(火) 22:58:16ID:???$hoge = array();
書かずにいきなり
$hoge[] = 'fuga';
って書くの行儀悪い?
0733nobodyさん
2007/06/05(火) 23:35:20ID:???0734nobodyさん
2007/06/06(水) 00:11:14ID:???他人のソースを見るときでもそれを前提に読むからな
どっちでもいいと思うよ
おれは宣言してから使うけど
0735nobodyさん
2007/06/06(水) 00:23:36ID:???forとかifとかの中で
$hoge[] = 'fuga';
するなら、必ず
$hoge = array();
しておく。
0736nobodyさん
2007/06/06(水) 00:27:49ID:???たぶんDBのFetchループあたりのことだと思うけど、
そういうのわざわざ変数名変えたりしないから
初期化してないってのは怖いね。
0737nobodyさん
2007/06/06(水) 00:48:44ID:???別にPHPがそうとかいう話じゃなくて、プログラミング言語の発展としてさ。
いちいちプログラマの判断で変数宣言を書き込んで管理しなきゃならないなんて、前時代の遺産となるべきものじゃないかしら
0738nobodyさん
2007/06/06(水) 00:52:31ID:???新しく使うのか、どこかから結果を引き継いでいるのかが分からないから
可読性のために俺は書く
0739nobodyさん
2007/06/06(水) 00:54:27ID:???echo $str[1]
---
o
こんな感じに、配列のように文字列から文字を切り出せるって
今日はじめて知ったんだがおまえら知ってましたか?
これ一般常識なの?
0741nobodyさん
2007/06/06(水) 01:21:46ID:???0742nobodyさん
2007/06/06(水) 01:28:32ID:???0748nobodyさん
2007/06/06(水) 01:44:10ID:???変数のスコープを自在にあやつれるほうが高級、というか混乱しなくて良い
んなわけで初期化というか変数宣言(Perlだとmyとかlocalとかな)がないと困るZE☆
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は十分に信頼できるランダム性を持ってるぞ。
■ このスレッドは過去ログ倉庫に格納されています