【PHP】下らねぇ質問はここに書き込みやがれ 31
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/10/25(水) 08:45:46ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
【前スレ】
【PHP】下らねぇ質問はここに書き込みやがれ 30
http://pc8.2ch.net/test/read.cgi/php/1159979905/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しない)
・ サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0684nobodyさん
2006/11/02(木) 15:07:14ID:???foreach($boo as $boo_arr) {
if($data_arr == $boo_arr) {
$log[] = $data_arr;
}
}
}
0686nobodyさん
2006/11/02(木) 15:27:55ID:???二回目のforeachのifの中の最後にbreak;しないと同じ値のデータが大量にできちゃうんじゃまいか?
どういう結果を求めてるか知らんけどな。
0687nobodyさん
2006/11/02(木) 15:28:32ID:???期待どおりの動きをしてくれません。。。
$dataに(1,2,3,4,5...12)
$booに(1,2,5,12)
が入っていた時
$logに(1,2,5,12)の配列を入れたいのですがなぜか12が入っていなかったりします。
あと684で間違いがありました。
正しくは
if($data_arr[num] == $boo_arr) {
$log[] = $data_arr;
}
です
0689nobodyさん
2006/11/02(木) 15:34:05ID:???そのnumってどっから出てきたの。
$data = array(1,2,3,4,5,6,7,8,9,10,11,12);
$boo = array(1,2,5,12);
foreach($data as $data_arr) {
foreach($boo as $boo_arr) {
if($data_arr == $boo_arr) {
$log[] = $data_arr;
}
}
}
var_dump($log);
結果:
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(5)
[3]=>
int(12)
}
0690687
2006/11/02(木) 15:39:12ID:???$dataは
ARRAY{
[0] ARRAY{
[num] = 1
[name]= satou
}
[1] ARRAY{.....}
と多重連想配列(?)になっています
0691nobodyさん
2006/11/02(木) 15:46:16ID:???実際にうまくいかないデータを出さないと多分分からん。
プログラム側じゃなくデータ側に問題あるんじゃないの?
0692nobodyさん
2006/11/02(木) 15:49:46ID:???> 正しくは
> if($data_arr[num] == $boo_arr) {
だったら多分
> $log[] = $data_arr;
は
$log[] = $data_arr['num'];
だろう
0693nobodyさん
2006/11/02(木) 16:00:42ID:???<?php
$updir = "./upload/";
$filename = $_FILES['upfile']['name'];
if (move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename) == FALSE){
print("Upload failed...");
print($_FILES['upfile']['error']);
}else {
print("<b>" . $filename . "</b> uploaded!");
}
?>
</body>
</html>
-------------------------------------------------
基礎PHPという本でアップローダー作ってるんですが、
上記のプログラムだと画像しかアップロードできず、
動画はアップロード出来ません。どこが問題でしょうか?
0694nobodyさん
2006/11/02(木) 16:04:08ID:???プログラム的には問題は見受けられない。
1.ファイルサイズがアップロード可能な上限を超えている
2.確認方法が間違っている
のどっちかじゃない?
0695nobodyさん
2006/11/02(木) 16:15:12ID:???本のサンプルファイルをそのまま弄らずに使って確認してみたんですが、
画像だけアップロード指定先のフォルダにコピーされ、
動画だとアップロードのボタンを押したあと、永遠に何か処理しているような
感じでメーターだけ動くんですが、アップロード完了の画面が出たあと、
アップロード指定先のフォルダには何にも表示されないんです。
(指定先は画像と同じです。)
0698nobodyさん
2006/11/02(木) 16:44:42ID:???その設定、弄ってみます。
0699nobodyさん
2006/11/02(木) 17:51:17ID:???ついでに、post_max_size =も2Mから100Mにして、Apacheを再起動させてみたのですが、
-----------------
file uploader
Upload failed...1
------------------
のまま変化しません。4MBほどの軽い動画をいくつかやってみたんですが。
(先ほどメーターだけ動くと書きましたが勘違いで、何も表示されませんでした。)
画像などでは
-----------------
file uploader
abc.jpg uploaded!
-----------------
だと表示されて成功するんです。orz
0700nobodyさん
2006/11/02(木) 17:59:59ID:???php.iniちゃんと読み込まれてるか?phpinfoとかで確認した?
0701nobodyさん
2006/11/02(木) 18:01:14ID:???memory_limit > post_max_size > upload_max_filesize
それぞれの設定の意味はマニュアルを読んでもらうとして、memory_limitはどうなってる?
0702nobodyさん
2006/11/02(木) 18:12:25ID:???post_max_size 8M 8M
upload_max_filesize 2M 2M
のままでした。
>>701
memory_limitは8MBでしたので、
今100Mにして再起動したんですが、症状変わりませんでした。
phpinfoで表示されている通り
「Configuration File (php.ini) Path C:\WINDOWS」にあるphp.iniなんですが、
なぜ、反映されてないんでしょうか?
0703nobodyさん
2006/11/02(木) 18:25:37ID:???ってやばいですか?
できればデストロイせず、初期化したいのですが…
0704nobodyさん
2006/11/02(木) 19:26:28ID:y5JIMR69FTPソフトでWindowsにDLして解凍するとアイコンがおかしくなってます。
htmファイルなんてアイコンが無いです・・・。
普通に開く事は出来るのですが何か気持ち悪くて・・( ´Д`)
どなたか原因・対処方法をご存知の方、よろしくお願い致します。
0705nobodyさん
2006/11/02(木) 20:47:40ID:???0706nobodyさん
2006/11/02(木) 20:50:18ID:???0707nobodyさん
2006/11/02(木) 20:56:42ID:py7iJRLuConfiguration File (php.ini) Path のディレクトリが合ってるか確認、
そしてapacheの再起動、
それでも反映されないバグっぽいです。orz
0708nobodyさん
2006/11/02(木) 21:18:00ID:???おかしいとすぐバグとかいう人は、向いてないよ。
0709nobodyさん
2006/11/02(木) 21:22:13ID:py7iJRLuもうどうしようも・・・^^;
「php.ini 反映」でググっても、同じ症状の人、いっぱいいますし。
0710nobodyさん
2006/11/02(木) 21:45:58ID:???0716nobodyさん
2006/11/02(木) 22:59:07ID:???はい、次の質問どうぞ
0717nobodyさん
2006/11/02(木) 23:17:55ID:???1行1セルの形で入れたいと思ってます
4行ずつ処理していけばいいと思うのですがどう書けばいいか分かりません
エスパーたんお願いします
0720nobodyさん
2006/11/02(木) 23:51:12ID:???0722nobodyさん
2006/11/03(金) 00:06:53ID:???http://pc8.2ch.net/test/read.cgi/php/1159979905/809-811
> 811 名前:nobodyさん[sage] 投稿日:2006/10/22(日) 05:16:39 ID:???
> 何列目で折り返すのかが決まっているのなら
> 余りの数で折り返すのが良いと思います。
>
> 例の場合なら3列なのでレコード数を3で割って余りが0のときに</tr><tr>を入れる。
> あとは例外処理だけ
0724nobodyさん
2006/11/03(金) 01:34:47ID:ttso8WIJ同一上のディレクトリですとうまくいくのですが、
階層の違うディレクトリのファイル名が取得できません。
あるディレクトリ上にfileディレクトリとindex.phpがあります。
index.phpにfileディレクトリに保存されたファイル名を取得して一覧表示させたいと思います。
どなたがアドバイスお願いいたします。
PHPは5.1.6と4.4.4の両者で確認しております。
#index.phpの中身
$dir = opendir("./file/");//
#$dir = opendir("./");//←これは正常に動きました。
//readdirでファイル名を取得する正しい書き方
while(false !== ($file = readdir($dir))) {
if(is_file("./$file")) {
echo "$file<br>\n";
}
}
/* の間違った書き方
while(false !== ($file = readdir($dir))) {
if(is_file("./$file")) {
echo "$file<br>\n";
}
}
*/
//ディレクトリを閉じる
closedir($dir);
0725724
2006/11/03(金) 01:37:46ID:???#index.phpの中身
$dir = opendir("./file/");//
#$dir = opendir("./");//←これは正常に動きました。
while(false !== ($file = readdir($dir))) {
if(is_file("./$file")) {
echo "$file<br>\n";
}
0726nobodyさん
2006/11/03(金) 01:39:33ID:???たいへん恐縮ですがご教授お願いいたします。
#index.phpの中身
$dir = opendir("./file/");//
#$dir = opendir("./");//←これは正常に動きました。
while(false !== ($file = readdir($dir))) {
if(is_file("./$file")) {
echo "$file<br>\n";
}
}
0727nobodyさん
2006/11/03(金) 02:11:17ID:???> 階層の違うディレクトリのファイル名が取得できません。
取得はできてると思うんだがis_file()でこけてるんだろう。
(readdir()で得られるファイル名はディレクトリを含んでいないため
違うディレクトリならディレクトリ名を連結しないと該当ファイルが見つからない)
こういった原因を切り分けるため、
1.途中でデバッグ出力を入れる
2.余計な機能を省きシンプルなもので確認する
というデバッグ手法を覚えた方がいい。
0728726
2006/11/03(金) 02:39:50ID:???よくわかりませんが、opendirに変数を格納したら動きません。
直接opendir("./file")と書いてやったら動きました。
なんででしょう?
とりあえず事故解決しました。
0729nobodyさん
2006/11/03(金) 03:10:22ID:???0730nobodyさん
2006/11/03(金) 03:45:28ID:???> 直接opendir("./file")と書いてやったら動きました。
意味が分からんのだが、それは>>726の
> $dir = opendir("./file/");//
と何か違うのか?
0731nobodyさん
2006/11/03(金) 08:38:09ID:DVjQnElN見かけますが儲かってますか?
0732nobodyさん
2006/11/03(金) 08:55:09ID:???0733nobodyさん
2006/11/03(金) 08:58:55ID:???朝のコミュニティーションな会話は置いといて・・・
ソースに
function 関数(){}
で定義する前に
関数();
を記述してもいいのでしょうか?
はやり定義した後に記述するものなんでしょうか?
一応、どちらも動くことは動くのですが正しい記述としてはどちらが
いいのか困惑しております。
アドバイスお願いいたします。
0734nobodyさん
2006/11/03(金) 09:02:01ID:8kaP0u+90736nobodyさん
2006/11/03(金) 09:09:48ID:???定義を後ろに書くことにしました。
自分はまだまだ勉強不足ですね。
>>735さんみたいな回答者になりたいです。
0737nobodyさん
2006/11/03(金) 09:11:33ID:???0738nobodyさん
2006/11/03(金) 09:24:44ID:???0739nobodyさん
2006/11/03(金) 09:48:25ID:???Fatal error: Cannot redeclare dir()
とういエラーがでたのですが、これは何を意味しているのでしょうか?
また、こういうエラーの一覧表はマニュアルに載ってないのですが
どこかに参考となるサイトはございませんか?
0740nobodyさん
2006/11/03(金) 10:02:23ID:???0741nobodyさん
2006/11/03(金) 10:07:49ID:???多分こんなエラーだろう
Fatal error: Cannot redeclare dir() (previously declared in hoge.php:10) in hage.php on line 10
致命的なエラー:hage.phpの10行目でdir()が二重に定義されました。
dir()はhoge.phpの10行目で既に定義されています。
何がいけなかったのかはエラーにちゃんと書いてあるし、行数まで表示されてる。
>どこかに参考となるサイトは
エラー文でググれば解決方法が見付かると思われ
0742739
2006/11/03(金) 10:20:40ID:8kaP0u+9Fatal error: Cannot redeclare dir() in 絶対パスon line 105
dir()
function dir(){
}←この行でエラーがでてしまいます。
ためしに}を改行して下にずらしても
}のところでエラーになります
dir()は二重に定義しておりません。
dirをdiraと名前を変えて定義してやると問題なく動きます。
dir()とやるとダメなので何か予約語とかなんやらのPHPの決まりなのでしょうか?
0743739
2006/11/03(金) 10:31:40ID:???環境によるものなのでしょうか。
<?php
dir();
function dir(){
echo "test";
}
?>
0744nobodyさん
2006/11/03(金) 10:36:00ID:???http://php.new21.com/manual/ja/class.dir.php
0745nobodyさん
2006/11/03(金) 10:36:07ID:???dir()って関数名は予約されてるのでユーザが定義できない。
ttp://www.php.net/manual/ja/index.functions.php <関数一覧にdir()が存在してる
0746743
2006/11/03(金) 10:44:49ID:???ありがとうございます。
私事でありますが・・
「素人だけどバグみつけちまったぜ」
「おれって天才?」
って喜んでました。修行不足ですね・・・失礼いたしました。
il||li_| ̄|○ il||li
0747nobodyさん
2006/11/03(金) 10:45:15ID:uip4CKwg0748nobodyさん
2006/11/03(金) 10:49:45ID:???0749nobodyさん
2006/11/03(金) 10:52:38ID:???referer : 倉 -> 鯖
0750nobodyさん
2006/11/03(金) 11:00:13ID:uip4CKwgheader("Referer: http://example.com");
header("Location: 環境変数一覧が出るようなサイト");
これで駄目なんだよね。試しに出力の順序変えても駄目だった。
>>749
ごめん、くわしくplz
0751nobodyさん
2006/11/03(金) 11:02:18ID:???0752747
2006/11/03(金) 11:04:31ID:uip4CKwgあ、わかった。
てことはやっぱやろうとしてることは出来ないのか。ちぇ。
0753nobodyさん
2006/11/03(金) 11:09:27ID:???私が見つけれるような単純なバグ(の様な物は)既に誰かが発見し修正している筈である。
よって、これは私のミスでありバグではない。
とまぁ、こんな事思いながらやってるなぁ・・
>>751
スレの上で出てたけど、これでPHP5.xがApache2.3.xで使えるように?
(その話題が気になったからググってみたけど、Apache2.0.x→Apache2.2.xはAPIが変更されてるとか何とか)
0754nobodyさん
2006/11/03(金) 11:14:40ID:???5.1.7でphp.iniが見付けられないのはバグだそうです。
修正されているか解りませんが、5.2.0を入れる事をお勧めします。
0755nobodyさん
2006/11/03(金) 11:43:03ID:???0756nobodyさん
2006/11/03(金) 11:43:05ID:???0757nobodyさん
2006/11/03(金) 11:46:43ID:???0759nobodyさん
2006/11/03(金) 12:05:48ID:???0760nobodyさん
2006/11/03(金) 12:29:29ID:8kaP0u+9[c:\]-[public_html]--index.php
|
|-[local]--bbs.log
Cドライブ直下にドキュメントルートpublic_htmlを置きindex.phpを作成しました。
index.phpからドキュメントルート外のbbs.logをfopenで開きたいのですが
$file = file("c:/local/bbs.log","r");
と記述してもエラーがでて取得できません。
パスの書き方はc:/local/bbs.logではなくほかの書き方がございましたら
ご教授お願いいたします。
0761761
2006/11/03(金) 12:40:11ID:???↑のパスの書き方で問題なく動きます。
0762nobodyさん
2006/11/03(金) 12:57:15ID:???function dir_list($dir) {
$dir_list = (ディレクトリ取得);
foreach ($dir_list as $list) {
dir_list($list);
}
}
こういった再帰処理を無名関数で
$dir_list = create_function ('$dir', '$dir_list = (ディレクトリ取得);
foreach ($dir_list as $list) {
$dir_list($list);
}
}');
のように書きたいのですが$dir_listがundefinedというエラーが出てしまいます。
functionを作らずに無名関数のような感じで実現することは出来ませんでしょうか。
0763nobodyさん
2006/11/03(金) 13:02:41ID:???> foreach ($dir_list as $list) {
で使ってる配列と
> $dir_list($list);
生成関数とで同じ変数名がバッティングしてるよ。
0764nobodyさん
2006/11/03(金) 13:06:01ID:???あとさらに付け加えるなら、
$dir_list = create_function()
で作られる$dir_listはグローバル変数な。
create_function ('$dir', '$dir_list = (ディレクトリ取得);
foreach ($dir_list as $list) {
$dir_list($list);
}
}');
とcreate_function内で使われてる$dir_listは関数内のローカル変数な。
そんだけわかりゃ何とかなるんでない?
基本的にはfunction定義で何とかできることはcreate_functionでも何とかできる。
0765nobodyさん
2006/11/03(金) 13:10:17ID:???0766nobodyさん
2006/11/03(金) 13:31:45ID:8kaP0u+9最近perlもやっとかないと時代についていけない気がして・・・
0767nobodyさん
2006/11/03(金) 13:56:23ID:???0768nobodyさん
2006/11/03(金) 14:09:24ID:???セッションID毎にパスワードを設定するのか?
0769nobodyさん
2006/11/03(金) 14:11:06ID:???そんな状態で始めたとしても、PHPもPerl使いこなせず意味がないと思われ
どっちか1つを真面目に勉強するんだ。
>>767
セッションの使い方を聞いているのか?
マニュアル読んで分からない事だけもっかい聞きに来い
0770nobodyさん
2006/11/03(金) 14:18:42ID:???$dir_func = create_function ('$dir', '$dir_list = (ディレクトリ取得);
global $dir_func;
foreach ($dir_list as $list) {
$dir_func($list);
}
}');
こんな感じで期待通りの動作をすることが出来ました。
>>766
WEB用途でPerlに出来てPHPに出来ないこと、またはその逆ってあまり無いと思うけど
tie、thread、OOP関連(多重継承、カプセル化等)で差異を感じることはあったかな。
Perlは古臭いっすよw
0771nobodyさん
2006/11/03(金) 14:29:30ID:9FoSTEPmAのページで認証を通さないとBに進めないということをやりたいのですが、
特に細工しないと、BのURLを直接打ち込むとBが見えてしまいますよね?
今まではSwitchで分けてたのですが、
ソースがごちゃごちゃになるので分離したいと考えています。
どのような処理をしたら、Aからの認証のみでBに行けるようになるのでしょうか?
ヒントだけでもいただけたらありがたいです。
宜しくお願いします。
0772nobodyさん
2006/11/03(金) 14:30:53ID:???643 名前:nobodyさん [] 投稿日:2006/11/03(金) 13:21:11 ID:QUVcMJYR
そもそも、セッションIDがばれたら何が怖いんですか?
どこをどうされてログインされるんですか?
こないだセッションIDというヤツを他人に知られたんですけど、
何をされるんですか?
0773nobodyさん
2006/11/03(金) 15:04:55ID:ObEKEkGi最新のApache2.0系を入れたら、1発で認識してくれました。どうも。
0776nobodyさん
2006/11/03(金) 16:19:03ID:???Aでパス発行すれば?
0777nobodyさん
2006/11/03(金) 16:32:21ID:???0778nobodyさん
2006/11/03(金) 16:42:53ID:8kaP0u+9あまりわけすぎると実行速度の低下や転送量が太ったりしますか?
0779nobodyさん
2006/11/03(金) 16:50:24ID:???誤差の範囲内で実行速度が僅かに低下する。
でも、メンテナンス性の方が遥かに大事。
読み易くメンテナンスしやすいように適度に分けるのは良い心がけだ。
0780nobodyさん
2006/11/03(金) 17:03:01ID:???Windows?
それならPHP5.1がApache2..2に対応してないだけでバグでもなんでもない
どうせなら最新のPHP5.2でも入れて試してみたら
0781nobodyさん
2006/11/03(金) 17:24:05ID:???最近Perl!?
JavaやRubyなら分かるが、今更Perlやってどうすんの。
と、元Perl使いが反応してみるw
PerlはPHPと違って元々はWEB無関係の汎用スクリプト言語だから
できることは確かに色々あるし性能もいいよ。
でも時代についていくために今Perlの勉強ってありえないぞ??
逆に何がしたくてPerl勉強すんのさ、と俺が問いたいw
0782nobodyさん
2006/11/03(金) 17:36:49ID:???が、文法が継ぎ足しで汚い。
0783nobodyさん
2006/11/03(金) 17:37:43ID:???他人が読めないだけだ
■ このスレッドは過去ログ倉庫に格納されています