トップページ⇒php
1001コメント339KB

【PHP】下らねぇ質問はここに書き込みやがれ 25

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/07/23(日) 20:00:03ID:???
PHPに関するくだらねぇ質問用スレです。
ここならお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

過去スレは>>2
0052nobodyさん2006/07/24(月) 15:28:03ID:CYiRB3t9
if(!file_exists("./data/log".$g_number.".cgi")){
if($fp = fopen("./data/log".$g_number.".cgi","w")){
chmod("./data/log".$g_number.".cgi",0666);
fclose($fp);
}

if($fp = fopen("./data/member".$g_number.".cgi","w")){
chmod("./data/member".$g_number.".cgi",0666);
fclose($fp);
}

}

ファイルがなければファイルを作成し、パーミッションを変更するように作ったのですが、
作成されたファイルの属性を見ても0644になっており、パーミッションが変更されていません。
何か記述の仕方が間違っているのでしょうか?
0053nobodyさん2006/07/24(月) 15:29:50ID:2NxzUp1f
smartyでfile=""中に$array.indexを埋め込みたいのですが
どう書けば良いでしょうか?
{include file="aiueo($array.index)kakikukeko"}
こういう感じです。
よろしくお願いします。
0054nobodyさん2006/07/24(月) 15:37:35ID:???
classの使い方(利点)がいまいち分かりません。
マニュアルでは分かりませんでした。
詳しく説明できる方お願いします。
分かりやすいサイトも大歓迎です。
0055軟式PHP2006/07/24(月) 15:49:27ID:???
>>52
ちょっと確認してないので曖昧だけどfcloseしてからchmodやったほうがいいんでない?
あと、chmodの戻り値もTRUEかFALSEかどっちが返ってきてるか見てみて。
0056nobodyさん2006/07/24(月) 15:55:01ID:CYiRB3t9
>>55
その方法で解決しました。
有難うございます。
0057nobodyさん2006/07/24(月) 16:26:14ID:???
>>54
利点がわからなければ、使わなければいい
別にクラスがないとPHPでスクリプトをかけないわけじゃないし
0058532006/07/24(月) 16:38:35ID:2NxzUp1f
自己解決しました。
0059nobodyさん2006/07/24(月) 17:15:06ID:???
PCのログイン状況をブラウザで確認できるようなプログラム組みたいのですが・・

ブラウザ上ということでjavascriptかなとは思っているのですが、javasは使ったことがないので
pingに相当する関数など用意されているのかどうか分かりません('A')

ご教授お願いします



0060172006/07/24(月) 17:17:02ID:Mn5lSOKP
>20,24
レスありがとうございます。
これといった慣習はないのですね。

>33,41
UTF-8 か EUC-JP で。
UTF-8 は preg_* でマルチバイト文字を扱えるのが便利です。

>54
クラスで同じ処理を使い回しすると、コードが短くなります。
0061nobodyさん2006/07/24(月) 17:23:41ID:???
教授〜、出番ですよ〜。
ご教示お願いします。
0062nobodyさん2006/07/24(月) 18:24:12ID:???
>>59
JavaScriptは板違いです。
0063nobodyさん2006/07/24(月) 18:40:27ID:???
>>59
PCのログイン状況とpingというコマンドがいまいち結びつかない
ネットにつながっているマシンを一覧で見たいのか?
0064512006/07/24(月) 18:48:22ID:???
自己レスです。。。

session_destroy();を@session_destroy();にしたら出なくなりました。。。
理由が解りませんorz
0065(^ω^)2006/07/24(月) 19:07:11ID:???
@はエラーを抑制する演算子だから当然
0066(^ω^)2006/07/24(月) 19:16:43ID:???
途切れた…


ttp://jp2.php.net/manual/ja/function.session-destroy.php
予想 HTTPヘッダが送信し終わっている
0067642006/07/24(月) 22:52:50ID:???
>@はエラーを抑制する演算子だから当然
関数を明示してるのかと勘違いしていましたorz

>予想 HTTPヘッダが送信し終わっている
session_startより後、session_destroyより前に、
session_regenerate_id関数でセッションIDを更新していた
のが悪かったようです。。cookieを扱うためと予想。。

セッションID更新は破棄しないときのみ行うように
しないとダメということですね。。もしくはob_startかな。。

ありがとうございました。
0068nobodyさん2006/07/25(火) 00:19:02ID:???
携帯ってrefererありますか?
0069nobodyさん2006/07/25(火) 00:55:18ID:???
あったりなかったり
0070nobodyさん2006/07/25(火) 00:59:19ID:???
>>68
もちろんだよマイハニー。
0071nobodyさん2006/07/25(火) 04:55:26ID:???
>>68
キャリアによる
0072nobodyさん2006/07/25(火) 04:57:52ID:???
>>59
PCのログイン状況って何を指してるんだろ。
自分のサイトのページにアクセスしてる人、とはまた違う?
ひょっとして会社のフロア内でユーザがログインしてるPCの台数が知りたい、とか…?
0073nobodyさん2006/07/25(火) 05:32:01ID:???
>>29
遅くなりましたが真摯に受け止めて頂き幸いです。読み返すとかなり上から口調で申し訳ない。
リア厨がよくも分からないのに叩いているものかと思っておりました。。
俺が指した「セキュリティうんぬん」はSQLインジェクション程度の事です。
ブラウザが落ちるほどの無限ループは予想してなかったですね。

ところで差し支えなければ上級者はどんなプログラム作っているのか教えてください。
俺は送信フォームやらが殆どです。orz
0074nobodyさん2006/07/25(火) 06:44:57ID:???
上級者はPHPなんて使わない
仕事でそういう案件があるから仕方なく使ってるだけ。作るの簡単だしね
どんなの作ってるか見たいならphpの拡張子で検索すればいいやん
0075nobodyさん2006/07/25(火) 07:17:06ID:???
>>74
そうかねぇ。使用言語とスキルはそこまで関係ないと思うけど。
確かに Visual Basic だけしか使えないエンジニアってのは嫌だけど
PHP 使ってる人って、PHP だけしか使えない人ってあまりいないような。
Java や Ruby に比べてって言いたいのは分かるけど
米 Yahoo! が PHP を採用したのもそれなりに理由があるんだし
PHP 使いに上級者はいないってのは、ちょっと言い過ぎかと。
0076nobodyさん2006/07/25(火) 07:53:37ID:???
>>73
俺はコミュニケーションサイト一式かな。
(会員登録、ユーザ間メール、掲示板、携帯からの写メ登録、アフィリエイト処理、各種管理機能、月間集計処理)
0077nobodyさん2006/07/25(火) 08:50:45ID:???
>>48
試しに$dataをそのまま保存してバイナリエディタで見てみれば?
もしくは頭200バイトくらいを1文字単位にord()して出力してみるとか。
いっそ"\r\n\r\n"でなく"\n\n"にして実験してみるとか。
0078nobodyさん2006/07/25(火) 08:55:28ID:???
>>45
それ、internal_encodingの指定をしてないだけじゃ。
0079軟式PHP2006/07/25(火) 09:36:47ID:???
>>78
あれ、そうなん?
mbstring.internal_encoding = SJIS
でもエラーが出るんだが・・・。もし間違いだったらスマソ。
0080軟式PHP2006/07/25(火) 09:59:11ID:???
>>73
某大手通信会社イントラ向けポータルサイト、中規模ECサイト、携帯向けMORPG、出会い系など。
全部PHP。たまにOracle ASやTomcatが最初から鯖に入ってて既存のコンテンツがあり、PHPを新規で入れるのを嫌がられる場合にJavaを使う場合はある。
Perlは本当減ってきた。自作ライブラリもとっくにPerlよりPHPのほうが多くなってしまった。
0081nobodyさん2006/07/25(火) 11:11:30ID:???
PHPを使った会員サイトとかで、フリーメールでの登録を禁止する場合、みんなはどうやってますか?
自分でhotmailだの何だのというフリーアドレスのドメインを
列挙して配列か何かに組み込んでおいて使うのもいいけど、
それだと無数にあるフリーメール・サービスを全部調べて列挙するのって大変だよね。

どっかにフリーメール・サービスのドメイン一覧リストとか落ちてないかな?
0082nobodyさん2006/07/25(火) 11:12:14ID:???
チャットで、現在のメンバーが表示されていますけど、
これはどうやって確認しているのでしょうか?
0083nobodyさん2006/07/25(火) 11:12:54ID:???
>>78>>79
あとmbstring.script_encodingも必要
0084nobodyさん2006/07/25(火) 11:15:09ID:???
>>81
そんな便利なリストがひょっとしたらどっかにあるのかもしれないけど
とりあえず知らないのでドメインデータを自前で登録してる。
0085nobodyさん2006/07/25(火) 11:16:48ID:???
>>82
チャット自体の仕組み次第
0086nobodyさん2006/07/25(火) 11:31:13ID:???
こういうサイトで使われているチャットです
ttp://www13.big.or.jp/~fubuki/
0087nobodyさん2006/07/25(火) 11:58:42ID:???
>>84
やっぱそうか・・・。
フリーメール(特にhotmail)を使ってるヤツってのは、たいてい
「コンピュータに疎い超ド素人」か、
「イタズラや誹謗中傷、その他いろんな悪事を働くキモヲタ」か、
どちらかであることが多い。だから排除したい。
0088nobodyさん2006/07/25(火) 12:23:12ID:E5TbsTHe
人の書いたソース見て勉強中なのですが、関数の定義のところで
function &hoge($id){
…
}

とかあるんです。変数の参照渡しで&を使うのは知ってるんですが、
関数で&をつかうというのは一体?
ttp://www.php.net/manual/ja/language.functions.php
ここみても関数名の前に&を付けるようなことは何も書いてませんし…。
どういう時に使うのか、&つけると何が便利なのか、どこか載ってる
サイトなどありましたら教えてください。
0089nobodyさん2006/07/25(火) 12:24:48ID:???
>>88
こっちに書いてあるよ
http://www.php.net/manual/ja/functions.returning-values.php
0090882006/07/25(火) 12:29:04ID:???
>>89
うおおはえええ!ありがとうございます!
リ・・・リファレンス・・・なんじゃそら・・・
じっくり読んで勉強してきます!本当に助かりました!
0091nobodyさん2006/07/25(火) 12:31:21ID:???
参照渡しを知っててリファレンスを知らないって一体…
0092882006/07/25(火) 12:57:01ID:???
変数の参照渡しは納得できるんすよ。
$a = &$b
$aも$bも同じものをみにいってるのねー、これは分かる。
でも関数で参照・・??
もしやこういうことだろうか。
function &fuga($nya){
$nya++;
return $nya;
}
$wan = fuga($a);

これと、

function fuga($nya){
$nya++;
return $nya;
}
$b = fuga($a);
$wan = &$b;

これは同じことだよみたいな感じ?
こんな程度で給料もらってほんとすいません...
0093nobodyさん2006/07/25(火) 13:10:12ID:???
>>87
おまえメッセンジャー使ってないの?
0094nobodyさん2006/07/25(火) 13:11:56ID:???
87じゃないが、メッセンジャーなんて何に使うの?
PCいじりたての初心者が遊ぶためのものかと思っていた。
0095nobodyさん2006/07/25(火) 13:25:52ID:???
>87じゃないが、メッセンジャーなんて何に使うの?
メッセンジャーだからメッセージをやりとりするのに使うに決まってる。

>PCいじりたての初心者が遊ぶためのものかと思っていた。
素直に便利だと思う人が使う。
0096軟式PHP2006/07/25(火) 13:31:28ID:???
>>83
情報サンクス。
ちょっとやってみたんだが、PHP4.3.2で設定してもscript_encodingが
phpinfoにすら反映されてないようで、うまく動かなかった。
原因を探るのも面倒なのでこの辺でやめとくよー。
色々検索してみたら動きそうな感じではあった。
0097nobodyさん2006/07/25(火) 13:45:36ID:???
自宅で仕事する時とか打ち合わせでメッセンジャー使ってるよ。
0098nobodyさん2006/07/25(火) 13:46:38ID:???
>>87
マジきもい

>だから排除したい。
お前の基準だと、全排除で登録サイトとかサービス立ち上げる必要なくね?
0099nobodyさん2006/07/25(火) 13:50:16ID:???
>>87,94
みたいのをなんちゃって玄人って言うんでしょ
0100nobodyさん2006/07/25(火) 13:57:24ID:???
>>76 >>80
これは下請けですか?それともガッポリ儲けちゃってるんですかね?
どっちにしろボリュームが多いのは精神的にきますね、、

>>94
会社によればメッセ使用する所もありますよ。最近ではSkypeなんかも。
0101nobodyさん2006/07/25(火) 14:02:01ID:???
ファイルのアップロードについて質問なんですが、
スクリプト終了と同時にファイルは削除されてしまうと考えてもいいんでしょうか?
if (is_uploaded_file($_FILES['test']['tmp_name'])) {
print_r($_FILES);
}
else {
echo "error\n";
}
で、表示された$_FILES['test']['tmp_name']の値は[tmp_name] => /tmp/phpHmZfdd

上記のスクリプトを実行して確認してみたところ/tmp/phpHmZfddは存在しませんでした。
0102軟式PHP2006/07/25(火) 14:10:03ID:???
>>97
簡単なやり取りは俺もメッセンジャー経由だなぁ。

>>100
大きな案件は、大抵代理店通るからガッポリまではいかない。
ただうちは恵まれてるほうだから2次受けになる事が多いためそこそこ儲かる。
3次、4次受けとかなると連絡網がゴチャゴチャしてきて儲からないだけではなく仕事もやりづらくなる。
0103nobodyさん2006/07/25(火) 14:21:09ID:???
>>102
俺はバイトなんで詳しくは分からないが俺んとこは恐らくその3次受けしてた。
金もあまり入らずデザインの業者に散々振り回された。しかもデザインの業者が優先だってさ。
0104nobodyさん2006/07/25(火) 14:21:22ID:???
1次とか2次とか下請けではなく自社サービス これ最強
ガッポリ儲けて融通も利きまくり

リスク高いけどな
0105762006/07/25(火) 14:46:55ID:???
>>100
うちは自社開発ですよ。結構儲かってるらしいよ。正確な額は知らんけどさw
>>94
うちも簡単な打ち合わせや連絡ではメッセンジャー使ってる。
同じ会社の部署と言ってもビル離れてたりするし。
記録性で電話以上メール以下、即時性でメール以上電話以下の場合、だね。
>>96
script_encodingってConfigureで多言語対応の指定してコンパイルしないとダメじゃなかったっけ?
0106872006/07/25(火) 15:52:30ID:???
>>93 なぜいきなりメッセンジャーの話? フリーメールと関係ある?

>>98 とりあえずお前みたいなキモヲタの排除から始めたい。

>>99 じゃあどうしたら「なんちゃって」じゃなくなるのか、具体的に説明よろしく。
0107542006/07/25(火) 15:56:17ID:jWaJnsY8
レスありがとうございます。

>分からないならつかわなければいい
ごもっともなんですが、引継ぎでいじらなくてはならないんです。
私みたいなマルデダメオですが、ご指導お願い致します。
0108nobodyさん2006/07/25(火) 15:58:21ID:???
>>86
そんなにメッセンジャーがダメダメいうなら
貴方が作ったメッセンジャー以上のツールうpしてください><

どうせ電卓くらいしか作れないんでしょうけど
0109nobodyさん2006/07/25(火) 16:08:16ID:???
>>106
>>93 なぜいきなりメッセンジャーの話? フリーメールと関係ある?
ってあるけど>>87で特にhotmail使ってる奴はうんぬんかんぬんと言ったからじゃないの?
メッセ使用のほとんどはhotmail使ってるでしょ。たまに違うの見かけるけど。
なのであなたはメッセ使ってる人間をキモヲタ呼ばわりしたと解釈されてるんじゃないかなと。
0110nobodyさん2006/07/25(火) 16:19:45ID:???
初心者ですみませんが、リファレンス読んでも進まない状況です
フォーム認証後に条件処理で、"正"ならグーグルサイト、"負"なら2chにページを飛ばしたいのですが
fopenは「URLを開ける」と説明されていますが、実行してもページは真っ白のままです
どのような関数、スクリプトをチョイスすればいいのでしょうか?

// 認証後の処理
if($userExists[0] ==1){
fopen('http://www.google.co.jp','rb');
}
else{
fopen('http://2ch.net','rb');
}
0111872006/07/25(火) 16:27:48ID:???
>>110
市ね
switch($userExists[0]) {
 case 1:
  header('Location: http://www.google.co.jp');
  break;
 default :
  header('Location: http://2ch.net');
}
0112軟式PHP2006/07/25(火) 16:33:20ID:???
まぁ、headerでlocation送ったら普通はexitするがな。
0113872006/07/25(火) 16:36:46ID:???
>>112
おめえさんの「普通」なんか聞いてないから
正しいアルゴリズムで書いてりゃ問題ない
0114nobodyさん2006/07/25(火) 16:39:51ID:???
何この>>87の豹変ぶり('A`)
01151102006/07/25(火) 16:41:48ID:???
>>111
ありがとう(感涙
愛しています
0116軟式PHP2006/07/25(火) 16:42:11ID:???
>>113
<?php
switch($userExists[0]) {
case 1:
header('Location: http://www.google.co.jp');
break;
default :
header('Location: http://2ch.net');
}

header('Location: http://www.yahoo.co.jp');
?>
さぁ、どこにいくでしょう。
だから「普通」はexitを書く。わかるか?
0117872006/07/25(火) 16:46:56ID:???
>>116 === 馬鹿

「正しいアルゴリズムで書いてりゃ問題ない」
そんな書き方邪道
01181102006/07/25(火) 16:54:16ID:???
すみません;;
>>116
exitを書くとすれば最後でいいわけですよね?
こんなわ風に

header('Location: http://2ch.net');
exit;
}
0119軟式PHP2006/07/25(火) 16:56:46ID:???
>>117
邪道というか例なんだけど。そういうバグの危険性があるということ。
バグの危険性があるならexitで終わらせたほうがいいじゃん。

>>118
んだ。あとcase1のheaderの下にもね。
0120にせ87 = 1082006/07/25(火) 16:57:04ID:???
>>110 ===市ね
質問
どんな時に$userExists[0]がdefault以外になるんでしょうか??
その後に書く必要はないだろ
0121nobodyさん2006/07/25(火) 17:09:01ID:???
毒を吐く人に真面目に対応する必要はないと思うが…。>軟式PHP氏
「正しい」と「マナーがよい」は別問題。

彼の言うのは、Location をスクリプトの最後に書けば問題ないという事なのかね。
別段、問題があるわけではないし、exit を付けても良いと思う。
人それぞれで良いじゃないか。
0122nobodyさん2006/07/25(火) 17:09:24ID:???
default以外じゃなくてswitchのあと処理を止めてない、って話じゃ…
0123nobodyさん2006/07/25(火) 17:10:46ID:???
「正しいアルゴリズム」というよりは「動けば正義」って普通は言うけどね。そういう書き方のこと。
0124nobodyさん2006/07/25(火) 17:16:08ID:???
文句を言うのは構わないが、具体的に問題点を列挙して欲しいね。

「正しいアルゴリズムで書いてりゃ問題ない」では、問題点がわからないじゃないか。
ただ不満を言いたいだけなら、荒らしと同義。
0125nobodyさん2006/07/25(火) 17:19:45ID:???
おまんこ
0126nobodyさん2006/07/25(火) 17:33:26ID:???
俺は軟式氏指示
可読性にも繋がるしね
0127nobodyさん2006/07/25(火) 17:52:13ID:???
Locationヘッダ送出後、exitするのは基本中の基本
0128nobodyさん2006/07/25(火) 17:53:12ID:???
その後、一切何も出力しないとしても、exitしておくくらいでよい
0129nobodyさん2006/07/25(火) 17:54:19ID:???
つかマニュアルに書いてあるし・・・
01301072006/07/25(火) 18:02:50ID:???
あのぉ...
0131nobodyさん2006/07/25(火) 18:07:31ID:???
>>129
このマニュアル人間!
0132nobodyさん2006/07/25(火) 18:12:34ID:???
>54,107,130
>60
01331072006/07/25(火) 18:18:23ID:???
>>132
もっと詳しく
例とか出して
0134nobodyさん2006/07/25(火) 18:20:42ID:???
>>133
クラスのどこがわからないのかを詳しく。
「全部わからない」丸投げはご遠慮願いたい。
それは、マニュアルを見ないで努力放棄しているのと同じ。
0135nobodyさん2006/07/25(火) 18:26:27ID:???
>54,107,130,107
引継ぎなら仕様書があるでしょ。使い方はそれを読む
中を弄らなければならないという場合でも所詮phpなんだし

まずはソースがあるんだから(=引継ぎ)それを理解して分からないことを質問しれ

ここは家庭教師ちゃうで
0136nobodyさん2006/07/25(火) 18:33:58ID:???
なんか変なのが沸いてたみたいだね
0137872006/07/25(火) 18:49:56ID:???
>>109 メッセンジャーと言ってもMSN以外にYahooだのスカイプだのたくさんありますが・・・

ちなみに>>111、>>113、>>117は偽者です。
なぜ俺が騙られたのか意味不明・・・
0138nobodyさん2006/07/25(火) 18:52:35ID:???
>>137
>6 準拠で質問していれば、偽者は排除できたわけですが…。

◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄には何も記述しないでください)
01391072006/07/25(火) 18:53:21ID:???
>>135
先生教えてくださいよ!
classの存在意味が全く分からないんです!
0140nobodyさん2006/07/25(火) 18:58:43ID:???
>139
「ソースを読んで理解して分からないこと」を教えてくださいよ。
107の存在意義が全くわからないんです。
0141nobodyさん2006/07/25(火) 19:09:29ID:???
>>46
0142nobodyさん2006/07/25(火) 19:22:25ID:???
>>122
たぶんツッコんでる方にもそれに気がついてないのがいるっぽい
「軟式PHP」ですら、アヤシイ。
0143nobodyさん2006/07/25(火) 19:28:20ID:???
extract関数が危惧されてますが私的には楽なので未だにしばしば用いてます。
以下のような感じで用いた場合にもリスクを抱え込むことになるのでしょうか?

extract($_REQUEST);
extract($_SERVER);

$Account = date("U");
$RD = fopen("password_files/".$Account.".DAT", "r"); <-重要なデータの格納されたファイルと仮定
echo fpassthru($RD);
fclose($RD);
0144nobodyさん2006/07/25(火) 19:41:51ID:???
>>143
何処で変数の初期化を忘れるかもしれないから、この程度の脆弱性について他人に訊くぐらいなら使わないほうがいい。
0145nobodyさん2006/07/25(火) 19:51:43ID:???
>>143
個人の趣味でやるだけなら使えばいいじゃん
仕事だとソースがスパゲティになることがよくあるから危険
0146nobodyさん2006/07/25(火) 19:55:13ID:???
>>143
リスクもそうだけど、結果的に「変数の初期化をし忘れていないか」という不安を抱え込む。

extractしなければ、変数の初期化をし忘れていたら動作しない。
extract では必要な変数を初期化し忘れていると、extract で初期化されてしまうリスクを背負う。
そういうこと。
0147nobodyさん2006/07/25(火) 20:16:57ID:???
グローバル変数に設定した値って、異なるクライアント同士で共有してみたりしないですよね?
クライアントがアクセスしたhoge.php内だけでのグローバルと見て良いですか?
セッションとかにも絡まないですよね?
0148nobodyさん2006/07/25(火) 20:17:45ID:???
>>147
そんな恐ろしい事態になるなら俺は全て定数にする
0149nobodyさん2006/07/25(火) 20:20:36ID:???
俺はそんな便利なグローバル変数があるなら、DB使うのやめたいサイトがいっぱいある
01501472006/07/25(火) 20:29:41ID:???
すまん、ありえないとは思ったが、念のため確認ですた。
ありがとん。
0151nobodyさん2006/07/25(火) 20:35:57ID:???
「後からなにか出力しちゃうバグがあるかもしれない、だからexit書いておく」
 動機としては30点。
「ここで処理を終了するからexit」を堂々と書くべし。

むしろ「このページが表示されたらおかしいよ〜ん」と表示するページへの
locationヘッダを最後に入れとくくらいがいい(いや、それはさすがにやりすぎか)。

念のため〜は見えにくいバグを作る原因になりがちだからな。
0152nobodyさん2006/07/25(火) 21:55:31ID:???
>>151
結局この人は何が言いたいの?
■ このスレッドは過去ログ倉庫に格納されています