【PHP】下らねぇ質問はここに書き込みやがれ 32
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/11/06(月) 22:07:16ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
【前スレ】
【PHP】下らねぇ質問はここに書き込みやがれ 31
http://pc8.2ch.net/test/read.cgi/php/1161733546/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しない)
・ サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0002nobodyさん
2006/11/06(月) 22:08:21ID:???http://pc8.2ch.net/test/read.cgi/php/1153652403/
【PHP】下らねぇ質問はここに書き込みやがれ 26
http://pc8.2ch.net/test/read.cgi/php/1154923910/
【PHP】下らねぇ質問はここに書き込みやがれ 27
http://pc8.2ch.net/test/read.cgi/php/1156262092/
【PHP】下らねぇ質問はここに書き込みやがれ 28
http://pc8.2ch.net/test/read.cgi/php/1157284868/
【PHP】下らねぇ質問はここに書き込みやがれ 29
http://pc8.2ch.net/test/read.cgi/php/1158434799/
【PHP】下らねぇ質問はここに書き込みやがれ 30
http://pc8.2ch.net/test/read.cgi/php/1159979905/
0003nobodyさん
2006/11/06(月) 22:09:52ID:???■本家マニュアル 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さん
2006/11/06(月) 22:10:58ID:???http://pc8.2ch.net/php/subback.html
PHPで検索汁!
0005nobodyさん
2006/11/06(月) 22:11:44ID:???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プログラムとして実行された結果になる。
0006nobodyさん
2006/11/06(月) 22:12:42ID:???→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌なら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.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
0007nobodyさん
2006/11/06(月) 22:21:11ID:???0008nobodyさん
2006/11/06(月) 22:28:41ID:GtGInv5r例えば、「バナナ(1)、りんご(2)、みかん(3)」とあったとします。()内は順番です。
これをechoすると
バナナ
りんご
みかん
と表示したいのです。どうすればいいかずっと悩んでいるのですが、
わかりません。アドバイスいただけないでしょうか
0009nobodyさん
2006/11/06(月) 22:56:06ID:???ユーザー関数で比較してソート
例文ちょっと改造して動かしてみたがこれでいけたぽいぞ
$array = array(
"みかん(3)",
"バナナ(1)",
"りんご(2)"
);
function cmp($a, $b)
{
preg_match("/\(([0-9]+)\)/", $a, $a);
preg_match("/\(([0-9]+)\)/", $b, $b);
$a = $a[1];
$b = $b[1];
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
usort($array, "cmp");
0011ご伝授下さい
2006/11/07(火) 00:13:59ID:???http://example.com/hoge.php
というファイルに
<?PHP
$query = getenv ("PATH_INFO");
include("$query");
print"<img src=\"./img/hoge.jpg\">";
?>
と記載しております。
http://example.com/hoge.phpでアクセスすると
<img src=\"./img/hoge.jpg\">は通常通りブラウザで画像は表示されますが、
http://example.com/hoge.php/hogehoge/でアクセスすると
<img src=\"./img/hoge.jpg\">は画像は表示されません。
対応策としては画像等のパスを<img src=\"/img/hoge.jpg\">にするしか無いのでしょうか?
初心者ですみません><
どなたかご伝授の程、よろしくお願い致します。
0012nobodyさん
2006/11/07(火) 00:31:59ID:???サーバーはhoge.phpがファイルであることを認識できるけど、ブラウザはhoge.phpがファイルなのかディレクトリなのか判別できない。
つまり、/hogehoge/の部分がPATH_INFOであるかどうかは、ブラウザにはわからない。
だから、imgタグのsrcに相対パスを使うと、ブラウザは/hoge.php/hogehoge/img/hoge.jpgから画像を取得しようとしてしまう。
(この場合、サーバーはhoge.phpに対して/hogehoge/img/hoge.jpgをPATH_INFOとして渡していて、テキストデータを出力しているので、当然画像は表示されない)。
srcには相対パスを使わず絶対パス(/img/hoge.jpg)にするのが無難だと思う。
0013nobodyさん
2006/11/07(火) 00:33:25ID:???その発想はなかったわ
0014nobodyさん
2006/11/07(火) 00:34:33ID:???つーか、ちょっとまて。
$query = getenv ("PATH_INFO");
include("$query");
はやめとけってwww
サーバーのリソースに不正アクセスされまくるぞwww
0015ご伝授下さい
2006/11/07(火) 00:53:16ID:???ありがとうございます。無難に(/img/hoge.jpg)に変更します。
解りやすいご説明ありがとうございました。
>>14
ありがとうございます。早速修正します^^
0016nobodyさん
2006/11/07(火) 01:27:29ID:x6c5yFrE接続するときに必要な
$conn = mysql_connect('localhost','my_id','my_pass');
mysql_select_db('my_id',$conn);
これを毎回書き込むのがめんどくさいと感じているのですが
別のPHPファイルに記述しておいてincludeで呼び出す方法をとればいいですかね?
なんとなくセキュリティ的にまずいのではないかと思って質問してみました。
.htaccessを利用すれば問題なく動作させることができるのでしょうか?
0017nobodyさん
2006/11/07(火) 01:43:53ID:???ドキュメントルート下に置かないってのは当然として。
0018nobodyさん
2006/11/07(火) 03:23:36ID:???DBのアクセスクラス作って、それをincludeすればいいと思う。
オレは使ってないけど、どっかのライブラリ使うのが一番いいのか?
0019nobodyさん
2006/11/07(火) 03:47:02ID:Sqm+J9JFというエラーがとれません。どうすればいいのでしょうか
<?php
session_start();
include("mysql.php");
?>
<html>
とセッションを使うのに適している記述だと思うのですがエラーがとれません
どうすればよろしいのでしょうか?
0020nobodyさん
2006/11/07(火) 04:04:52ID:???セッションにCookieを使うならスクリプトの先頭に置く。
文字を出力する前にsession_start()しなければならない。
0021nobodyさん
2006/11/07(火) 04:04:52ID:???0022nobodyさん
2006/11/07(火) 04:38:07ID:Sqm+J9JFスペースなど一切入っていません
1行目に<?php
2行目にsession_start();
です。
0023nobodyさん
2006/11/07(火) 05:11:39ID:???0024nobodyさん
2006/11/07(火) 07:48:16ID:???Telnetかなんかで叩いて送られてきたドキュメントを確認してみたら分かるんじゃない
送信済みになってるのは間違いないんだから
0026nobodyさん
2006/11/07(火) 09:35:48ID:???0027nobodyさん
2006/11/07(火) 09:41:20ID:C4kT4pauSmartIRCってのを使おうとしたら
socket extension not loaded
なエラーが出ますがどうしたらよいでしょうか
0028nobodyさん
2006/11/07(火) 09:45:40ID:qhJadrD30029nobodyさん
2006/11/07(火) 09:46:25ID:???コンフィギャーに--enable-socketsを追加してリコンパイルしてみたらどうでしょう
すでにコンパイルされてるならphp.iniでextension=php_sockets.dllを有効にしてみるとか
0030nobodyさん
2006/11/07(火) 09:50:46ID:???0032nobodyさん
2006/11/07(火) 10:01:52ID:???ありがとん。
一応有効にして再起動したけど、駄目ですた。
sqlliteとかはロードできてるんですけど・・・。
0033nobodyさん
2006/11/07(火) 10:02:22ID:???返さない方法はありますか?
ほかのメソッドはprotectedをつければ返されないのですが、
コンストラクタはprotectedをつけるとエラーが出てしまいます。
0034nobodyさん
2006/11/07(火) 10:02:32ID:oogNIDZJgo-pear.phpからインストールしてapacheのhtdocsの中にpearがあります。
このままファイルごと削除するだけでクリーンにアンインストールできるでしょうか?
003632
2006/11/07(火) 10:16:57ID:???DL版じゃなくてpearにはいってるの使ったらだいじょぶでした。
003734
2006/11/07(火) 10:18:35ID:oogNIDZJ0039nobodyさん
2006/11/07(火) 10:27:58ID:???できること増やすしかなさそう。
0040nobodyさん
2006/11/07(火) 10:28:38ID:oogNIDZJそれをドキュメントルート下においても問題なくつかえますか?
制限のおおいレンタルサーバでもうごきますか?
0041nobodyさん
2006/11/07(火) 10:30:30ID:???バージョンの問題やら、連鯖のphp仕様の問題で。
0042nobodyさん
2006/11/07(火) 10:32:51ID:???PHP関連の書籍 第3版
http://pc8.2ch.net/test/read.cgi/php/1150558685/
複数立ち読みしてバランスを取るしかないかも
0043nobodyさん
2006/11/07(火) 10:35:38ID:???session_start()の前の行にこれ入れてどこでヘッダーが出力されてるか確認。
headers_sent($file, $line);
echo "$fileの$line行目でヘッダ送信済み";
exit;
004540
2006/11/07(火) 11:06:10ID:oogNIDZJ参考にさせていただきます。
0046nobodyさん
2006/11/07(火) 11:59:54ID:???DBに書き出すのとどっちが早いのかな?やっぱファイル?
0047nobodyさん
2006/11/07(火) 12:02:55ID:???0049nobodyさん
2006/11/07(火) 13:24:06ID:oogNIDZJどのようにしてページをわけていいのかわかりません。
こんな感じで↓自動的にリンクを作りたいのですがご教授お願いいたします
index.php?page=1&a=5
index.php?page=2&a=10
index.php?page=3&a=15
0050nobodyさん
2006/11/07(火) 13:25:46ID:???0051nobodyさん
2006/11/07(火) 13:34:21ID:???index.php?page=2&a=15
ってしたとき、何が表示されるんだろ。
aいらないんじゃ
0052nobodyさん
2006/11/07(火) 14:05:32ID:???pageかaだけでいいんじゃないの?
で、index.phpの中で
$data = range(1,100); //表示データ全体
$len = 5; //1ページ5件
$page = (isset($_GET['page']))? intval($_GET['page']): 1; //ページNo.取得
$viewdata = array_slice($data, ($page - 1 ) * $len, $len); //表示データの抽出
foreach($viewdata as $line) {
echo "<li>$line\n";
}
0053nobodyさん
2006/11/07(火) 14:14:52ID:???$total_page = ceil(count($data) / $len);
for ($i=1; $total_page >= $i; $i++) {
echo "index.php?page=$i \n";
}
みたいな感じだな
ポインヨは、ページの総数は、全アイテム数を一ページあたりの表示件数で割ったものを
切り上げて出すってのと、ページに表示するアイテムの開始インデクスは (ページ数 -1) * 表示件数 で
求まるってことじゃないかな
Pagerとか呼ばれてる
0054nobodyさん
2006/11/07(火) 14:35:07ID:???//ポインヨかわいんよ。
for($i=0;$i<5;$i++){
echo 1+@$_GET['page']*5+$i.'<br>';
}
?>
0055nobodyさん
2006/11/07(火) 15:34:01ID:xXnFQ4+N$html="http://thesaurus.weblio.jp/content/IP";
$html2=file_get_contents($html);
このようにして、txtファイルに書き出すと、きちんと出力されているの
ですが、
$mozi="ルータ";
$html="http://thesaurus.weblio.jp/content/$mozi"; or /contents/ルータ
$html2=file_get_contents($html);
とすると、urlに格納した全角の文字をうまく解釈せず、「???[?^に該当
するページが見つかりませんでした」とテキストに出力されてしまいます。
ブラウザ上で直にurlに全角文字を入れたときは、きちんとした結果が
返ってきたのですが。。。
PHPファイルでurlに全角文字を格納した変数を使用するにはどうすれば
よいでしょうか?
0056nobodyさん
2006/11/07(火) 16:15:03ID:???よくしらんけど、urlencode関数とか? 文字コードとかどうなるのかよくわからんけど。
0057nobodyさん
2006/11/07(火) 16:16:36ID:???http://thesaurus.weblio.jp/content/%E3%81%82
こんなふうになるように、Unicodeをurlencodeすればいいのかな? たぶん。
0058nobodyさん
2006/11/07(火) 16:29:36ID:bLjeWEKolistテーブルのTEXT型のレコード「image」の基本値を「default.jpg」
にして、特に「image」が指定されていない場合「default.jpg」が入るようにしたいのですが
基本値のところにdefault.jpgと入力してレコード追加を行うと
#1101 - BLOB column 'image' can't have a default value
と出ます。
解決できる方法はあるのでしょうか?
基本値を何か設定できればソースのほうで変換して対応できるのですがどうもうまくいきません・・・・
基本値の設定の方法など特にやるべきことがありましたらよろしくお願いします。
005955
2006/11/07(火) 16:31:43ID:xXnFQ4+N006058
2006/11/07(火) 16:34:03ID:bLjeWEKoimageフィールドのフィールドタイプがTEXTだと脳内変換していただければ・・・・
0061nobodyさん
2006/11/07(火) 17:48:16ID:???0062nobodyさん
2006/11/07(火) 17:55:27ID:6NR/KJfFcurl関数を使用したいのですが、標準だと使用できるようになっていないと
調べたところわかりました。実際、作成したスクリプトもcurl関数の
ところでエラーが出てしまいます。
そこで、PHPマニュアルなど、curl関数の使用方法を調べたのですが、
どれも分かりにくくて、設定をすることができませんでした。
どなたか、わかり易く教えていただけませんでしょうか?
よろしくお願いします。
0063nobodyさん
2006/11/07(火) 17:58:00ID:???0064nobodyさん
2006/11/07(火) 18:11:00ID:KW9fbgwt・配列に特定の数が入っている(配列の数は、10個だったり100個だったりする)
・10桁の数字をユーザに選んでもらう。
・その10桁の数字を元に、配列の中からランダムに5個の組み合わせが生成される
(組み合わせの5個はダブってはいけない)
・数字が変わらない限りは、毎回同じ組み合わせがはき出される
毎回ランダムにはき出すパターンは、わかるのですが、逆に同じ物を毎回はき出すという
方法が思いつきません。
どなたかご教授願います。
0066nobodyさん
2006/11/07(火) 18:20:36ID:???$array = range(1,100);
$seed = 8594037143;
srand($seed);
shuffle($array);
$array = array_slice($array,0,5);
var_dump($array);
?>
こんな感じ?
ちなみに単なる興味から聞くけどそれどんなシステムなの?
0067nobodyさん
2006/11/07(火) 18:38:45ID:KW9fbgwtありがとうございました。
ちなみに、この方法で配列の数が変わった場合もはき出す数は
ものは同じになりますか?
使い方は、言葉遊びのプログラムです
006855
2006/11/07(火) 18:42:31ID:xXnFQ4+N今度は
$mozi="ルータ";
$QUERY_STRING =urlencode($mozi);
$html=htmlentities($QUERY_STRING);
$html2="http://thesaurus.weblio.jp/content/$html";
$html3=file_get_contents($html2);
このようにし、$html2の内容(変換されたURL)を見ると、
http://thesaurus.weblio.jp/content/%83%8B%81%5B%83%5E と変換
されました。しかし、ブラウザでこのURLにアクセスしても、
"???[?^に該当するページが見つかりませんでした" と表示されて
しまいます。
きちんとアクセスできるようにURLをエンコードするにはどのように
すればよいのでしょうか?
0069nobodyさん
2006/11/07(火) 18:43:49ID:???ん〜ならないねぇ。
どんな条件が求められてるのか分からないから何とも言えないけど
そうしたいならsrandやrandを駆使すれば何とかなるんじゃないかなぁ
007155
2006/11/07(火) 19:04:03ID:xXnFQ4+Nもし、変なことやってたらすいません。
$mozi="ルータ";
$mozi2=mb_convert_encoding($mozi,'UTF-8',auto);
$QUERY_STRING =urlencode($mozi2);
$html2="http://thesaurus.weblio.jp/content/$html";
$html3=file_get_contents($html2);
としたのですが、同じような結果(???[?^に該当するページ・・)
となってしまいました。
そうじゃないということでしたら、ご指摘いただきたいのですが。。。
0072nobodyさん
2006/11/07(火) 19:06:07ID:???特定の条件で同じ内容を出したいんならそれはランダムって言わないだろう。
条件から計算なりして抽出すればいいんじゃないの?
007455
2006/11/07(火) 19:09:21ID:xXnFQ4+N正しくは
mozi="ルータ";
$mozi2=mb_convert_encoding($mozi,'UTF-8',auto);
$QUERY_STRING =urlencode($mozi2);
$html=htmlentities($QUERY_STRING);
$html2="http://thesaurus.weblio.jp/content/$html";
$html3=file_get_contents($html2);
です。
0075nobodyさん
2006/11/07(火) 19:09:29ID:???> $html=htmlentities($QUERY_STRING);
これは余分。urlencodeだけで十分なはずだよ。
0076nobodyさん
2006/11/07(火) 19:11:54ID:???mozi="ルータ";
$html =urlencode($mozi);
$html2="http://thesaurus.weblio.jp/content/$html";
$html3=file_get_contents($html2);
で、ソースをUTF-8で保存すればOK
007855(74)
2006/11/07(火) 19:19:38ID:xXnFQ4+Nshift-jis です。
0079nobodyさん
2006/11/07(火) 19:34:02ID:???php.iniの設定が間違っててautoではShift_JISを検出できないんだろ。
>>76でいいんじゃねーの
0080nobodyさん
2006/11/07(火) 19:36:10ID:???0081nobodyさん
2006/11/07(火) 19:40:15ID:???文字コードの知識もないやつがソースにShift_JISを使ったらいかん。PHPでは本来使えないぞ。
ま、文字コードの知識が無いからこそそんな真似しちゃうんだろうけど。
■ このスレッドは過去ログ倉庫に格納されています