【PHP】下らねぇ質問はここに書き込みやがれ 60
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/12/01(土) 21:18:36ID:MnWwNIk0PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 58
http://pc11.2ch.net/test/read.cgi/php/1195204145/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0002nobodyさん
2007/12/01(土) 21:20:43ID:???【PHP】下らねぇ質問はここに書き込みやがれ 59
http://pc11.2ch.net/test/read.cgi/php/1195204145/
【PHP】下らねぇ質問はここに書き込みやがれ 58
http://pc11.2ch.net/test/read.cgi/php/1194084457/
【PHP】下らねぇ質問はここに書き込みやがれ 57
http://pc11.2ch.net/test/read.cgi/php/1193062236/
【PHP】下らねぇ質問はここに書き込みやがれ 56
http://pc11.2ch.net/test/read.cgi/php/1192092941/
【PHP】下らねぇ質問はここに書き込みやがれ 55
http://pc11.2ch.net/test/read.cgi/php/1191058556/
【PHP】下らねぇ質問はここに書き込みやがれ 54
http://pc11.2ch.net/test/read.cgi/php/1189309377/
【PHP】下らねぇ質問はここに書き込みやがれ 53
http://pc11.2ch.net/test/read.cgi/php/1188047468/
【PHP】下らねぇ質問はここに書き込みやがれ 52
http://pc11.2ch.net/test/read.cgi/php/1186794483/
【PHP】下らねぇ質問はここに書き込みやがれ 51
http://pc11.2ch.net/test/read.cgi/php/1185521566/
【PHP】下らねぇ質問はここに書き込みやがれ 50
http://pc11.2ch.net/test/read.cgi/php/1184143801/
0003nobodyさん
2007/12/01(土) 21:21:15ID:???■本家マニュアル http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル http://pear.php.net/manual/ja/
■メーリングリスト http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル http://framework.zend.com/manual/ja/
(以下英語)
■Smarty http://smarty.php.net/
■Zend本家 http://www.zend.com/
■Zend Framework http://framework.zend.com/
■php | architect http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん
2007/12/01(土) 21:21:51ID:???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)、起動&再起動あたり
0005nobodyさん
2007/12/01(土) 21:22:53ID:???→ データベース板に誘導されるのが嫌なら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.を参照
0006nobodyさん
2007/12/01(土) 21:23:28ID:???→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
0007nobodyさん
2007/12/01(土) 21:29:11ID:???0008nobodyさん
2007/12/01(土) 21:57:43ID:???「まぁまぁ、そんなに熱くならずに自分のオナラの臭いを嗅いでエクスタシー感じようよ」
0011nobodyさん
2007/12/01(土) 23:14:54ID:HxBCRCSRやるなら内で?外(渡す前)で?
0012nobodyさん
2007/12/01(土) 23:25:39ID:???0013nobodyさん
2007/12/01(土) 23:29:50ID:???そんなの自分の設計の問題じゃないだろ。
通常は、両方でやるに決まっている。
javadocで、引数で数字が要求されるメソッドの仕様を参考にしてみな。
数字以外のものが入ってきたら、NumberFormatExceptionを投げるから。
こういういい加減な設計者と一緒に仕事したくないな。
自分の仕事じゃないから、やりませんでした、みたいな頭悪い言い訳するんだろうな。ちょー殴ってやりてーーー
0014nobodyさん
2007/12/01(土) 23:47:18ID:???0015nobodyさん
2007/12/01(土) 23:50:52ID:???iモードサイトで**秒後にジャンプさせたいんですが、いい方法ありますか?
iモードだとhttp-equiv="refresh"が使えないみたいで・・・
0016nobodyさん
2007/12/02(日) 01:24:26ID:T9bzvu3smove_uploaded_fileはアップしたファイルのtmp_nameにしか実行できないんですか?
アップしたファイル(a.jpg)を上の関数で一時保存用ディレクトリに移動し(同時にA.jpgにリネーム)、
次のページで同様にしてまた別のディレクトリに移動させようとしてるんですができません。
どうしたら良いですか?
または、ほかにファイルを移動させる関数ってないですか?
探したんですが見つけられませんでした
001716
2007/12/02(日) 01:43:29ID:T9bzvu3scopyって関数があるんですね
つまらない質問すみませんでした
0018nobodyさん
2007/12/02(日) 03:45:28ID:???こんなもん実装的には引数が渡されたときにチェックするだけでいいんではないでしょうか、
少なくとも何かしらの必然性があるとしても、
そこでPHPだからというaboutな開き直りを吐露すればいいのではないのでしょうか
0019nobodyさん
2007/12/02(日) 05:17:25ID:???0020nobodyさん
2007/12/02(日) 16:13:49ID:???0021nobodyさん
2007/12/02(日) 22:25:10ID:rv01YlJOPHPってWILLCOMのアレですか?
0022nobodyさん
2007/12/02(日) 22:28:22ID:o5LxY78Pそれは、SH905iとかのシャープの企業名だよ。
シャープの最新の液晶は相当綺麗になったね。
ただ、個人的にはプラズマとか携帯に実装できたら馬鹿売れすると思うんだけど。
0023nobodyさん
2007/12/02(日) 22:43:40ID:???シャープの液晶はいいけど、他の家電製品はダメダメ。
謳っている宣伝文句と違って質が悪すぎ。
液晶だけに特化すればいいのに、総合家電メーカーを目指そうとして
あれもこれも手をつけて失敗している。
亀山工場では、偽装派遣で度々問題になっていることもある。
しかし、吉永小百合が宣伝しているので、シャープはいい企業だと思う。
0024nobodyさん
2007/12/02(日) 22:53:12ID:???0025nobodyさん
2007/12/02(日) 23:00:34ID:???0026nobodyさん
2007/12/02(日) 23:03:04ID:???0028nobodyさん
2007/12/02(日) 23:54:25ID:JR6anVBd0029nobodyさん
2007/12/03(月) 00:06:56ID:???PHPは世界を救わないけど、SHARPも世界を救わない。
だって、サポートがひどい。
サポートに電話したら、
担当者が誤魔化そうとしたから、
証拠突きつけたら、
急に態度を変えて、
じゃ、特別価格で提供します。
だって。
は?って感じ。
しかし、吉永小百合が宣伝しているから、シャープはいい企業だよ。
0030nobodyさん
2007/12/03(月) 02:25:57ID:8wWPqIReincludeでテンプレートを読み込みたいのですが、ファイルの指定について悩んでいます。
現在はフルパスで、
include "/var/www/html/hoge/public_html/hoge/tmp.inc";
のように指定しているのですが、パスが変わると全てを書き換えないといけないため、
他の方法があれば教えて頂きたいです。
ホームディレクトリを指定する方法や、そういった一定のディレクトリを指定する方法が
あれば教えて頂きたいです。
宜しくお願いします。
0031nobodyさん
2007/12/03(月) 02:45:28ID:???includeする側のPHPとされる側のPHPの位置関係は変わらないんでしょ?
0032nobodyさん
2007/12/03(月) 02:59:01ID:???include_pathを設定するとかがいいのか
動的にならset_include_path()だな
0033nobodyさん
2007/12/03(月) 03:36:19ID:???ドキュメント書かない奴はこれだから。
0034nobodyさん
2007/12/03(月) 03:49:42ID:Nqd81K2eCookieが有効か無効かを一画面で判別する方法ってありませんか?
$_COOKIE["isCookie?"] = TRUE;
$isCookie = $_COOKIE["isCookie?"];
if ($isCookie == TRUE) {
echo "Cookie有効!!!";
}
ってやってみたのですが、何度やっても自爆してしまいます。
0035nobodyさん
2007/12/03(月) 04:00:00ID:Nqd81K2e一画面で判別というのは、クライアントが最初に画面を表示したタイミングで
Cookieが有効か無効かを判別できれば、と考えていました。
引き続き宜しくお願いします。
0037nobodyさん
2007/12/03(月) 04:14:30ID:???0038nobodyさん
2007/12/03(月) 04:18:57ID:???0039nobodyさん
2007/12/03(月) 11:31:19ID:XeQaE3mLユーザーから見えるphpファイルの中に直書きしてますか?
セキュリティー的に不安なんですがどう対応してるか、できる範囲で教えてください
とりあえずrootは論外ですよね?
0040nobodyさん
2007/12/03(月) 11:39:24ID:???0041nobodyさん
2007/12/03(月) 12:02:19ID:???↑ DBに繋げる時
.PHP ユーザから見えるPHPファイルにテーブルの名前やパスワードを直記
>>39 フォームから書き込んでもらえばいいんじゃないか?
0042nobodyさん
2007/12/03(月) 13:26:46ID:???0043nobodyさん
2007/12/03(月) 14:08:20ID:???文字化けが一向に直らず困っています。
PHPMyAdminのTOPページをコピペすると
localhost
?T?[?o??o?[?W????: 5.0.27-community-nt
?v???g?R???o?[?W????: 10
?T?[?o: localhost via TCP/IP
???[?U: root@localhost
MySQL ??????Z?b?g: UTF-8 Unicode (utf8)
と、こんな感じになってしまいます。
初歩的な質問ですいませんが対処法が見つからない為、
なんとか手助け頂けないでしょうか。
004443
2007/12/03(月) 14:09:55ID:???004543
2007/12/03(月) 14:14:16ID:foUDY8JFWindowsXP
PHP5.2.4
Apache 2.0
MySQL Server 5.0
です。重ね重ね申し訳ありません。
0046nobodyさん
2007/12/03(月) 14:14:55ID:wNZfveSUPHPだけで実装されたRDBはありませんか?
0047nobodyさん
2007/12/03(月) 14:30:02ID:MMZbqveK上のCGIを借りようとして
ttp://www.cgikon.com/cgi-bin/sample/cgi/yoyaku_1_e.cgi
でお試し動作確認したら
書き込みに失敗しましたとなります。
どうすればいいのでしょうか?
ダウンロードして設置してもやはり「書き込みに失敗しました」となります。
0048nobodyさん
2007/12/03(月) 15:19:40ID:???0049nobodyさん
2007/12/03(月) 16:15:40ID:cPWek5+f005039
2007/12/03(月) 16:35:18ID:XeQaE3mLありがとうございます
ユーザーというのはサイトの利用者です、(ログイン)会員とかには限定してません
いまのところDB名やテーブル名、DBuser名などは定数化した上でwebルートの上のパスに
まとめて置いてますが不安で… 書籍のサンプルコードはSQL文のなかに直書きだし…
>>41さんの意見はよくわかりませんでした
僕の理解力不足だと思います。すみません。
返事遅れて申し訳ないです。。
今まではzend使ってまちた><;えくりぷすとかは嫌なんです><;
おめーら無能の手を借りるまでもなかったわ><;
自己解決なんです><;
005339
2007/12/03(月) 17:02:43ID:XeQaE3mL画像のアップローダつくるとして、確認画面から画像選択画面に戻ったとき、
フォームにさっき選択した画像名が入ってる状態にしたいんですができません
色々やってCドライブからのパスごと画像ファイル名をセッションに入れて
引き回すことはできたんですが、肝心の <input type=file 〜>のなかに
value="<?= $name ?>"として入れることができませんでした
これはどうしたら解決できますか?
HTMLの問題か、PHPのプログラムで解決できるのか判断できなかったので聞きました
よろしくお願いします
環境はPHP5 apache2 winXPです
0054nobodyさん
2007/12/03(月) 17:09:34ID:???0055nobodyさん
2007/12/03(月) 17:52:40ID:AOaRX+ii2.あれば上書き確認メッセージを出す
3.初回書き込みの場合はDBへの書き込み処理を行う
という順番で上から条件分岐をするようにスクリプトを書いたのですが、
何度試しても1の時点でDB上にデータが見つかってしまいます。
ひょっとしてスクリプト内のSQL文って、優先的に実行されてしまうのでしょうか。
005655
2007/12/03(月) 17:58:54ID:AOaRX+ii0057nobodyさん
2007/12/03(月) 17:59:18ID:???005855
2007/12/03(月) 18:09:10ID:AOaRX+ii2や3の処理では「値があるかないか」で判定しています。
書き込み自体は3のタイミングでしか起こりえないはずなのに、
2の段階で値が見つかってしまう(表示してみましたが間違いなくデータがありました)
というのはどうしてなんでしょう。
混乱しがちなループ処理もしていないですし・・・
0059nobodyさん
2007/12/03(月) 18:11:53ID:bWHxIvT8006055
2007/12/03(月) 18:15:18ID:AOaRX+ii念のため、2のタイミングで見つかったデータをそのまま画面上に表示させてみました。
間違いなく「今まさに書き込もうとしているデータ」をDB上から見つけてしまっています。
しかも、いつも他のレコードをすべて捨ててから実験していますので、取り違えは起こりません。
正直もう何がなにやら。弱り果てています。
0061nobodyさん
2007/12/03(月) 18:17:17ID:???006255
2007/12/03(月) 18:22:50ID:AOaRX+ii仕事なのでそうもいかず・・・
とりあえずSQL文が他のコードに優先し、先行して実行されてしまう、
ってな変な仕様はないですよね?
実行結果だけ見るとどうしてもそう推測できてしまうのだけども・・・。
0063nobodyさん
2007/12/03(月) 18:30:14ID:???006455
2007/12/03(月) 18:34:13ID:AOaRX+iiすみません。
独学な上、ずっと一人でやっているもので・・・
0065nobodyさん
2007/12/03(月) 18:38:51ID:???俺も仕事で使っているけど、こんなところできいてましたw
>>64
デバッグ技術が未熟なのか知らんが、
質問が抽象的でエスパーでもない限りわからない。
0066nobodyさん
2007/12/03(月) 18:44:44ID:???006955
2007/12/03(月) 19:01:26ID:AOaRX+ii2 if(あった場合){
3 もうあるよ とprint
4 }elseif(無かった場合){
5 書き込み処理SQL
6 書き込んだよ とprint
7 }
と書いたのに、初めての書き込み時に3のメッセージが出るのです。
5の処理はちゃんとしているのに6の処理をしないのも謎でして。
同じif文の中の処理なのに。
0071nobodyさん
2007/12/03(月) 19:17:14ID:???よしんば仕事のやつだとしてもだな、
都合の悪いところは書き換えて晒せるだろ
007255
2007/12/03(月) 19:38:58ID:AOaRX+ii$sql = <<<EOS
SELECT * FROM $db_table WHERE $id >= id AND $id < (id + (stay_days * 60 *60 * 24)) AND '$roomnum' = roomnum;
EOS;
$list_dat = mysql_query($sql);
$all_data = array();
while($row = mysql_fetch_array($list_dat)){
$plus=$row[0]."\t".$row[1]."\t".$row[2]."\t".$row[3];
if($chk == ""){ array_push($all_data, $plus);}
$chk="on";
}
-if($all_data[0] != ""){
$write_message= <<<EOD
既に予約データが存在します。$all_data[0]//←チェック用
EOD;
-}elseif($all_data[0] == ""){
//追加
$sql = <<<EOS
insert into $db_table values ($id,'$stay_days','$roomnum','reserved');
EOS;
mysql_query($sql, $con) or die();
$write_message='初回処理をしました';
}
print <<<EOD
<html><head><title>予約確認画面</title></head><body>$write_message</body></html>
EOD;
省略しても滅茶苦茶長いですね。すみません。
実行すると、「チェック用」と書いたところに、なぜか「今からDBに登録しようと
している」値が入ってしまいます。
007355
2007/12/03(月) 19:42:46ID:AOaRX+ii0074nobodyさん
2007/12/03(月) 19:48:25ID:???答えられないなら答えなくていいしかまわなくていいだろ。
ストレス解消にこのスレ使ってんじゃねえよ。
わかってんならとっとと技術を磨けやクズども。
0075nobodyさん
2007/12/03(月) 19:51:42ID:???while($row = mysql_fetch_array($list_dat)){
$plus=$row[0]."\t".$row[1]."\t".$row[2]."\t".$row[3];
if($chk == ""){ array_push($all_data, $plus);}
$chk="on";
}
答え!
で初期設定としてタブが挿入されているから
0077nobodyさん
2007/12/03(月) 19:56:19ID:eZ72OUtyある一意のIDに対してmd5で処理した場合、結果は永久的に同じですよね?
なぜ疑問に思ったかというと、自分の携帯の個体識別番号をキーにmd5処理をしたんですが
1ヶ月前に実行した際と今実行した際の結果が違うような気がしたからなんです。
ただの記憶違いなのか、処理する時間や日付などによって結果が変わってくるのか、
ぜひご教授願います。
0078nobodyさん
2007/12/03(月) 19:58:30ID:???YES
>1ヶ月前に実行した際と今実行した際の結果が違うような気がしたからなんです。
普通は固有のIDとやらになんらかしら適当な値をつけたりして使うでしょ。
固有のID+日付とか
008055
2007/12/03(月) 20:09:53ID:AOaRX+ii$all_data = array();
while($row = mysql_fetch_array($list_dat)){
if($chk == ""){
array_push($all_data, $row[0]);
}
$chk="on";
}
なるほど!
・・・すみません、凡ミスですね。
これでひとまず安心できます。
本当にありがとうございました!
0081nobodyさん
2007/12/03(月) 20:19:05ID:???このレベルが「仕事」かorz。
俺もだから、がんがろうね。
何かコードらしきものが書けるのが一人しかいないと、
問答無用で何でもやらされるもんなぁorz。
本格的に無理となって初めて外注に……、じゃなくて
諦める(w。
008355
2007/12/03(月) 20:39:29ID:AOaRX+ii程度低くてホントすんません。
恥晒す事覚悟でも、コードを臆せず見せるべきなのかなー、とよく考えてます。
実は相変わらずさっきのエラーは出続けているのですが、ここからは頑張って
自分で直します。
絶対どこか他に凡ミスをしていると思うので。
0085nobodyさん
2007/12/03(月) 21:28:10ID:???前日の株価の終値の数値を取得して
自分のホームページにそのデータを動的に反映させる
方法はないでしょうか?
0089nobodyさん
2007/12/04(火) 02:15:52ID:???print_r($arr);
echo "</pre>";
これを一行で書きたいのですが、
echo "<pre>"print_r($arr)"</pre>";
ではうまくいきません。
どう書けばよいのでしょうか?
0090nobodyさん
2007/12/04(火) 02:18:29ID:???echo "<pre>".print_r($arr)."</pre>";
0092nobodyさん
2007/12/04(火) 03:08:11ID:???0093nobodyさん
2007/12/04(火) 03:08:43ID:???素直にセミコロンを使って改行消して一行にしろ
0094nobodyさん
2007/12/04(火) 03:25:06ID:???<pre><?php print_r($arr); ?></pre>
0095nobodyさん
2007/12/04(火) 03:28:03ID:???0096nobodyさん
2007/12/04(火) 03:54:05ID:???0097nobodyさん
2007/12/04(火) 04:06:49ID:y13TgX30賛成
0098nobodyさん
2007/12/04(火) 05:16:07ID:???どこまで全自動なんだよ
010053
2007/12/04(火) 08:27:33ID:KyeH73t1修正画面に戻った時にいちいち同じファイルを再選択しなきゃいけない気がしますが…
みなさんどうしてるんですか?
■ このスレッドは過去ログ倉庫に格納されています