【PHP】下らねぇ質問はここに書き込みやがれ 33
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。
まず読め→【PHP マニュアル】
http://www.php.net/manual/ja/ PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
【前スレ】
【PHP】下らねぇ質問はここに書き込みやがれ 32
http://pc8.2ch.net/test/read.cgi/php/1162818436/ ◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
http://pc8.2ch.net/php/subback.html ・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
http://pc8.2ch.net/db/subback.html ・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
【簡易FAQ】
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)、起動&再起動あたり
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に保存?
→ 好きにしてください
初心者的な上にくだらないので迷ったあげくこちらで。 phpを使ってHTMLソースに残さずに画像を呼び出す事はできますか? ページビューを計る目的で、表示されてるのも格好悪いので、、
>>7 つまりタグを使わないって事でしょ?
JavaScriptを上手く使うといけると思う
単純にイメージ出力ならヘッダを指定して出力すればおk
htmlに記述がないのにどうやってクライアントがリクエストするんだよ お前のサイトにくるやつはみんなエスパーか!
10 :
7 :2006/11/23(木) 01:03:45 ID:???
>>8 表示せずにカウントアップするって事です
JavaScriptは知識がないですが頑張ってみます、ありがとうございました
結局はJavaScriptが残るから格好悪いのは変わらないと思うんだがどうか。
12 :
7 :2006/11/23(木) 01:15:49 ID:???
それもそうですね となると完全に手詰まりですが
JavaScriptでソース無しとか一時期やってたけどあんまり意味ないかも
糞共有鯖から出ろ。でなきゃ仕様を甘受しろ
質問です。 フレームではサイト作成に不利ということで、PHPを使おうと思ったのですが、 (include) いくつか疑問点が浮上しました、。 ・調べてみると、PHPをWindowsに導入するだとかがでてきますが、 これはそもそもなんでしょうか?普通にPHPのページを見ることができるはずなのに… ・今までのhtml拡張子を、.php.htmlと改変すれば、とりあえずphp命令を読む準備はOKですか? ・PHPとHTMLは基本、共存なのでしょうか? ・エディタでおすすめがあれば… お願いします。
>>7 ページビュー計測が目的なら別に画像を呼び出さなくてもいいんじゃないの?
そのHTML自身の表示をPHP経由にしてカウントすればいいじゃない。
>>16 そういう制約があるんだろ
PVなんてログみりゃいい話だし
>>15 > フレームではサイト作成に不利ということで、PHPを使おうと思ったのですが、
SEO的な話?一部の検索エンジンはフレーム内ページの検索も対応しつつあって
近いうちにフレーム=不利という理屈は過去のものになりそうだけど。
> ・調べてみると、PHPをWindowsに導入するだとかがでてきますが、
> これはそもそもなんでしょうか?普通にPHPのページを見ることができるはずなのに…
言ってる意味が分かりません。
WEBサーバーの仕事とWEBクライアント(ブラウザ)の仕事を混同してません?
PHPのインストールが必要なのはサーバー側であって、ページを見るのに使ってるブラウザは関係ない。
> ・今までのhtml拡張子を、.php.htmlと改変すれば、とりあえずphp命令を読む準備はOKですか?
そんな変な拡張子は無いよ。>.php.html
拡張子の設定はPHPインストール後のWEBサーバーの設定によります。
.phpで動かすのが普通だけど、.htmlのままPHPを動かすことも簡単にできます。
> ・PHPとHTMLは基本、共存なのでしょうか?
共存です。HTMLのタグの中に拡張でPHP用のタグが含まれる形になります。
> ・エディタでおすすめがあれば…
君のレベルならどれでもあんまり変わらないのでは…
20 :
7 :2006/11/23(木) 01:31:13 ID:???
>>16-17 キャッシュ対策でheaderを使っているので、他にformなどからデータを取得してから戻ろうとすると
有効期限が切れてしまうため、画像カウントにしようかと。サーバはアクセスログを公開してくれません。
>>15 php動作のデフォルト拡張子が.phpだったらそれではダメかと。
.htaccessでAddType application/x-httpd-php .htmlとか指定すれば.htmlでphpを読めます。
21 :
7 :2006/11/23(木) 01:34:27 ID:???
>>15 ちなみに、phpをサーバが動かして、その結果をブラウザが読んで表示〜って事になるので、
見る側には勿論、作る側も「phpがOK」とうたっているレンタルサーバなら気にする事はないですね。
ループとか、複雑なのをテストで動かすならいきなり上げるのはどうかと思いますが。
22 :
15 :2006/11/23(木) 01:41:38 ID:???
みなさんありがとうございます。 わかりやすいです。 勉強になりました。 鯖側の設定を今までやってたのか… (゚∀゚)アヒャヒャヒャヒャ 鯖はPHP対応しています。 ということは、拡張子は.phpですか? しかしフレームの弊害が過去のものになろうとは…
>>20 そのHTMLを表示するサーバーでPHPは使えるの?
単に
<?php include "PVカウント用PHPプログラム"; ?>
ってHTMLに1行挿入して終わりの気がするんだが。
これなら別にブラウザ上のHTMLソースでは何も無かったように見える。
>>22 拡張子は標準だと.phpだけど.htmlにすることも可能だってば。よく回答嫁
>>23 ありがとうございます。
自分の付け焼刃の勉強だと、
例えば左側にメニュー、右側にコンテンツを、
フレームではなくPHPでやりたいとき、
まずテーブルタグをつくり、<Td>ここにPHP命令を入れる</Td>
と理解しているのですが、ウンコですか?
>>24 あ…ごめんなさい。
ありがとうございます。
そのままでおkか…
26 :
7 :2006/11/23(木) 01:48:48 ID:???
>>23 それだと、ブラウザがキャッシュから読み込んだ時にカウントされません
それでヘッダを送信しているわけですが、
>>20 みたいに有効期限が切れてしまう訳です。
>>22 拡張できる拡張子です。.phpだろうと.htmlだろうと何もついてなかろうと動きますよw
SEO的にはフレームで問題がなくなってもHTML的にフレームはイマイチだから、
余程大量の情報を詰め込むのでなければ1ページにまとめる事をお勧めします。
<?php include("menu.html"); ?> ネットで調べて拾ったタグです。 これをテーブルタグに埋める、でいいのでしょうか? しかし、menu.html側のPHP記述はなにもないのですが、大丈夫なのでしょう(;゚ァ.... k?
28 :
7 :2006/11/23(木) 01:53:47 ID:???
1.「.htaccessにAddType application/x-httpd-php .phpを動かす拡張子」と記述してアップ。
2.「<p>hogehoge</p>とか書いてtest.htmlでアップ」
3.「<td><?php include("./test.html"); ?></td>とか書いてアップ」
4.「<td><p>hogehoge</p></td> で完成」
って感じです。サーバの設定にもよるけど一般的なのならうまくいくはず。
簡単にまとめたつもりですが、どうでしょう?
>>15
29 :
7 :2006/11/23(木) 01:55:14 ID:???
includeするファイルはphpでなくても構いません。 CSSを使っていないサイトのindex.htmlをincludeすれば、丸ごとぱくる事も可能です。 無論、やってはいけません。
>>25 PHPでやらずに最初からそういうレイアウトでHTML書けば?
DreamWeaverとかの高機能HTMLエディタ使えばフレーム部分を
テンプレート化して全ページで取り込むのも簡単にできるよ。
それはクライアントサイドのonloadイベントじゃん CS間のキャッシュバリデーションとブラウザの戻るは関係ないんだし
>>28 ありがとうございます。
この場合、私の考えるところのMENUがtest.htmlですよね?
で、3のファイルにそれが埋め込まれると。
しかし4でつまずきました。どこにどう4を適用させるのか…
>>30 ありがとうございます。
その場合、フレームによる弊害は解消されるでしょうか?
33 :
7 :2006/11/23(木) 02:11:40 ID:???
>>31 むー、関係ないんでしょうか?
私の解釈に最初から間違いがあったのかもしれません、サーバが返しているのかと思っていました。
結局この点への対策はありませんか?
>>32 そうですー。
3を表示すると、サーバ側が4を返してきて、ブラウザが4を読み込む事になると思うのですが。
3を表示するとどうなるんでしょ?
>>33 ありがとうございます。
う〜ん、なにも移らないですorz
もう少し勉強してみます。
>>28 そもそも1がもう怪しいです。
メモ帳に、AddType application/x-httpd-php .phpを動かす拡張子
と書いた後、XXX.htaccessとリネームして鯖にアップ…ですよね?
>>35 違う。.htaccessってのは拡張子じゃなくてそういう名前のファイル。
ちなみにWindows上では作れない。(いや、裏技はあるけど)
サーバー上で直接作るか、「htaccess.txt」とかの名前のファイルを
アップロード後に.htaccessという名前にリネームするとかでできる。
>>>「htaccess.txt」とかの名前のファイルを orzorzorz なんか本当みなさん丁寧に私のようなバカを相手にありがとうございます。 試してみます!
38 :
30 :2006/11/23(木) 02:24:51 ID:???
>>32 フレーム使わないHTMLを書けばいいじゃん、って話なんだから
フレームの弊害なんてあるわけないじゃん。
困ってるのはフレームを使わないと同じメニューを全ページに貼り付ける手間が大変、ってだけなんだろ?
そのくらいのことはDWとかのエディタが肩代わりしてくれるよ。
しかしその程度の知識とスキルの人がSEOなんて気にしても始まらないと思うぞ。
>>38 そうですか…
そっち方面もあたってみます。
ありがとうございました!
Dreamweaver 8 日本語版 ¥48,280
41 :
7 :2006/11/23(木) 02:30:20 ID:???
XHTML1.1からはStrict相応のDTDしか用意されてないんだし、 これからの(X)HTMLでフレームを排除した方が良いのは確かなんですけどねぇ。
でもそういうことはもうちょっと全体を理解した上で考えないと、 個別に「これは良くないらしい」でやってても単なるバカですよ。
43 :
QQQ :2006/11/23(木) 07:13:00 ID:vr3qLXu2
HTMLファイルとPHPファイルを使ってTXTファイルから特定の文字列を
検索させたいんですが、HTMLファイルで入力した文字をPHPファイルに
うまく渡せてません。
「HTMLファイルの概要」
<FORM ACTION="
http:// ○○○/ABC.php" METHOD=POST>
<INPUT TYPE="text" NAME="var" SIZE="20">
<INPUT TYPE="submit" VALUE="検索実行">
</FORM>
「PHPファイルの概要」
<?
$fp = fopen("
http:// ○○○/XYZ.txt","r");
if($fp == true){
for($i=1;$i<=5;$i++){
$str = fgets($fp);
if(!(strpos($str,$var) === false)){
print $str;
}
}
}
fclose($fp);
?>
何かおかしなところ、要領・センスの悪いところなど教えてください。
PHPファイルは単体でテストしてみましたが、問題なさそうでした。
なので、おそらくHTMLファイルから変数varがPHPに反映されていないよう
なのですが、どうしたら直るのかジェンジェン分かりません(--;)
環境はWindowsXP、Apache2.0.59、PHP4.4.4です。
$_POST['var']
45 :
QQQ :2006/11/23(木) 07:43:24 ID:vr3qLXu2
>>44 さん
それはどこについてなのでしょうか??
>>43 name=varで指定したinputがデフォで$varで取得できたのは昔の話。
今は$varではなく$_GET['var'](GET時)や$_POST['var'](POST時)や
$_REQUEST['var'](どっちでも使える版)という書き方をする。
つまり要約すると $var = $REQUEST['var']; と、一番先頭の行に書いておけばよいということ
48 :
QQQ :2006/11/23(木) 08:16:53 ID:vr3qLXu2
でで、できましたぁぁ!! どーもありがとーございます!
ついでにstrposはマルチバイト文字対応してないからね。
$_REQUESTは使わないほうがいい。 面倒がらずに、GETとPOSTをしっかり区別しる。
51 :
nobodyさん :2006/11/23(木) 12:14:12 ID:3T4ybzoe
初歩的でスミマセン。 php4とphp5、どっちがオヌヌメなんでせうか? XREA+だと選べるようなんで迷ってまつ……
PHP3マジオススメ
3.47がいいな
56 :
nobodyさん :2006/11/23(木) 14:37:44 ID:Ja3fMNWU
htmlファイルもincludeできるよね? <?include "1.html";?>って感じで。 自分で試したら表示されたけど、特に問題ないよね?
59 :
nobodyさん :2006/11/23(木) 14:50:16 ID:6gP1lOLG
.txtでも.incでもとにかくなんでも読み込め!
60 :
nobodyさん :2006/11/23(木) 14:51:28 ID:KbYHTiqi
変数の中身のファイルを開くにはどうすれば? $test = 'abc'; abc.txtを$testをつかって指定したいんですが・・
そして顧客も呼び込め!
>>60 file_get_contents("{$test}.txt");
php4ならfopenで開くしかないのでは?
>>60 fopen($test . ".txt")
Linux + Apache + PosgreSQL + php でやってた Web を故あって Windows2003 Server + Apache + SQL-Server + php でやる羽目に なってしまった。 で、移植しててはたと困ったのが、新規のレコードを挿入した時に 挿入したばかりのレコードが特定できない。 PostgreSQL の時は、pg_last_oid で挿入しレコードを特定できた のだけど、SQL-Server には該当の機能がなさげ。 登録画面で登録された情報を元に、こんな風に登録されましたと 表示するなんてことはありがちだと思うけど、SQL-Server + php の人はどうやってるんでしょうか?
64 :
nobodyさん :2006/11/23(木) 15:36:43 ID:J3FVLRFg
>62,63 ありがとうございました あともうひとつ テキストファイルに10つの数字が入っているのですが それらの数字を配列にひとつづつ格納するにはどうすれば? このようにやったらarray[9]にしか格納されていませんでした・・ $file = fopen(abc.txt','r'); for($i=0;$i<10;$i++){ $number = fgetc($file); $array = array($i =>$number); } print_r($array);
abc.txtの中身を晒してくれ
$file = fopen(abc.txt','r'); $array = array(); for($i=0;$i<10;$i++){ $number = fgetc($file); $array[] = $number; } print_r($array);
67 :
nobodyさん :2006/11/23(木) 15:43:22 ID:I5R9DF47
データベース名:A テーブル名:ABC レコード:phrase1,phrase2,phrase3,phrase4 として、 テーブルにレコードを新たに加える際に、 1・既に格納されているレコードと1つでも共通項があった場合、既に格納されて いるレコードに統合したい。 2.レコードを統合する際に、共通項のあったレコードに差分をプラスする。 共通項があれば統合、なければ新たに格納ということで、PHPも必要だと思いまして。 しかし、これをどのように記述すれば良いのか分からなくて。。。 どうかお教え願えないでしょうか?
>>67 データベースの話だと思うけどphrase1にプライマリを設定しておいてインサートで失敗したら
アップグレードすれば良いんじゃね?
69 :
nobodyさん :2006/11/23(木) 15:55:41 ID:rtAYuH71
>62,63 ありがとうございました あともうひとつ テキストファイルに10つの数字が入っているのですが それらの数字を配列にひとつづつ格納するにはどうすれば? このようにやったらarray[9]にしか格納されていませんでした・・ $file = fopen(abc.txt','r'); for($i=0;$i<10;$i++){ $number = fgetc($file); $array = array($i =>$number); } print_r($array);
70 :
nobodyさん :2006/11/23(木) 16:09:41 ID:YEDH6+Ub
↑ごめんなさい、間違いました abc.txtの内容は1231231231 と数字並べてあるだけです 66さんありがとう
71 :
67 :2006/11/23(木) 16:12:59 ID:I5R9DF47
phrase1,phrase2,phrase3,phrase4 はレコードでなく、フィールドでした。
>>68 フィールドでなく、テーブルの全ての要素が一意のものでなければ
いけないので。。。
72 :
51 :2006/11/23(木) 17:24:58 ID:???
PHP勉強すれば彼女ができるんだ!
10つ ←これなんて読むの?じゅっつ?
つ旦
「ですよ♪」
77 :
nobodyさん :2006/11/23(木) 19:28:02 ID:jopFxTUo
配列で$2ch[0] $2ch[1] $2ch[2]とかやらないで 読み込んだ全部の配列を単語として出すにはどうすればいいですか?
joinでくっ付けてみたら?
80 :
nobodyさん :2006/11/23(木) 19:44:52 ID:jopFxTUo
$2ch[0-10] みたいなのありませんか?
つimplode
>>78 >>79 >>81 レスありがとうございます。
implode 使ってみたんですが、たとえば、文字列をエンコードする場合
個別に切り取ってからじゃないと出来ないみたいなんですがなんでですか
>>82 >implode 使ってみたんですが、たとえば、文字列をエンコードする場合
>個別に切り取ってからじゃないと出来ないみたいなんですがなんでですか
何のエンコードかな?。文字コードなら長い文章のままエンコできますよ。
20061123194606こういう文字列を 2006-11-23 19:46:06 こういう時間形式に変換したいのですが、できますでしょうか? $jikan = "2006-11-23 19:46:06";$TimeStamp = strtotime("$jikan"); これはうまくいくのですが、 $jikan = "20061123194606";$TimeStamp = strtotime("$jikan"); こうなるとうまくいかないもので、、 わかる方がいましたらよろしくお願いします。
>>84 $date = "20061123194606";
$yyyy = substr($date, 0, 4);
$mm = substr($date, 4, 2);
$dd = substr($date, 6, 2);
$hh = substr($date, 8, 2);
$ii = substr($date, 10, 2);
$ss = substr($date, 12, 2);
$date = "$yyyy/$mm/$dd $hh:$ii:$ss";
>>84-85 1時を01時とか常に桁数を合わせてくれるなら、sscanfで一発で分解→再結合でよくね?
87 :
nobodyさん :2006/11/23(木) 20:54:46 ID:6gP1lOLG
>>77 例えかもしれんが変数名の始めに数字は使えないんじゃなかった?配列はいいんだっけ?
>85 うまくいきました。ありがとうございました。 >86 sscanfも調べてみます。 どうもでした。
>>85 そんなめんどくさいことしないで
DATE_ 使えばいいよ PHP 5.1.1 以降ね
ちょっとありえないコードだな
85には感動した。 石器人だ。
$t = '20061123194606'; echo preg_replace('/(....)(..)(..)(..)(..)(..)/', '\1-\2-\3 \4:\5:\6', $t); こういうのはどう
<ひとりごと> Smarty使っていたら、便利な修正子が沢山用意されていると思っていたんですYo! そしたらSo!! 自分で関数を定義してやらなきゃならないんですねぇ……。 </ひとりごと>
>>94 <チラ裏>
むしろ自分で追加できる柔軟性に感動せよ。
</チラ裏>
PHPで作成されたアップローダを探しているのですが 日本語ファイル名を扱えるやつを教えてください。 できれば AutoIndex みたいなのが希望っす。
知らんけどAutoIndexとやらを日本語ファイル名に対応させるのはそんなに難しいの?
どっちかっつーとその日本語はSJISなのかEUC-JPなのか、 その上でそのアップローダはどのOS上で動かすつもりなのか、 が重要なんじゃあるまいか?
99 :
96 :2006/11/24(金) 00:46:58 ID:???
>>97 スキルないっす。
アップロードした時点で、フォルダを除くと文字化けしているんで
move_uploaded_file のところで mb_convert_encoding をしてみたん
うまくいきませんでした。
(ファイル保存時は文字化けしなくなりましたが)
>>98 そうですね。環境を晒していませんでした。
アップローダ&サーバ(Apache)共に Win2000 です。のでファイル名は
SJIS になるかと。。
PHPで作成された日本語ファイル名を扱えるアップローダなんてごまんとあると思うけど
102 :
96 :2006/11/24(金) 00:58:22 ID:???
たしかに板違いですね。 情報ありがとうございます。
>>101 そのスレの存在意義ってテンプレだけだよな
104 :
nobodyさん :2006/11/24(金) 02:14:25 ID:yAUAJcwD
当方開発環境はWindows上でPHP5.2.0使用。 PHPUnit2を使いユニットテストを組みながら開発しています。 Singletonなクラスを作成したのですが、そのユニットテストを行おうとしたところ、 インスタンスが共有されているため独立したテストが行えずテストが上手く行えません。 そこで、インスタンスを記録しているprivateなstatic変数をTestCaseからtearDownで 初期化したいのですが、アクセス権を無視して書き換える手段はありますでしょうか。 クラス/オブジェクト辺りの関数やリフレクションを漁っては見たのですが、特にリフレクションには > 注意: privateまたはprotectedクラスプロパティの値の取得または設定を 行うと、例外がスローされます。 とまで書かれてしまっており... 複数人で開発しているわけでもありませんので、publicにしてしまうなり、 テストを行う際だけ書き換えるなりしてもさほど問題はありませんが、 何か良い方法をご存知でしたらよろしくお願いします。
105 :
nobodyさん :2006/11/24(金) 02:17:41 ID:3W6tCrEf
>>83 ↓こんなかんじでやってみたのですがエラーでます
$data = array("あ","い","う","え","お");
$data = mb_convert_encoding($data,"SJIS", "ASCII,JIS,UTF-8,EUC-JP,SJIS");
echo implode("#",$data);
間違ってますか?
107 :
nobodyさん :2006/11/24(金) 02:36:42 ID:C3XLERtZ
$obj =& new HogeClass; というようにnewを参照で受け取ることの意味や有用性って、 どんなことがありますか?
108 :
nobodyさん :2006/11/24(金) 02:55:57 ID:3W6tCrEf
>>106 どうもありがとうございます。
連想配列とかいうのでやってみたらエンコできました。
亀レスですみません! 前板982で質問した者です。 ■質問した内容↓ 質問します! windowsでPHPを使用しているのですが、 ローカル環境で <? include("../home/httpd/html/template/top.html"); ?> の相対パスを <? include("/home/httpd/html/template/top.html"); ?> に変えて表示する事ってできるのでしょうか? windows環境で、includeするファイル指定を相対パスを絶対パスに 変えて表示する事はできるのでしょうか?という質問でした。 意味不明ですません;;
>>109 どういうフォルダ構成になってるか分からないので何とも言えないが、
普通に考えたら
../home/httpd/html/template/top.html
と
/home/httpd/html/template/top.html
は絶対に同じ場所を指さないと思うんだが…となれば別のファイルが表示されるだけかと。
それは相対パスを絶対パスにしたとは言わないだろう。別の場所を指定してるんだから。
そもそも相対パスと絶対パスってどういうものなのか分かってて言ってる?
そもそも何でそんなことしたくなったのか分からないと回答は難しいよ。
「別のファイルを表示しても同じように表示されますか?」という質問にしか聞こえない。
>>111 カレントが第二階層にあるなら ../ と / は同じになるじゃないかな
とするとWindowsでドライブレターを省略した絶対パスが有効かという質問かなあと思うけど
わざわざ聞くようなことでもないしなあ謎だわ
113 :
104 :2006/11/24(金) 03:15:15 ID:yAUAJcwD
>>106 おお、素晴らしい。
__autoload('SingletonClass');
echo runkit_method_add('SingletonClass', 'initializesingleton', '',
'self::$instance = null;',
RUNKIT_ACC_PUBLIC
);
...
protected function tearDown()
{
SingletonClass::getInstance()->initializeSingleton();
}
といった感じでテスト対象のファイルを弄ることなく初期化することが出来ました。
# 作成するメソッド名に大文字を混ぜてしまって一時嵌りましたが
どうもありがとうございました。
documentrootを例えばE:\abc\にしてまして、 その後に続くのがそのディレクトリなんです。 なのでimgを読み込む時は、 /img/aaa.gif で読み込めるのですが、(../img/aaa.gifでも読み込めます。) includeで同じように指定してもできません。 includeだと分けが違うんでしょうか。 最近学んだ者であまり分かってません。 もうしわけないですorz E:\abc\main\ の中にincludeを指定してるファイルがありまして、 E:\abc\home\httpd\html\template\top.html を、絶対パスで読み込みたいんです。 なぜ、 <? include="/home/httpd/html/template/top.html" ?> で読み込みたいかというと、本サーバーの環境がこの指定で 読み込まれるのに対して、 ローカル環境でできない状態でいるんです。 なので、htmlファイルをそのまま上げる事ができなく、 ローカル環境でコーディングをコピペして、 それを本サーバーにあげるという めんどくさいことをしています。 ローカル環境と本サーバー環境を限りなく近づけて 作業を簡素化したかったのです。 現状では、本サーバーの環境を変える事は、 できない状態でして、ローカル環境を本サーバーの環境に 合わせる事になります。 申し訳ないですが、もう少しご教授のほうをお願いいたします。
もうすこし話を整理して書くことから始めようか
httpdのドキュメントルートはファイルシステムのパスとは関係なし ハードコーディングせず、パスは定数にしておけば多少楽になるだろう プラットフォームはPHP_OSで取得できるから自動でパスを切り替えるようなこともできるし
117 :
439 :2006/11/24(金) 04:00:22 ID:???
「htmlspecialchars」を毎回書くのが大変なので 以下のファンクションでサニタイズしているんですが 普通に「htmlspecialchars」したほうがいいでしょうか? function outhtml($str) { $str = htmlspecialchars($str); return $str; }
普通にってなんじゃ
普通にってゆうとろうが
120 :
439 :2006/11/24(金) 04:12:46 ID:???
>>118 分かりにくくってすみません。
スピード的にはあまり大差なかった(私の感覚で)のですが
保守やこの業界の普通というか常識ではあまりやらない手法だ等お教えいただけたらと思っております
なんで竹原スレになってんだよw
例えば?
例えば、メソッドの引数を参照で取りたいときに困る。
引数に値がセットされるなんて、preg_matchとsscanfとfsockopenでお腹いっぱい。 ユーザー定義関数でなんて絶対使いたくないっす。 値を複数返すなら配列で返してlistで受け取るっす。
>>124 それは普通にできる
122は実行時参照渡しの話でしょ
>>122 はいはい、君は早とちりしているようだ。
Zendコーディング規約では、メソッドの引数で値の参照渡しを禁じているわけではない。
値の参照渡しは、"関数宣言"においてのみ可能です。
class Foo
{
public function bar(&$baz) ←関数宣言
{}
}
注意:"実行時"の参照渡しは禁止されています。
>>114 あー。仮想のパスと実際のパスの違いが理解できてない上に
サーバー環境とローカル環境を違う状態にして開発してるんだ。
そりゃー面倒だわ。
画像とかHTMLとかのリンクのパスはサーバーの外に対しての指定で
ブラウザが解釈するもの。そしてブラウザの要求をWEBサーバーが
仮想パス→DOCUMENT_ROOTを基準にした実際のパスに変換して
内部では正しいフルパスで扱われる。
それに対してPHPで使われるincludeのパスってのはPHP自身が
サーバー内部の仕組みであるため、「最初から実際のパス」で扱われる。
対処方法としては、よくやる手法ではPHP内部でのディレクトリ指定を
DEFINEまたは変数での定義にしてしまって、定義ファイルの差し替えで
簡単に切り替え可能にしてしまう方法。これは汎用性が高い。
ただ、目的が画像みたいにDOCUMENT_ROOT基準にしたいだけなら、
include "$_SERVER[DOCUMENT_ROOT]/template/top.html";
みたいにして、DOCUMENT_ROOTの値を使ってパスを補完しちゃうのもアリだよ。
>>120 普通何度もタイプするような状況にはならないけど、
まあ面倒ならコード補完できるエディタを使うかな
>>120 前に同じようなことしてるらしい書き込みをここか旧本スレの過去スレで見たよ。
でもhtmlspecialcharsは画面によっては使用頻度が激しくなるから
俺の感覚では速度的に受け入れがたい手法かなぁ…Cのマクロならともかく。
俺はその手のはエディタの補完機能で入力を楽にしてる。
困るほど使用頻度が激しいならクリップボードツールの類で定型ワード化すれば?とか思う。
速度的にはほとんど誤差程度じゃないかな。 htmlspecialchars() は見た目で長いのも視認性が悪くてよくない。 よく使う関数にこんな長い関数名をつけたのはバカだよ。
そんなときこそコレだ! $h = 'htmlspecialchars'; echo $h('<hoge></hoge>');
HTMLSpecialChars()おすすめ
htmlSpecialChars()派
2chには PHP Extension 開発者が集まるようなスレッドはないですか?
ないんじゃね? Zend_APIのリファレンスってロハじゃ手に入らんだろ?
長い関数名をタイプミスる事無く1〜3秒で一気に入力出来るとちょっと嬉しいじゃない
error処理してる訳でもないのになんで一旦変数に入れるの? return htmlspecialchars($str, ENT_QUOTES, 'EUC-JP'); でいいような希ガス。
>>136 基本的にインターフェース部分だけ、マニュアルを参照しながら作法通りに書くだけで、あとは普通にCで書くだけだしな。
win上(cygwin)でトライしたときは、コンパイルがうまくいかなくて投げ出した記憶があるが、linux上なら無問題。
142 :
NAME IS NULL :2006/11/24(金) 12:35:14 ID:LYtHrh60
Array ( [0] => タイトル [1] => ツール [2] => カメラ [3] => ユーザー[4] => カメラ [5] => カメラ [6] => データベース [7] => ユーザー [8] => アプリケーション [9] => アプリケーション [10] =>データベース [11] => パソコン [12] => カメラ [13] => Java [14] => API) このように文書中の語句を抜き出し、配列に格納しております。 そして、同じ要素の語句の個数をカウントして、降順に並び替えて 表示したいのですが、どのようにすれば良いでしょうか? 例えば、カメラ 4,ユーザー 2,データベース 2 といった感じにしたいの ですが。。。
>>142 array_count_values+arsort
145 :
142 :2006/11/24(金) 13:04:34 ID:LYtHrh60
なるほど。ありがとうござりまする。
>>142 まだやってたのかw
しかもたいして進んでないようなw
147 :
nobodyさん :2006/11/24(金) 14:14:35 ID:bDJYivQE
設計について質問です。 画像アップロードが出来る掲示板を作ろうと思っているのですが、 登録→確認→完了 という3つの手順を踏まえるとして、確認画面で画像を表示させたい場合、 一旦サーバに画像を登録しないと駄目ですよね? しかし、登録しなかったり前に戻ったりする場合、その画像がサーバに蓄積 されていって無駄になります。 どういう構成の方が効率よくできるのでしょうか? それともPHPの組み方にもよるのでしょうか?アドバイスお願いします。
>>147 「登録」の時に、確認画面用にテンポラリでサーバに保存してるファイルの
タイムスタンプ見ていって古いファイルを削除すればいい
テキストの5つ目のデリミタ(例えばカンマ)の所を取得して表示したいのですが、 a,b,c,d,e,f,g 上の例だとfを表示。 どのようにソースを書けばいいのか検討がつきません。 正規表現で置き換えをしようと思いましたが、どのように書けばいいかわかりません。 どなたかわかる方教えていただけませんでしょうか?
150 :
147 :2006/11/24(金) 14:25:35 ID:???
>>148 すみません、いまいち構造の意味が分からないのですが、、、
確認 → クッキーを発行してファイルのパスを保存
登録 → そのクッキーを読んで現在の時間より古ければファイル削除
と言うことですか?
151 :
nobodyさん :2006/11/24(金) 14:31:40 ID:1uBVtpeJ
テキストファイルの中身をすべて表示させるには? なぜか日本語が文字化けして・・・
>>149 $str = "a,b,c,d,e,f,g";
$data = explode(",", $data);
echo $data[5];
154 :
149 :2006/11/24(金) 14:38:57 ID:???
>>152 あーなるほどー
データを配列にいれて取り出せばいいんですね。
頭が固かったです。
助かりました。どうもありがとう。
>>150 クッキーとかいらね
要は確認までいったらテンポラリディレクトリにファイルを上げる
正常に完了までいった場合はテンポラリから正ディレクトリへ移す
確認でやっぱやめたってなったファイルはテンポラリに残っていく
テンポラリの中で現在より24時間前とかのファイルだったら
明らかに確認途中であきらめて残ったゴミファイルでしょ
その掃除作業を登録→確認→完了のどこかでやればよいということ
確認画面をつくならきゃGCもいらず効率が最もよい
157 :
147 :2006/11/24(金) 14:50:33 ID:???
>>155 「テンポラリディレクトリ」というのは、画像をアップロードするディレクトリと
別のディレクトリを作って、そこにアップするということですよね?
次に確認画面で下のようなソースを書きました。
$time_stmp=mktime();
echo tempnam($file_name,"$time_stmp");
出力画面には
C:\WINDOWS\TEMP\116207.tmp と出ます。(ローカル上でテストしてるので)
あとはTEMP(テンポラリディレクトリ)の中のタイムスタンプ付きファイルを
調べて、IFで指定時刻のタイムスタンプと比較して古いファイルなら
unlinkする処理を組み込めば、OKということでいいでしょうか?
159 :
147 :2006/11/24(金) 16:03:04 ID:???
ありがとうございます。意味が分かってきました。
160 :
114 :2006/11/24(金) 17:04:18 ID:???
>>128 さん
ありがとうございます。
早速、その方法で試してみます!
<input type="file" name="test[]"> //複数ファイルを指定 ↓ いくつのファイルをアップロードして送信したかを調べる $max_num=count($test); echo $max_num; としても、ファイルが1つでも2つでもフォームを用意した分だけMAX値が求められます。 例えば、<input type="file" name="test[]">を3つ設置したら かならずMAX値は3になるような。 どうやったら選択したフォームのみの計算が出来るのでしょうか?
質問の意味がイマイチわからないけど、 想像で答えるなら、 foreach ($_FILES['test']['error'] as $e) { if ($e == UPLOAD_ERR_OK) { $max_num++; } } ってことがしたいってことかな。「フォームの選択」ってとこの意味がよくわからんな
>>162 これです!errorの数でMAX値を求めるんですね。。
ありがとうございました。
>>137 ロハってなんすか?
>>141 マニュアルがまだ未整備って感じで、結局PHPのソースを見るって感じ・・・
マクロとか、どっちを使えばいいのかわからないものも多いし・・・
まあがんばってみます
ロハ = 只
167 :
nobodyさん :2006/11/25(土) 06:08:17 ID:uP/mQvTw
このスレ専属の回答者様のPHPを導入したサーバOSをおしえてください
>>167 一般的な多くのOSで動作するけど・・その質問に何の意味が?
スレ専属の回答者ってなんだ?
おいおい、俺のことに決まってるだろ。知らんのか?
Unsupported operand types になるのですがメンバ変数のstaticでこういう使い方は 出来ないのでしょうか? class test{ static $a = array(); function add($val = 'aaa'){ $this->a += array('test'=>$val); print_r($a->layout); } } $test = new test(); $test->add(); $test = new test(); $test->add(5);
staticなメンバ変数に$thisは使えないよ
んじゃstaticって何のためにあんの?
self::$aとすればよい
>>175 クラスをインスタンス化しないで呼び出すことができる。
つまり通常のfunctionと同じことになるって理解でいいんですかね 買い物カゴという「モノ」に商品を追加する「手続き」や、追加する個数という「データ」のように オブジェクト設計としてはどういう扱いなんでしょうか?
PHP固有の機能じゃないよ
オブジェクト指向的には異端
htaccessで特定のディレクトリだけPHPの設定を変えようと思ったんだけどうまくいかない。 <IfModule mod_php4.c> php_flag display_errors On </IfModule> htaccess自体は効いていて、PHPに関する部分だけ無視される…。 サーバにSSHで入ったら、mod_php4.cがなくて、代わりに libphp4.so がある…。 どうしたらいいんでしょうか?
だね。 汎用的で簡単な関数や定数を放り込んでおくのに使うくらいだな。
static変数ってどういう時に使うかよくわからないね(;´ω`)
<IfModule はロードされてなくてもエラーを出さないようにするって意味合いしかないから。
185 :
181 :2006/11/25(土) 14:08:56 ID:???
解決しました。 <IfModule sapi_apache2.c>でした…。
インスタンス毎に変数を持つ必要はないが クラス内では共有する値が必要な場合にstaticなプロパティを使えばいい 要はグローバル変数でもいいんだけどクラス内でしか使わないから クラスに押し込んでしまいたいものに使えばいい
188 :
nobodyさん :2006/11/25(土) 14:36:37 ID:NunClOiB
各検索サイトでの順位を調べるという良くあるやつを自分で作ってみています YSTとgoogleは、そのままのHTMLを返してくれるので、splitとeregで何とかなりましたが MSNは中身の無いものを返してくるので、困っています スレ違いぽいですが、作ったことある方いらっしゃいませんでしょうか
>>188 君が言う中身がないものを返してくるソースを見せなよ。
どう指定したかもわからず答えようがない。
このように記述すると、処理が通らないのですが、正しくはどのようにすれば いいのでしょうか? for($i=0; i<=29; i++) { sqlite_query($db,"INSERT INTO document_word (word{$i+1}) VALUES('{$Value[$i]}');"); }
191 :
188 :2006/11/25(土) 15:17:48 ID:???
すいません、文字コード変換を間違っていて中身がとんでいただけのようです お騒がせしました
>>190 釣りだろうけど
for($i=0; i<=29; i++) ←
>>192 すいません。for($i=0; $i<=29; $i++) でしたか?
しかし、なおしても通らないのですが。。。
ほかに原因はあるでしょうか?
>>193 マニュアルを読み直した方が良いよ・・・
うむ、それから状況説明が「通らない」だけとか回答してもらいたい気が微塵も感じられない
>>193 >>1 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
197 :
193 :2006/11/25(土) 15:50:32 ID:???
>>196 エラー内容は、ブラウザの表示がまっさらになる です。
そもそも、やりたい事は何だよ (word{$i+1}) って何したいのさ? ・根本的にやりたいに対して処理が間違ってる ・SQL文が間違ってる ソースから読み取れる情報だとこの程度しか答えられんだろ
200 :
193 :2006/11/25(土) 16:06:09 ID:???
はい。お騒がせしました。
よしよし、俺がエスパー呼んできてやるから待ってろ。
202 :
エスパー :2006/11/25(土) 16:09:44 ID:???
ムリ
__ ,.-¬- 、._ / '´, 、 、 `ヽ、 r´ / l ヽ \ 、ヽ / / /l. l、 \ ヽ ', lヽ /, l. / /´ヽ lヽ ヽ. ! ヽ. ト ヽ、 '´| V '__ヽ. ト\、_',| ',| | l. ,| | __ \゙、ヽ.__ヽl. ト.| lハlヘ|´ ` ヽ´ ``〉,^! | ! l\l| | //ィ N 呼びましたか? | ハ ヽ __ /ハ/ ` _ '′lハn\ `ニ´/! ! ,イ | _,.-' /ヽ ` - ´ ,ハ\ | |ヽ _, - ' / | ヽェ、 ' | ヽー、 _ | ト. ヽ ,.、-‐ ´ / | / 〉 | ヽ `⌒.l ヽ',ヽヽヽ / ヽ 〈 ,.-|ヽ/ ヽ-/ ヽ/|、 ,〉 | l_! ヽ ゙l
>>193 for($i=0; $i<=29; $i++)
{
sqlite_query($db,"INSERT INTO document_word (word) VALUES('{$Value[$i]}');");
}
これでいいんでない?
(word{$i+1}) ってのは次の行に挿入したいってことと予想。
挿入する場合は、自動的に次の行にはいるので (word{$i+1}) の$i+1はいらない。
こいつまた来たのか
CSV(data.csv)データとして↓というデータがあって 佐藤,サ行,22歳,サラリーマン 木村,カ行,31歳,自営業 工藤,カ行,18歳自営業 増田,マ行,25歳,サラリーマン 鈴木,サ行,20歳,サラリーマン 須藤,サ行,22歳,自営業 サ行という項目を選択orクリックすると 「佐藤:22歳」、「鈴木:20歳」、「須藤:22歳」 サラリーマンという項目を選択orクリックすると「佐藤」、「増田」、「須藤」 というように条件によって選択的にデータを一部取り出したいのですが、 <?php $fp = fopen("data.csv", "r"); while ($data = fgetcsv($fp, 10000)) { foreach ($data as $d) { print $d . "<br>\n"; } } ?> とやったら全部表示されるとこまではいったんですがなかなかやりたいところまでたどり着けません。 ご助言お願いします。
くだらないというより、丸投げだな
とりあえず配列
211 :
nobodyさん :2006/11/25(土) 23:34:41 ID:GT4xD1Nx
fsockopenを使ってPOSTをリクエストし、結果のページをfreadしているのですが、 全てを読みきるのに10秒程度もかかってしまいます。ブラウザからの同内容のPOST だとすぐに結果が返ってくるのですが、この違いは何によるものでしょうか。 HTTPのトレースを見る限りでは、ブラウザが特別なことをやっているようには見え ないのですが... ちなみにfreadで読んでいるのは本体?のhtmlだけで、そのhtmlから張られている 画像などのリンクは読みません。ブラウザは平行に?それらも読んでいるようなの になぜPHPよりも格段に速いのでしょうか。
ダウンロードしたPHPマニュアル php_manual_ja.chm 開いても 表紙以外見れ無くないですか?
>>211 fclose忘れてスクリプトが回りつづけてるとか
214 :
211 :2006/11/25(土) 23:57:11 ID:GT4xD1Nx
>>213 freadのループの開始、終了時の時間差が10秒程度なのです。
PHPのfread関数の作りの問題(=改善不可)でしょうか...
普通はそんなにかからねえよ PHP疑う前に自分の環境とコードを疑え あとその部分のコード貼れ
PHPのバージョンは? 定かではないが、昔のバージョンでは遅かった記憶がある。
遅いってレベルじゃねーぞ
218 :
211 :2006/11/26(日) 00:13:22 ID:pPg02glY
レスあってうれしいですm(_'_)m
>>215 該当コードは↓です。正直、参考書からのパクリです(^^;
$socket = fsockopen(
$host
, 80 //port
, $errno
, $errmsg
, 10 //timeout
);
if ($socket == FALSE) {
return '';
}
fwrite($socket, $request);
$response = '';
while (! feof($socket)) {
$response .= fread($socket, 1024*100);
}
>>216 php-5.0.4-win32.zip
のを使ってます。「10日でおぼえるPHP5入門教室」という本に
ついてたCD-ROMに入ってたやつです。OSはXP+SP1です。
CGI、PHPの初心者です。Webサービスとやらに興味を持って
始めました。
TimeoutまでWaitしてるのは間違いなさそう バッファ小さくしてみたら
>>281 何したいのかよくわからんが、web鯖が返すレスポンスを取得するんだったら
GETリクエスト投げないとだめだと思うが。
$request にまともなリクエストヘッダ入ってるか?
改行たりないとか
222 :
211 :2006/11/26(日) 00:23:22 ID:pPg02glY
>>219 バッファを小さく?それは考えてなかったので試してみます。
>>220 >>221 取得したいページ(html)は全て読めているのですが、
単にループで時間がかかっているのです。ループの前後で
time()の結果を取得して表示してみらたら10秒弱かかって
ました。
それじゃレスポンス来るまで待ってるのか レスポンスの途中で引っかかってるのか データ受信後に止まってるのかわからんじゃまいか
224 :
211 :2006/11/26(日) 00:31:45 ID:pPg02glY
>>223 print strval(time());
while (! feof($socket)) {
$response .= fread($socket, 1024*100);
print strval(time());
}
print strval(time());
とした結果です↓
1164468445
1164468445
1164468445
1164468445
1164468446
1164468446
1164468446
1164468446
1164468446
1164468452
1164468452
6秒かかっていっきに読んでるようです。
じつはfsockopenのタイミングで接続していない?
なわけないですねその前にfwriteしてるし...
>>224 だからそれじゃ分からないんだってばよ
各ループでデータは読み出せてるの?
9回から10回で突然6秒停止してるのが非常に気になるけど
MTUの設定ミスでパケロスとか前スレにいたな。 キャッシュが効いてるとか、よほどでかいテキストでDeflateのメリットが出てるとか、 IEが早いケースはありうるけど超考えにくいね。情報不足で何ともいえないけど。
>>224 これのせいで遅くなっているってことはないか?
$response .= fread($socket, 1024*100);
文字列をどんどん連結していくタイプは、文字列が長くなるにつれて劇的に遅くなる。
配列にプッシュしていく方がはるかに高速なので、試してみては?
$chunks = array();
while (! feof($socket)) {
$chunks[] = fread($socket, 1024*100);
}
$response = implode($chunks);
229 :
211 :2006/11/26(日) 00:53:05 ID:pPg02glY
>>225 ループ内のprintで、その時点での全受信データ長も出力してみました。
1164469801
1164469802-->556
1164469802-->4703
1164469802-->8818
1164469802-->12578
1164469802-->16963
1164469802-->20723
1164469802-->28859
1164469808-->28859
1164469808
6秒かかってるのにデータ長が変ってない???
>>228 たしかにリアロケートで時間食ってるのかも
バッファが馬鹿でかいところからして怪しげな感じ
HTTPリクエストがおかしいと時間かかるときあるよ。 HTTP1.1でリクエストしてるのに、Closeしてないときとか。
可能性は無限大だな、よくない意味で
>>229 content-lengthを返しているなら、適切な分読み込んだ時点で処理を打ち切るように改良してみたら?
235 :
211,229 :2006/11/26(日) 01:12:01 ID:pPg02glY
>>228 なるほど!
試して見ましたが解決しませんでした。
でも書き換えます(リアロケートのロスはあるので)。
アドバイスありがとうございました。
>>233 なるほど!
最後に時間がかかるなら最後までいかなければ良い、と。
柔らか頭ですねぇ(古い表現ですが(^^;)
その線で対応できるかもしれないので色々試してみます。
>6秒かかってるのにデータ長が変ってない???
相手の出したデータ全部読み終わってるのに
さらに次を読もうとして待ってる典型例に見えるな。
>>233 で正解だろう。
原因究明が終わったら curl 関数も調べてみましょう。 なかなか便利な関数ですよ。
PEAR初心者です あるサービスパッケージを使いたくて入れてみたら エラーでまくりでそれをたどり永田、ファイル名検索して ダウンロードしてきてを5回ぐらい繰り返して デレクトリとか湧け分からなくなりながら 死ぬ思いしてやっと動作したのですが、みなさんどうやられてるのですか 簡単な方法教えてください
curl直に叩くのはマンドクサイです
>>238 普通に pear install パッケージ名
>>239 そうか。
いろいろできて便利な関数だと思うけどな。
242 :
俺様 :2006/11/26(日) 02:42:31 ID:???
echoで文字出力を覚えました。つぎは何を覚えればいいですか?
244 :
俺様 :2006/11/26(日) 03:06:11 ID:???
>>243 それも覚えました。次は何を覚えればいいですか?
>>244 print_rで配列の中身を出力。
第二引数で出力内容を変数に取り込む。
nl2brで改行コードを書き換えてブラウザ上でも改行して表示する。
>>244 簡単な条件文でも覚えれ。
それができれば、ほとんどなんでもできるようになる。
繰り返し処理を楽にするためにループ関数でも覚えればなおよし。
249 :
nobodyさん :2006/11/26(日) 03:49:08 ID:HPxv5p71
ヴァーチャルサーバで運営しているマシンなのですが1つのホストだけ <?xml version="1.0" encoding="UTF-8"?> なんて出力をするんですがこれにPHPが反応してエラーを出してしまいます。 サーバ全体で.htmlもphpとして見るようにしてあるので.htaccessか何かで 特定のディレクトリのみただのhtmlとして見るようにさせる事は可能でしょうか?
short_open_tag = off
file_get_contents関数についての質問です。 file_get_contents("sample-1.php?data=ABC"); という風に引数を渡したいのですが、エラーになってしまいます。 エラー内容→「failed to open stream: Invalid argument in C:\Program Files〜」 ちなみに file_get_contents("sample-1.php"); のようにファイル名だけの場合はエラーは起きませんでした。 どうしたらいいですか?
>>251 file_get_contents("sample-1.php?data=ABC"); ファイル名ではない
file_get_contents("sample-1.php"); 読み込まれるのはsample-1.phpのコード
実行結果を取得したいのであれば
file_get_contents("
http://example.com/sample-1.php?data=ABC ");
(fopen_wrappersが有効であれば、ファイル名として"URL"を指定する事ができる。)
ただしパフォーマンス的には推奨されない。可能な限りincludeで処理すべき
>>208 レスがないようなのでヒント
$dを,でexplodeして結果を見てみるべし。
254 :
nobodyさん :2006/11/26(日) 09:33:58 ID:JtN58Jtp
"うんこ野郎" と 'うんこ野郎' って何が違うんですか? たまに"が書き変わってて 動かない場合とかあるんですが
>>249 AddType application/x-httpd-php .php
257 :
208 :2006/11/26(日) 10:47:08 ID:???
>>253 ありがとございます
やってみて分からなくなったらまた来ます。
大文字小文字全角半角を区別しない str_ireplaceよりパワーアップしたやつありませんか?
そこまで来ると正規表現じゃね?
男は黙って正規表現を書き続けると女の子にもてるよ
全角アルファベットの大文字小文字ってiオプションで同一視されるっけ?と 実験もせずに聞いてみる
実験しればわかります。
Debian GNU/Linux Etch + Apache 2.2.3 + MySQL 5 + PHP 5.1.6 で Web アプリを作っています。諸般の事情により Windows で 動いている SQL Server 2005 内のデータを対象にしたいのですが、 PHP は SQL Server 2005 に接続できますか?その際は ODBC 経由 ということになるのでしょうか? 最悪、SQL Server 2005 内の DB を MySQL に全部吸い出す 覚悟はしているんですが、できれば直接 SQL Server 2005 に PHP から接続したいと思っています。
>>263 あなたは、「php SQL Server 2005」と検索窓に入れることもできない
教えてくんなの??
266 :
nobodyさん :2006/11/26(日) 15:10:20 ID:3LCl7xig
267 :
208 :2006/11/26(日) 15:12:28 ID:???
ちょっとつまづきましてお願いします data.csvファイルを開いて$lineに入れるために $Data=file("data.csv"); for($i=0;$i<sizeof($Data);$i++){ $line=explode(",", $Data[$i]); ?> とかいたのですが、 excelからCSVに変換すると 行の最後の「,」が消えてしまいます。 これってなにか防ぐ方法があるのでしょうか? 置換すればいいのですが、変更するたびに消えてしまって困ります。
phpとどのような関係があるのか10文字以内で述べよ
普通、行の最後の「,」がないほうがよくね?
ディープすげー!
271 :
nobodyさん :2006/11/26(日) 15:37:47 ID:p7DfmUHL
<input type="checkbox" name="*[]" value="**">***<br> ↑の、name="*[]"の []にはどういった意味が含まれているのでしょうか?
var_dump($*); してみて。
有難う御座います!
$iが0〜10まである場合に、 $hoge['aiueo'][$i] を $hoge[$i]['aiueo']に簡単に変更する方法ってあるでしょうか?
275 :
nobodyさん :2006/11/26(日) 17:36:30 ID:Ej5RlNz7
$aという値が未入力ならば1 それ以外は2というようにしたいのですが 未入力若しくは空白を表現するにはどうすれば?
276 :
nobodyさん :2006/11/26(日) 17:37:13 ID:ege7fIyd
質問です。 他人が作ったhtmlファイルの解析をしてるんですが、 フォーム中のPOST情報をわかりやすくみたいんです。 具体的に言うと =========ここから他人が作ったhtml========= <form method=post action="hoge.php"> <input type なんちゃら> ←これが多数 </form> =========ここまで他人が作ったhtml========= こんなのがあって、 action="hoge.php"を自分が自作のphpファイルへ、action="2ch.php"とかに変更して 2ch.phpをブラウザで見ると POST['a'] = 1 POST['g'] = "test" : : とか見いにわかりやすく表示させたいのです。 なにかいいモノはないでしょうか。 以上よろしくお願いします。
>>275 > $aという値が未入力ならば1
> それ以外は2というようにしたいのですが
if($a == NULL || $a == ""){
$a = 1;
}else{
$a = 2;
}
でいいかな?
やべ、なんか誤作動起こす気がする。
> 未入力若しくは空白を表現するにはどうすれば?
これは意味が分かりません。
>>278 おお、出来ました。
ありがとうございました。
>>274 for($i=0;$i<=10;$i++) {$hoge[$i]['aiueo'] = $hoge['aiueo'][$i];}
281 :
nobodyさん :2006/11/26(日) 18:55:04 ID:ZiWUMCPr
【環境】
System : Darwin Kernel Version 8.8.1
Apache Version : Apache/1.3.33 (Darwin) PHP/4.4.1
【質問】
シングルクォートとダブルクォートを両方含む文字列を作成する方法をおしえてください。。orz
例えば以下は
>>255 のリンク先の例文。
<?php
$pattern = 'Arnold once said: "I¥'ll be back"';
?>
これを実行しようとすると、Parse Errorになります。。
ちなみに、" ' "; か ' " '; であればエラーになりませんが、これらに
エスケープした¥" や ¥' を混ぜるとエラーになってしまうのです。。
よろしくおながいします。m(__)m
$pattern = 'Arnold once said: "I\'ll be back"'; echo $pattern; うちのPHPではエラーにならないが??
¥ってなんだよ馬鹿
晩飯食えよ
宿題やれよ
風邪引くなよ
歯磨けよ
288 :
nobodyさん :2006/11/26(日) 20:48:50 ID:httKlQJs
data_01.txt data_02.txt ・・・ for ($a = 0; $a<100; $a++ ){ $data = file("./data_"○○".txt"); ・ ・ ・ } 2桁連番のファイルを読み込みたいのですが どうすればいいのでしょうか? どうかよろしくお願いします。
それじゃまた来週!
エイリアスの使い道がよくわからないんですがどういうときに使うんですか?
PHPって何ですか?
$data = file(sprintf("data_%02d.txt", $a));
294 :
nobodyさん :2006/11/26(日) 21:45:21 ID:httKlQJs
>>292 ありがとうございます
おかげさまで解決できました
$data = file("data_"printf(%02d,$a)".txt");
今までずっとこんなことを試行錯誤してました・・・(;´Д`)
>>290 関西ではアリアスとかジョージとか呼ばれてる。
主にファーストとして使うのがポピュラーかな?
>>293 ありがとうございます。
おかげさまで思い残すことなくあの世に旅行できます。
89歳。北海道のおじいちゃん
配列のキーに変数を使用する場合の記述方法ってどう書けば正確なのでしょうか? たとえば、 $var2 = 0; $var[0] = 1; $hoge[1] == $hoge[$var[$var2]] で正式な記述方法なのでしょうか?
普通に内側から展開される 文法上は問題ないけど、そのコードはつまり $hoge[1] = $hoge[1] だから無意味だね
301 :
288 :2006/11/27(月) 05:28:35 ID:???
>>296 使ってみました!
すごい!ただただ感動です!
やる事例があまり無く、いつまで経っても初心者なのですが
今回のお二方のレスには感動するばかりです。
本当にありがとうございました。
fopen()で、対象ファイルを削除する方法ってないでしょうか? 空にすることならできるのですが・・・。 わけあって、fopenから極力処理したいと考えています。
たすけてください…
ソースはUTF-8で
mb_send_mail("
[email protected] ", mb_convert_encoding("(そ)そさしすせそたちつてと","ISO-2022-JP","UTF-8"), "あいうえお");
上記を使ってメールを出しているのですが、
Thunderbirdで受信すると件名が「(そ)そさしす$;$=$?$A$D$F$H」と文字化けしてしまいます。
Outlookなどでは化けないのですが、どのように対処すれば宜しいのでしょうか?
304 :
nobodyさん :2006/11/27(月) 13:11:59 ID:kpHSAXGL
>>277 foreach ( $result as $aaa ) {
$aaa = mb_convert_encoding($aaa[0],"SJIS", "auto");
$aaa1 = urlencode("$aaa");
print ("<a href=\"$aaa1\">$aaa</a>\n");
}
?>
$aaaに何も無ければ→print ("ねーよwwww\n");
それ以外は→print ("<a href=\"$aaa1\">$aaa</a>\n");
というようにやりたいです。
こんな感じだと思うのですが↓動きません
foreach ( $result as $aaa ) {
$aaa = mb_convert_encoding($aaa[0],"SJIS", "auto");
$aaa1 = urlencode("$aaa");
if (empty($aaa)) {
print("ねーよwwwwwww");
} else {
print ("ありました。<a href=\"$aaa1\">$aaa1</a>\n");
}
?>
NULLでもだめでした。書き方間違ってますか?
>>303 内部エンコードがJISじゃないのにJISが渡されたからじゃないの
>>304 フラグ変数が変だと思ったらvar_dump()
PHP にはワイド文字(ワイド文字列)という概念はあるのでしょうか? 内部的には(たとえそれが UTF-8 文字列だとしても) 単純にバイト列として扱われているのでしょうか?
内部的にってことはCの話でPHPの話じゃなくなるわけだが。 データタイプが何であれバイト列として扱われたら文字列でないことは自明なわけだが。
309 :
303 :2006/11/27(月) 13:35:45 ID:???
>>306 mb_send_mailの前で
mb_internal_encoding("ISO-2022-JP");
をすると、「(])]UWY[]たちつてと」となりました。
「(そ)そさしすせそたちつてと」という文字列にはばらばらな文字コードが含まれているということですか?
>>307 PHPの文字列は基本的にただのバイト列と考えていいと思う。
ただし、あたかもマルチバイトでエンコードされた文字列であるかのように処理してくれる関数がたくさんある。
画像や音声などのようなバイナリデータも、文字列としてそのまま扱える。
ワイド文字型のような中途半端な型を余分に導入されるより、ずっと統一的かつ単純かつ柔軟でわかりやすい。
313 :
302 :2006/11/27(月) 13:41:41 ID:???
>>305 FTPで接続し処理したいからです。
ftp_connectウンタラは長くなってしまうため極力使いたくありません。
>>310 php5以降ならそれでいけたようですね・・・
php4では無理でしょうか?
>>309 mb_send...は文字コードの変換も勝手にやるよ
マルチバイト関連の設定を見直してみたらどうかしら
315 :
304 :2006/11/27(月) 13:49:24 ID:???
>>306 ありがとうございます
なにもないときはstring(0) "" という返りすが
>>304 のようにするにはどうすれば良いですか
「うごきません」じゃ何のことか分からないし変数の値知らないし
317 :
304 :2006/11/27(月) 13:58:17 ID:???
僕にも分かりません
318 :
303 :2006/11/27(月) 13:58:56 ID:???
>>314 mbstring.detect_order auto
mbstring.encoding_translation Off
mbstring.func_overload 0
mbstring.http_input auto
mbstring.http_output UTF-8
mbstring.internal_encoding UTF-8
mbstring.language Japanese
mbstring.substitute_character no value
こんな設定なのですが、やっぱり問題ありです?
319 :
303 :2006/11/27(月) 14:01:05 ID:???
クリスマスの予定無しっすかwww
320 :
303 :2006/11/27(月) 14:58:05 ID:???
$title = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん";
$title = mb_convert_encoding($title,"ISO-2022-JP","UTF-8");
mb_internal_encoding("ISO-2022-JP");
mb_send_mail("
[email protected] ", $title, "");
でも、
$title = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん";
mb_send_mail("
[email protected] ", $title, "");
でも、Outlook,Thunderbird関わらず、
結局は「BDFHJKMOQSUWY[ ]たちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん」になってしまう。
これを直すためにmb_convert_encoding($title,"ISO-2022-JP","UTF-8");すると、Outlookでは正常になっていたので正しいものと思ってたら、
内部的には上記のソースであるべきだったんですね。。。
ただ、何ゆえひらがなのそまでがアルファベットに置き換わるのかがわからない。
たの前に半角スペース入れて送るとヘッダには「Subject: BDFHJKMOQSUWY[] =?ISO-2022-JP?B?GyRCJD8bKEI=?=」
完全に半角文字と認識してる…。
321 :
302 :2006/11/27(月) 14:58:07 ID:???
うわっ いまさら気づいたのですが、 urlラッパーってphp5にならないとほとんどサポートしてないんですね、 うわーめんどくせー
php5でもラップできる機能は限られてるよ 全部置きかえられたら楽しそうなのにねー
323 :
302 :2006/11/27(月) 17:54:57 ID:???
ftp関数で一時ファイルを作成せずに 接続先のファイルの内容を書き換える方法ってないでしょうか? urlラッパーが使えれば、実現できるのですが・・・。
お前は配管工に家を立てさせるのかよ
ereg の正規表現って、キャプチャしないグループを記述できますか?
出品情報はサマリだけ集計してるんじゃないの まあ落札だけでも全部スクレイプして情報取ってきてるならそれはそれで凄いけど ヤフオクってAPIないよね
質問です。 mixiみたいにログイン時に クッキーが有効になっていないユーザに対して警告文を出したいのですが それってphpだけだと難しいですかね?
簡単だよ
public_htmlの下にディレクトリを10000ぐらい作って、それぞれのディレクトリにdatファイルを 置くのですが、一つのディレクトリに大量のdatファイルを貯める方法に比べて 処理が遅くなることがございますか? ご教授お願いいたします。
>>330 よくわからんけど、「データベース使ったほうがいいんじゃないか?」と
うちのおじいちゃんが言ってたよ。
OSやファイルシステムにも違いがあるが、 「とりあえず10000個ディレクトリ作って、lsやってみろ」と、 うちのひいばあちゃんが言ってたよ。
「とりあえず10000個ファイル作って、lsやってみろ」と、 とも言ってたな。
>>333 ls・・・Windowsは無視ですか、そうですかw
うちの Windows には、ls なんて無いよう... なんて、言ってる奴にはどうせろくなサイトはできないから 無視していいんじゃね。
問題は一つのファイルをオープンするコストがどれだけ変化するだろ、 lsのコストなんてどうでもいい
酔って家族に暴力振るっちゃダメだぞコラ
即席犬糞erにとってはLinux + GNU lsが世界標準なんだから生温かく
>>335 なんでlsのコストの話してるんだ?と思うが、どうしてもWinでls使いたいなら
っ GnuWin32 Gygwin VMware coLinux ...etc
まぁあれだ、ディレクトリ10000個作ったりするような設計をやった事がないから、どの程度遅くなるのか分からん。
実稼働環境に近い条件を用意して、実際に動作テストやるべきだな。
>>330 そりゃどっちも同じくらい遅い。
ファイルシステムのindexデータにとっては
ディレクトリも特殊な属性を持ったファイル相当なので、
ディレクトリ+ファイルの合計で数が多くなると遅いです。
ディレクトリを階層構造にはできないの?
均等にハッシュすれば3層で1ディレクトリ1ファイルじゃね?
どうしてもディレクトリでやりたいのなら、proxyとかキャッシュサーバとかの
ファイルの持ち方を参考にするとか、簡単なAPで検討してみるしかない。
>>337 おまえ何もわかっていない
構造について質問です。 求人サイトなどでよくあるのですが、1つの項目に複数個入れる時、 配列を使って「AAA BBB CCC」とするのがいいのでしょうか? それとも「AAA,BBB,CCC」っと1つずつカンマ区切りの方がいいのでしょうか? データーベースやテキストでログを保存する場合も 1つのフィールドに対して1つの配列内のデータを入れるのか、 それとも配列にせずに、3つなら3つのフィールドを用意して入れた方が良いのか どちらの方が汎用性・効率化の面で優位なのか悩んでいます。
>>344 「入れる」って、「どこ」で「どこ」に入れるのさ?
346 :
344 :2006/11/28(火) 09:07:48 ID:???
>>345 例えば以下のような登録フォームがあるとします
趣味は?:[]パソコン[]野球[]サッカー
※[]はチェックボックスとします。
こういうフォームの場合、ログとしてテキスト、もしくはDBに保存する場合
どのような形で保存する方が汎用性が高いのかな?と思いまして。
質問が「趣味は?」だけならいいのですが、「その趣味に使う時間は?」
など追加した場合も、チェックを入れた項目毎の時間を入力出来るような。
>>346 テキスト保存とRDBMだと、抽出も含めて全く違うアプローチになると思うけど…
テキストでCSVなら設問が追加されたらカラムが一個増えるだけ
手早く作るにはこれ
処理の早さならDB・テキストに関わらずビットフラグ
汎用性ならDBだが、
>>344 の場合テーブル設計つーかリレーションについて
勉強が必要だと思われ
データ構造はどういう操作を楽にしたいか、という観点から設計されるので
漠然とどういうのが効率的か、汎用性が高いか、というのはない
要求をしぼったほうがいいと思う
350 :
344 :2006/11/28(火) 09:41:27 ID:???
>>348 おっしゃる通りです。まさに悩んでいるのはその点です。
テーブル設計やリレーションについて、いまいちまとまらないんです。
だから設問が追加した場合、汎用性が聞かなくなることが多く、
結局、フォームを追加したり、作り直すことが多いんです。
ただ、勉強するにも何をどう学べばいいか悩みます。
参考書に書いているような事でもないし・・。
352 :
nobodyさん :2006/11/28(火) 10:39:26 ID:ms9bthGt
はじめまして。 変数に入れた文字列を、先頭から1文字ずつ順に取り出したい場合、どのような関数 がありましたでしょうか? ファイルに書き出さない方法がありましたら、教えてください。 よろしくおねがいします。
Substrだとmbオーバーライドがオフってあるとマルチバイトで問題が出る utf8にしてpreg_splitつー手もある
>>352 windowsを前提で話す。
1.変数が記述されたphpファイルをメモ帳で開く。
2.変数の行にカーソルを持っていく。
3.変数に格納された文字列をコピー。
4.コピーした文字列を別のファイルにペースト。
5.あとはお好きなように
357 :
nobodyさん :2006/11/28(火) 11:11:35 ID:MVyDbxlO
>>353 substrの存在を忘れてました…
助かりました!ありがとうございます。
>>354 今回は半角英数字しか使う予定はないので、その問題は大丈夫っぽいです。
マルチバイト使うときは、気をつけます。
ありがとうございます。
半角だけなら $s = "hogehogebar"; $l = strlen($s); for ($i=0; $i<$l; $i++) { echo $s{$i}; } でええやん
359 :
nobodyさん :2006/11/28(火) 11:12:53 ID:XGgokU8X
>>355 そういう方法もありますね、今回は直接入力された変数から行うので、残念ながら使えませんが、
その方法も覚えておきます。
ありがとうございます。
360 :
358 :2006/11/28(火) 11:16:05 ID:???
オッパイ括弧はDeprecatedだったわ echo $s[$i]; でアクセス
>>356 array_keys($_GET);でhelloだけ取れると思うけどキーだけとってどうすんの?
フラグにしたいなら isset($_GET['hello']) で判定可能
362 :
QQQ :2006/11/28(火) 11:33:10 ID:trk6Ybn1
テキストボックス一つに対してボタンを二つ用意して
それぞれのボタンで入力に対して異なる処理をさせたいんですが、
どうやったらできますか?
現状ソースは以下
<INPUT TYPE="text" NAME="var" SIZE="20">
<FORM ACTION="
http://localhost/search1.php " METHOD=POST>
<INPUT TYPE="submit" VALUE="実行1">
</FORM>
<FORM ACTION="
http://localhost/search2.php " METHOD=POST>
<INPUT TYPE="submit" VALUE="実行2">
</FORM>
元々、一行目の文を<form>の中に入れてました。ボタンを二つに
したかったので外に出しちゃいましたwこれでは値が渡されません。
あ、これPHPファイルをコールする直前のHTML内の処理ですね。
でもできれば回答お願いします。
363 :
nobodyさん :2006/11/28(火) 11:38:35 ID:XGgokU8X
>>358 そんな方法があったんですね…
勉強不足でした。
早速試してみます。
ありがとうございます
QUERY_STRING
はわわー
368 :
nobodyさん :2006/11/28(火) 14:46:43 ID:9CSKXruB
フォーム登録処理で登録完了ファイルに if($_SERVER['REQUEST_METHOD']=="POST"){ if(get_magic_quotes_gpc()){ $_POST["name"] = stripslashes($_POST["name"]); //フォームの数だけ用意 } //改行を<br>にする $_POST["comment"] = str_replace("\n", "<br>", stripslashes($_POST["comment"])); //POSTを変数にする $name=$_POST["name"]; //フォームの数だけ用意 } 上記のような記述を書いているのですが、やはり必ず書くようにした方がいいですよね? フォームの数が多いとかなり長くなり、めんどくさいのですが、、 それでもセキュリティ的に必要だと思うし…みなさんはどうしているのでしょうか?
プログラマにとって怠惰は美徳だってじーさんが言ってるよ
>>368 最初からmagic_quotes_gpcをオフにしておけばおk
371 :
368 :2006/11/28(火) 14:53:10 ID:???
>>370 それって将来的に問題ないですかね?
前に2ちゃんで指摘されたことがあります。
毎回書いてることが問題 どんだけ馬鹿なんだよw
>>371 magic_quotes_gpcなんて最初のド素人のうちしか意味がない
どう問題なんでしょう?馬鹿なんで教えて下さい
378 :
nobodyさん :2006/11/28(火) 15:53:05 ID:q3z6QRVX
配列で、指定の文字数以上のものを 取り出すには何を使えば良いのか
379 :
nobodyさん :2006/11/28(火) 16:06:02 ID:AFqLXmTZ
$_GET配列を使う際に、 phpが自動でURLデコードをしていてそれが失敗しているために 日本語文字列が化けてしまうのですが、 (インプットアウトプット内部全部EUC-JPでまとめてるからconvert要らないはずなのに・・・) 自動デコードをさせない設定等があれば教えて下さい。
>>378 手作業、手作業!!
楽しようとすんなよかす
381 :
nobodyさん :2006/11/28(火) 16:19:05 ID:q3z6QRVX
手作業とかは無理です 便利な方法おお願いします
>>378 そもそも文字列の文字数を指定しておけばいいって話じゃないのか?
>>381 なまいきだぞ
しかたないからヒントな!
substr
これで調べろ
array_filterとか
>>378 function get_array_by_len(array $array, $len = 10)
{
$result = array();
$array = new ArrayIterator($array);
for ($array->rewind(); $array->valid(); $array->next())
{
if ((mb_strlen($array->current()) >= $len))
{
$result[] = $array->current();
}
}
return $result;
}
PHPの出力をブラウザにキャッシュさせたのですが 何も定義していなのにPragma: no-cacheと過去を指定したExpiresがhttpヘッダに 送信されているようです。 Expiresは未来の日時へ上書きするとしてPragma: no-cacheを出力させないようにするには どのようにすればよいのでしょうか。 header headers_ list headers_ sent のリファレンスは見ましたが解決に至りませんでした。
>>387 ヘッダは、PHPのじゃなくてWebサーバーが出力してる に一票。
出力させない方法は俺は知らないが、Expiresを上書きできるなら
Pragmaも適当な意味のない値で上書きすれば良いのでは。
//ちなみにレスポンスの Pragma: no-cache はHTTP/1.0の規格外
>>368 >$name=$_POST["name"];
何の意味があるんだ、これ。
なんか既視感あるコードだ
391 :
378 :2006/11/28(火) 18:59:03 ID:lLFQbN4A
いっぱいレスもらって色々試したのですが、 $str = <<<EOM 俺の親父はガッツ石松だぜ。getsじゃ無いよGUTSだよ。 EOM; mb_internal_encoding("SJIS"); mb_regex_encoding("SJIS"); $token = array(); while(1){ $bytes = mb_ereg("[一-龠]+|[ァ-ヴー]+|[a-zA-Z]+", $str, $match); if ($bytes == FALSE) { break; } else { $match = $match[0]; array_push($token, $match); } $pos = strpos($str, $match); $str = substr($str, $pos+$bytes); } print_r($token); ↑これを 2文字以上のものだけ取り出したいのです。 ようは俺とか無とかの1文字のものは 表示させないようにしたい
392 :
387 :2006/11/28(火) 19:01:35 ID:???
レスありがとうございます。 出力する文字列の<head>〜</head>から読み取って勝手にapacheが HTTPヘッダを出力してしまうことがありますね。 試しに「<?php phpinfo(); ?>」と書いたスクリプトから出力されている ヘッダを確認したところPragma: no-cacheは出力されていませんでした。 PHPで出力されるヘッダを確認するheaders_list関数があるのですが PHP5からの実装で開発環境はPHP4のため利用することが出来ませんでした。 Pragmaを空文字にしたりcacheにしたけどキャッシュされませんでした。
まあ出どこを特定することだね
こんばんわ。 linux でサーバ動かしてますけど、コマンドラインからもphpを動かして簡単な処理をさせたいと思います。 どうすれば良いのでしょうか? よろしくです。m( _ _;)m
session.cache_limiter じゃないのか?
>>394 php hoge.php
cronで動かしたければそれぞれフルパスで。
>>394 CLI版のPHP動かせばええじゃないか
サーバー動かしてるってことは管理者だろ?
>>394 だれでも鯖立てられちゃう時代なんだなぁ
問題は立てることより運用なんだけど…
399 :
394 :2006/11/28(火) 20:06:26 ID:???
debianでapt-getでphp4をインスコしましたが、cli版が入っていないようです。 php4.3.10なので標準で--enable-cliになるはずですが・・・(phpinfo()を見ても無い・・・) ちなみにwindows機ではphpのフォルダの下にcliフォルダがあり、ここにphp.exeが入っていますのでコマンドラインから可能です。 debianでapt-getでphp4を入れるとcli版が入らないのでしょうか???
php4はメタパッケージcliはcli
401 :
394 :2006/11/28(火) 20:08:42 ID:???
えぇぇぇ?別物なの?
php -v で確かめてみなさい $ php -v PHP 5.2.0 with Suhosin-Patch 0.9.6.2 (cli) (built: Nov 27 2006 01:55:31) Copyright (c) 1997-2006 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies with eAccelerator v0.9.5, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
KURO-BOX:~# php -v bash: php: command not found になっちゃいますが・・・
Debian GNU/Linux 3.1 KURO-BOX KURO-BOX login: tmp-kun Password:ないしょ Last login: Tue Nov 28 20:13:09 2006 from 192.168.1.2 on pts/0 Linux KURO-BOX 2.6.16-kuroboxHG #1 Sun Oct 29 21:27:07 JST 2006 ppc GNU/Linux The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. tmp-kun@KURO-BOX:~$ php -v -bash: php: command not found tmp-kun@KURO-BOX:~$ su root Password:ないしょ KURO-BOX:/home/tmp-kun# php -v bash: php: command not found です。 やっぱ、cli版は別にインスコするんでしょうか?
deb系でも窓でもmodとは別だよ
ん、そういえば犬はPHPのパスが通ってなかった気がしないでもないな・・・ バイナリがあるならパス通したり
407 :
394 :2006/11/28(火) 20:56:14 ID:???
皆さん、どうもです。
これかなぁ・・・やっぱ、cli版は別にインストールするみたいですね。
いきなり実行するのも怖いので、HDD丸ごとバックアップ取ってからやってみます。
どうもでした。
http://qoon.jp/2006/06/php.html PHPのCLI版のインストール(Debianの場合)
$su root
#apt-get update
#apt-get upgrade
#apt-get install php-cli
そのまま通常のphp.iniをコピー(念のためバックアップ)
#cp /etc/php4/cli/php.ini /etc/php4/cli/php.ini.back
#cp /etc/php4/apache/php.ini /etc/php4/cli/php.ini
>>405 どうもです。
そうだったんですか・・・
窓の方では何もしなくてもphp.exe.が入っていましたし、「php4.3.0以降は
自動的に設定される」ようなことをどこかで目にしていたものですから・・・
なんで動かないのか、半日悩んでおりました。(苦笑
お騒がせしました。。。m( _ _;)m
siteURLのエンコードをする場合も 文字コードでのエンコードをした方がいんですか?
410 :
387 :2006/11/28(火) 21:52:06 ID:???
その後コンソールから実行しPHPから出力されている事を確認し
php.iniやheader_cache_flag(1)みたいな関数があるのか探していたのですが
>>395 さんの仰るとおりsession.cache_limiterが原因であることが判明しました。
ありがとうございました。
だれか
>>391 お願いします
おみやげにこれあげるんで
//URLからドメイン名を取得する
$pattern = "/^(
http:\/\/ )([^\/]+)(\/.*$)/i";
preg_match ( $pattern, $url, $match );
$domain = $match[2]; //ドメイン
$path = $match[3]; //パス
412 :
sage :2006/11/28(火) 22:41:38 ID:TqHCzfuA
【セキュリティ上の注意】
php の セッションIDは、マイクロ秒単位の現在時刻 + ユーザーのリモートアドレス + combined-LCG(線形合同法自体は、疑似乱数生成方法としてはセキュアな方法ではない。) が種となっている。
セキュリティの専門家の高木浩光氏も 「phpらしい駄目っぷりだ。」 と批判している。
Unix 系 の OS ならば php.ini などで /dev/urandom を乱数の種に使うように設定しよう。
次のように記述すれば良い。
| session.entropy_file = /dev/urandom
| session.entropy_length = 16
/dev/urandom では、周囲で発生するノイズ等の攻撃者に推測されない値をデバイスドライバや他の情報源から収集して、乱数の種として使用する。
これは、特殊なハードウェアが無い普通のPCでも使えて大変便利。
HDDの回転数、CPUの温度、ハードウェアの温度、マウスの動き、HDDの寿命、ハードウェアのエラーセクタ、HDDのSMART情報、周囲のノイズによる
ハードウェア内部エラーなど、PCにはセキュアな擬似乱数としての使用に耐える攻撃者に推測されない値がいっぱいそなわっているのだ。
参考:
http://tdiary.ishinao.net/20061120.html#p01 http://www.linux.or.jp/JF/JFdocs/Secure-Programs-HOWTO/random-numbers.html
>>411 391は見る気しないけどURLからドメインを抜く関数ってありますよ
>>412 issetで調べてね
>>413 前から知ってたけど作るもののレベルによるのではないかと限りなく唯一無二なら問題なし
最近winアプリの開発してて3年ぶりくらいにwebの仕事に戻ってきたんだけど ブラウザにキャッシュさせたくない時に cache-control, pragma, expire のヘッダ発行したら出来たと思うのですが・・・・。 IE6とFirefoxで動作確認したところキャッシュされまくりでした!! IE6で何か変ったんでしょうか?IE6でもキャッシュ無効出来てる人いますか?
過去のが入ってるだけで、毎回ちゃんとアクセスしてるならいいじゃないか。 それともキャッシュされちゃ困るほどセキュアな情報なの? Webアプリ屋も少しはHTTPを勉強して欲しい。
417 :
nobodyさん :2006/11/28(火) 23:29:21 ID:QkZ3aa/D
XREAのサーバーを利用しています MySQL(MySQL - 5.1.11-beta) の文字セットがUTF-8 Unicode (utf8) ということで データベースに入れたものをEUC-JPで表示しようとすると文字化けしてしまうようです。 他のサーバーでEUC-JPにて構築したサイトでして これからUTF-8に移行するには非常に手間がかかります どうにか簡単に解決する方法はありませんでしょうか? よろしくお願いいたします
設計ミスなら諦めて1から書き直すしかないんじゃない?
>>417 データベースに入ってるのがUTF-8で、表示するときEUC-JPにしたいなら
表示するときに変換すればいいのでは?
そのサーバーのPHPスクリプトの表示する部分だけちょちょいと書き換えればOK。
420 :
nobodyさん :2006/11/28(火) 23:43:19 ID:QkZ3aa/D
>>419 了解しましたー
どうでもです。
しかし、mb関数が使えないとかなるとおそらく面倒なんでしょうかね?
>>420 はい。泣いてください。
胸は貸しませんが。
PEARのソースを参考にソースの書き方とか勉強しようと思うのですが、 PEARのソースって綺麗ですか? 適当なものをダウンロードしてソースを見たら、 思っていたのとだいぶ違っていました。 見た感じ手続き型でしたし、 文法的にも動作的にも問題はないですがちょっと違和感がある、 書き方をしている箇所があったりと。(自分本位の視点なので自分がおかしいのかも) とりあえずPEARのソースは参考になると思いますか? それとも国産フレームワークのソースでも見たほうがいいでしょうか?
>>416 HTTPを勉強しないWebアプリ屋っているの?
いっぱいいるよ。特にPHPしか出来ないWebアプリ屋は。
PHP以外の言語だったら
>>387 のような問題が発生することは無い。
スマン。HTTPの勉強ってなんだ? HTTPの意味はわかるが、何を勉強すればいいんだ?
>>425 >PHP以外の言語だったら
>>387 のような問題が発生することは無い。
んなことねぇよボケ。
Cやっててネットワークの知識がないヤツだってたくさんいる。
>>413 そんなことを気にしてるほうがダメ人間だと思う。
PHPのセッションID生成方法について、ヲタ的には乱数がどうのこうので
ケチをつけたくなるのかもしれんが、現実的には十分に推測不可能だろ、それで。
簡易掲示板を作っているんですけど、 ログの読み取り方について質問です。 file()でログを読み込んで、 それをリクエストがあるたびに毎回読み込んでhtmlに反映してるのですが、 当然ログが長くなるとレスポンスが悪くなりますよね? そこでログに変更があった後、 htmlを更新し出力しなおすみたいなことをしたいのですが、 技術的に難しいでしょうか?
430 :
429 :2006/11/29(水) 02:38:45 ID:???
ごめんなさい。 言ってることがよくわかりませんね。 自分でもわからなくなってしまいましたorz 色々と試行錯誤してみることにします。 お騒がせしてすみません。
>>427 そりゃそうなんだけどCでやる事になった場合は
content-type出力して\r\n\r\nを出力してと一連の流れを把握するでしょ。
PHP使ってるとheader関数やcookie関数のおかげで内部で何やってるか
分からない奴がいっぱいいる。
>>431 C じゃなくても Perl でもprint "Content-Type: text/html\n\n"; とかは普通やるよね。
use CGI; すると重くなるし。
>>429 >>430 よくあるのは、書き込まれた時に、HTMLファイルを作っちゃう方法。
つまりその(PHPの)掲示板に最初にアクセスした時の画面と同じ見た目のHTMLを作っておくわけだ。
訪問者は、そのHTMLにアクセスする(最初の画面だけ)。
$a = "50"; //String $b = $a + 50; //String + Integer echo $b; //100 このソースに関して質問なんですが、 $b = $a + 50;の$aの部分は、 自動的にintにキャストされてるということなのでしょうか?
なるほどー オペレーターとオペランドをみて型が自動変換されるんですね。 結構ややこしいなぁ。 お答えどうもありがとうございました。
>>428 本当にそうだろうか。
例えば、俺がサイトAを作ってサイトBに対してセッションハイジャック攻撃を仕掛けるとしよう。
俺のサイトAからサイトBへリンクを貼り、被害者Cがそれをクリックする。
そうすると、俺はそのユーザのIPアドレス と クリック日時 を取得できるよね。
クリックしてから実際にブラウザがサイトBにリクエストを出すまでのラグがあるから、
取得した日時には 100ミリ秒の誤差があるとするかな。
ここで、php が combined-LCG を種として使っていないなら、100,000回 サイトBにリクエストを送るだけで
セッションハイジャックが成功することになる。ちなみに、10万アクセスは30分もあれば余裕で可能だ。(相手が標準的なスペックの鯖の場合)
php が使っている combined-LCG は、線形合同法と呼ばれる。
http://ja.wikipedia.org/wiki/%E7%B7%9A%E5%BD%A2%E5%90%88%E5%90%8C%E6%B3%95 つまり、被害者Cのアクセス前に自分も大量にアクセスして生産されたセッションIDを取得すればいい。
例えば、被害者Cが攻撃用のリンクをクリックした時点で、攻撃者がサイトBに大量にアクセスしてセッションIDを取得しまくる。
必要量の取得がおわったら、被害者Cに対してサイトBに対するリダイレクトを行わせる。
そして、その後、セッションの有効期限が切れるまでの間に、攻撃者が取得した大量のセッションIDをもとに、
逆関数を利用して combined-LCG によって生産された乱数をもとめ、さらに線形合同法の周期性を利用して
被害者Cがアクセスしたときに、combined-LCG によって発生された乱数を求める。
それと IPアドレスと日時を組み合わせた回数のリクエストをセッションの有効期限が終わる前におくれば、セッションハイジャック成功だ。
>>436 要するに . を使えば文字として扱われるし、+ を使えば数として扱われますよということ。
数として扱えない場合は 0 扱い。
440 :
nobodyさん :2006/11/29(水) 05:40:07 ID:jv+ZvP9Y
卓上の理論なんていらないんだよ。 実験したものを見せろ
>>440 個人が実験してセッションハイジャックが成功するレベルなわけないじゃん
これは共通鍵・公開鍵方式の暗号で、個人のPCでは解読に1000年かかっても、
日本一のスパコン(東工大のスパコン)を使って1ヶ月で解読できるなら、脆弱な暗号方式って呼ばれる。
じゃあ、実際にハイジャックを成功させることを考えようか。
まず、相手のサーバがボルトネックになってくるよね。
だから、相手のサーバは日本一、いや、世界一の性能を持つスパコンということにしなくては。
あと、php のセッション維持期間はデフォルトでは 24分 だけど短時間で解読するのはむずかしいから
とりあえずセッション有効期間は 1年ぐらいにしよう。
session.cookie_lifetime 31536000 っと。
あと、インターネット網はラグがあるから、LANでスパコンと直結だな。
ついでに暗号の解読の演算用に世界一のサーバ・・・、はもうないから、世界二のサーバを用意。
あとは、暗号解読に秀でている研究者を10人ぐらいやとって半年ぐらいかけて解析用プログラムを作ってもらって実行。
そうすりゃ、たぶんセッションハイジャックが成功すると思うけどなー。
先生、すごそうな話でついていけません。
なんで、セッションハイジャックするときにsession_idを解析しようとする? 通信自体が盗み取れたときが問題なんでしょ? それよりも、session_idをリジェネレートしたときに、 改めてCOOKIEを送りなおすのは止めれないのか? 2回同じ値のCOOKIEがhttpヘッダに書かれているのは気持ち悪いんだが。
session.entropy_length は 16 じゃなくて 32 でした。
なんでセキュアな話をしたがるやつは、SSL使わないんだよw
>>448 SSLとは関係無いセッションハイジャックの話をしているわけだが
もっと分かりやすく言えば、SSLを使うことは大前提で、それより高度なセキュリティ確保の話をしているわけだ
>>437 と
>>441 は別人だと仮定してレスする。
>>437 よ、君の仮定には大きな誤算がある。
それは、「被害者Cが君の計算通りに行動する確率はものすごく低い」ということだ。
時間の誤差とか何とか、それらとの掛け算で、君の仮定が成功する確率は現実的には極めて低い。
>>441 は、そんなアホな
>>437 に向けた皮肉だと俺は読んだ。
要するに「現実的じゃないぜ」ってことを遠まわしに皮肉ってるんでしょ?w >
>>441
こだわるなら独自で作れば良いだけだろ、シリアライズあるし滅茶苦茶簡単なのに 何で他人が作った物を批判したがるかな。そういう奴に限って決まって能力ないからな。
452 :
nobodyさん :2006/11/29(水) 12:10:39 ID:1l/WuAMq
質問です。 .qmailを使用し、メール受信と同時にPHPスクリプトを起動しようと思っているのですが うまくいきません。 .qmail-***には以下の様に記述いたしました。 | /usr/local/bin/php /path/to/script.php で、実際に動作テストをしてみるとスクリプトが動いていない模様なので メールログを見てみると Nov 29 11:58:50 IICL002 qmail: delivery 39: deferral: /usr/local/bin/php:_error_while_loading_shared_libraries:_libmysqlclient.so.14:_cannot_open_shared_object_file:_No_such_file_or_directory/ 上記のエラーが出ています。 /usr/local/bin/php /path/to/script.php 上記コマンドをコマンドライン上から入力するとプログラムは実行出来ます。 念のためlddで確認してみると ldd /usr/local/bin/php libmysqlclient.so.14 => /usr/local/mysql//lib/mysql/libmysqlclient.so.14 /2個が気になりますが一応セットされています。 パーミッションかな?と思いましたが違うようです。 どなたかご教授宜しくお願いいたします。
>>437 >俺のサイトAからサイトBへリンクを貼り、被害者Cがそれをクリックする。
フィッシングサイトに引っかかるやつの面倒まで見なくてもいいだろ
もういいよPHPは危ないみたいだからJavaに移行します
455 :
452 :2006/11/29(水) 12:36:03 ID:???
自己解決しました。 /usr/local/mysqlのパーミッションが足りなくファイルまで到達できなかったようです。 お手数おかけ致しました。
qmailではよくあること
お 外 に で る と 事 故 に あ う か も し れ な い の で 怖 く て 出 れ ま せ ん (笑)
>>452 適当なところで改行しろよ!!横スクロールバーがでたじゃないか!!
この低脳所得者市ねボンクラ!
459 :
nobodyさん :2006/11/29(水) 13:03:47 ID:uckTTJrX
-> と :: の違いって何ですか?
->インスタンス化してないと使えないメソッド ::インスタンス化してなくても使えるメソッド
ダブルコロンは先祖のプロパティを呼ぶのにもつかうな
463 :
nobodyさん :2006/11/29(水) 14:02:32 ID:+Stuj4pW
PHPでWebサービス作り方が載ってるサイト教えて。
気になることがあるので意見のある方いらっしゃいましたらお願いします。 GDライブラリで写真ギャラリーのサムネイルを自動で作るのを作ってみたのですが これって結構負荷高いのでしょうか? 作った画像を保存するようにして、まずファイルがあるか調べ、 ない時だけ作るようにすれば、作るのは一回だけなのでたいしたことないと思いますが、 サムネイルにとる場所をランダムでちょっと動かすようにしてみたのですが そのためには、保存しないで、毎回作らないとだめじゃないですか? 具体的には mt_rand ( 0, 1); で乱数発生させて、0か1かで座標に代入する数を変えて imagecopyresampled で画像を作り imagejpeg($thumb,null, 100); で表示させてます。 例えば、サムネイルが100枚くらいあるページで、毎日1000〜2000くらいPVがあるとしたら 結構やばめでしょうか? CPUとかメモリとかにもよるんでしょうけど、 スペックは管理先に問い合わせないとはっきり分かりません。 専用サーバーで、業務用に借りていて結構お金出してるはずなんで、 そんなにしょぼくはないはずです。多分…。 ちょっと微妙な質問かもしれませんが、たいしたことないよ〜とか、あれは結構重いよ〜とか 意見があればお願いします。
466 :
nobodyさん :2006/11/29(水) 15:40:32 ID:gqW8eidG
フォームで番号入力させて それをもとにHTMLファイル作成して そこに飛ぶようにしたいんですけど 作成したHTMLページにはどうやればとばすことできますか?
相手のPCの特定のポートが開いてるかを調べる関数みたいのあります?
>>468 関数はないけどtcpでアクセスしてみれば簡単に分かるよ
>>465 専用サーバなら負荷が高かろうが気にする必要はないのではアルマイト
>>468 順番にポートをスキャンしていけばいいジャン
472 :
466 :2006/11/29(水) 16:34:07 ID:gqW8eidG
>467 ごめんなさい、よくやり方がわからないです。 今はフォームのactionでhtmlファイル作成するページに飛ばして るんです。そこでまた作成したページに飛ぶ感じにしようと思ったんですけど かなり無駄なことしてますよね・・ なにかいい方法は?
473 :
468 :2006/11/29(水) 16:40:40 ID:???
>>469 ないんですかー
どうもありがとうございます。
tcpの知識がないので勉強してきます。
>>471 80番が開いてたら書き込み不可能とかにするつもりなので、
そういったことはしたくないのです。
80番あいてるからってプロキシとか限らないだろ低脳
串のポート番号は自由だからね
476 :
468 :2006/11/29(水) 16:52:44 ID:???
>>474 深読みしすぎですよ。そういう意図じゃないんですよね。
プロキシ弾くだけならおとなしくライブラリ入れますし。
書き込んだ人のIPを表示しているので、
アクセスされる可能性を視野にいれた措置です。
TCPを勉強っつーか 接続を試行して成功したらポートが開いてる、失敗したら閉じてる ただそれだけだ がんばれ
ポート番号80で調べるということは、自宅鯖持ちのやつを全部弾くつもりか まぁいいや、レッツPHPからソース盗んで改造しろ
>>466 何がわからんのかいまいち理解できないが。
1.フォームを表示
2.番号を入力させてサブミット
3.サブミットした値を元にHTML作成
4.結果を表示(作ったHTMLへ飛ぶってこういうことか?)
なら、HTMLの基本中の基本だろ?
で、3の部分でPHPを使いたいわけだ。
んで何が分からないの?
480 :
466 :2006/11/29(水) 17:32:34 ID:gqW8eidG
3のところでphpつかって作成して で4で作ったHTMLに飛びたいんです その4の部分がわからなくて・・ アホでごめんなさい
481 :
468 :2006/11/29(水) 17:39:43 ID:???
>>477 なるほど。HTTP系の関数の何かが使えそうですね。
もう少し色々と調べてやってみます。
>>478 >ポート番号80で調べるということは、自宅鯖持ちのやつを全部弾くつもりか
そうですね。
ただ、コメントを禁止するだけで、閲覧はできるようにします。
2chのような掲示板ではないですし、所詮個人サイトなので、
用件があればメールも用意してるし大丈夫だと勝手に判断しました。
それよりも鯖を運営してるIPで、ネットサーフは危険じゃないですかね。
>>480 いやだからさ、2のサブミット先をphpファイルにすれば、
そこで出力した結果がブラウザに表示されるだろ?
それが4なんじゃないのか?
483 :
466 :2006/11/29(水) 17:49:05 ID:gqW8eidG
いや、その時点ではまだHTMLファイル作成されてなんです 2で、飛んだPHPファイルでhtmlファイルを作って 4でさらにそのhtmlファイルに飛ぶかんじです やり方がおかしいですかね? やりたいこととしては、フォームで番号入力させて その番号のhtmlファイルを作って、そこに飛ばす って感じです
1.フォームを表示(前からあるhtmlファイル) 2.番号を入力させてサブミット(ここも前からあるhtmlファイル) 3.サブミットした値を元にHTML作成 (hoge.phpの処理) 4.作成したHTMLへリダイレクト(ここもhoge.phpの処理) 5.作成したHTMLが表示(さっき出来たhtmlファイル) ======hoge.phpここから====== ・前からあるhtmlから来たPOSTを受け取ってファイル作成の処理 ・作成したファイルへリダイレクトの処理 ======hoge.phpここまで====== つまりhoge.phpはブラウザに何かを表示する処理はないのよん
やり方がおかしいw
session_startが実行されているかどうか調べる関数ってあるんでしたっけ? 今は$_SESSIONを調べているのですが気になった
487 :
nobodyさん :2006/11/29(水) 18:47:24 ID:J9ZOlswS
tuika.php ソース <html><head><body><? echo "<table border='1'><tr><td>"; echo "<form action='tuika.php method='post'>"; echo "<input type='text' name='data_1'><br>"; echo "<input type='text' name='data_2'><br>"; echo "<input type='submit'value='データの追加'>"; echo "</form></td></tr></table>"; ?></body><html> kakunin.phpソース <html><head><body><? echo $_POST['data_1']; echo $_POST['data_2']; ?></body><html> 上のような感じで、tuika.phpで文字を打ち込んで、それがdata_1、 data_2としてkakunin.phpにポストされて、kakunin.phpでその内容が 表示されるというプログラムを作ったんですけど、kakunin.phpのソースを <html><head><body><? $p = 1; $q = 2; echo $_POST['data_$p']; echo $_POST['data_$q']; ?></body><html> という風に、data_以下の数字の部分を変更すると、ポストされた内容が 表示されなくなってしまいます。data_以下の数字の部分を記号で表すように したいのですが、一体どうすればいいでしょうか。誰か教えてください。
488 :
487 :2006/11/29(水) 18:50:57 ID:J9ZOlswS
あ、すみません、tuika.phpの4行目は正しくは echo "<form action='kakunin.php method='post'>"; でした。
>>483 だから
>>467 で回答してあるんだからマニュアルでheader()関数ぐらい調べろよ
http://jp.php.net/header の「2番目の特別なヘッダは、」あたりに書いてあるだろ
やりかたわからないです
とかいう前にわかろうと努力すらしない
おまえはいつまでたっても進歩しないだめ人間だ
プログラミングとか向いてないからさっさとやめたほうがいいよ
490 :
nobodyさん :2006/11/29(水) 19:31:43 ID:OZta3BjG
>>487 シングルクオートの中では変数は展開されない。
echo $_POST['data_'.$p];
echo $_POST['data_'.$q];
とか
echo $_POST["data_{$p}"];
echo $_POST["data_{$q}"];
とか書くべし。
あと4行目、
>>488 でもおかしくない?kakunin.phpの後ろにシングルクオート要るでしょ。
491 :
466 :2006/11/29(水) 19:34:15 ID:gqW8eidG
ごめんなさい、まじでいそいでて。 header("Location:$text.'.html'"); で飛ばないんですがなぜ?
491がスルーされますように。。。
493 :
487 :2006/11/29(水) 19:55:47 ID:J9ZOlswS
例えば変数内に”test.gif”などとファイル名があったら 表示(echo時)に自動的に<img src="test.gif">のように することってできるのでしょうか?
意味不
>>491 今日はまだ4時間もある。
とりあえずマニュアルを読んできなさい。
498 :
415 :2006/11/29(水) 20:41:58 ID:???
>>416 多分、直近レスのせいでキャッシュリミッタに固定観念が入っちまったんだとは思うが、俺が聞いてるのはブラウザの挙動の話
ヘッダ情報は正しく送られているのは確認済で挙動が昔と違うわけな
ずっとwebやってた奴なら何か変化があったか情報を持ってるか?聞いた方が早いと思うわけ
ヘッダ情報を処理するのはあくまでブラウザだからな、ブラウザの実装によって動きが変って当然なのな、分かる?
結局、vmに残ってたwin98のie5と比較したら、やっぱり挙動が変ってたな
>>441 何か難しそうな事言ってるつもりみたいだけど演算なんて必要ないよw
500 :
nobodyさん :2006/11/29(水) 21:00:05 ID:Ob2oQ/dq
PHPの開発にeclipseを使いたいのですが、これはEUCに文字コードを設定すると 「ー」が文字化けするとかなんかあるんですけど、ファイルの文字コードはEUCですよね?
>>441 ぷっ。よくこんな幼稚なこと平気で書けるな。
>>494 $text = 'screenshot.gif';
$ext_pattern = 'jpg|gif';
$text = preg_replace('/(([a-zA-Z0-9-_]+)\.(?:'.$ext_pattern.'))/', '<img src="$1" alt="$2" />', $text);
echo $text;
502 :
軟式PHP :2006/11/29(水) 21:14:32 ID:???
久々にきたら凄い奴が登場してるなwww
貴様らにはセキュアという言葉の意味がわからないようですね^^;
PHP5ってどうなの?
>>503 それを気にするなら、まずネットから切断するべきですよ
>>494 >例えば変数内に”test.gif”などとファイル名があったら
>表示(echo時)に自動的に<img src="test.gif">のように
if (strpos($a, "test.gif") !== false) { echo "<img src=\"test.gif\">; }
508 :
nobodyさん :2006/11/29(水) 22:19:23 ID:Ob2oQ/dq
apachebenchってguiで動かせませんか?
>>507 そんなんでいいの!?いくらなんでもしょぼすぎる気が...
510 :
494 :2006/11/29(水) 22:21:14 ID:???
>>501 まさにこれです!ソースまでいただき、ありがとうございました。
513 :
501 :2006/11/29(水) 22:32:19 ID:???
>>510 どういたしまして。そんなに喜んでもらえるとこっちもうれしいよ(ノ´∀`*)
514 :
nobodyさん :2006/11/29(水) 22:47:14 ID:1R8/2qI8
質問させてください。 今日から始めたばかりの初心者です。 テキストボックスに文字が入った時のみ表示させるプログラムを作ろうとおもって 書いてみたのですが123とかの数字だけ表示されてABCなどの文字を入れるとelseになってしまいます 数字も文字も表示させる方法を教えてください。 $post = $_POST["post"]; if(strlen($post>0)){ print($post); } else{ print("エラー");
どうみても釣りだろう・・・今日はこんなのばかりだな
× if(strlen($post>0)){ ○ if(strlen($post)>0){
くだスレで釣りとか言うなカスが
518 :
nobodyさん :2006/11/29(水) 22:56:48 ID:1R8/2qI8
>>516 さん
ありがとうございました。助かりました。
ほうっとけよカスなんだから。
自作自演乙
>>453 フィッシングサイトからリンクされている正規のサイトを見た人の面倒は見る必要あるだろうが。
その理論でいったら、2chから三井住友銀行(正規サイト)のリンクを踏んだ人が被害にあっても無視できるのか?
勿論その被害者は、
・ドメイン名が正規の三井住友銀行であることを確認した。
・SSLサーバ証明書が正規のものであることを確認した。
という条件な。
523 :
nobodyさん :2006/11/30(木) 05:12:14 ID:sNmjvtK7
質問です。 数百行x4列のcsvファイル(10KB強)を同一プログラム上で複数回読み出すのと 1回読んでそれを全部2次元配列に入れて、その後は配列からデータをひろうのでは どちらが負担が軽いでしょうか? どちらも同じくらい、もしくは配列に入れちゃう方が負担が軽いならばそうしたいのでですが。
ベンチとってやりゃいいじゃない。 と言いたいが、 10kb程度なら体感あまり変わらないでしょ。
ベンチとかやりゃいいじゃない。 と言いたいが、 10kg程度なら体感あまり変わらないでしょ。 って見えた。
>>523 10KBくらいならメモリ食ったうちにも入らないから配列に入れちゃった方がいいんでない?
CSVファイルが単純なカンマ区切りならどっちでもそんなに変わらないけど、
ちゃんとエスケープ処理されてるExcel互換CSVファイルなら
展開が少し重くなるから、何度も展開しない方が多少は早い。
まー、でも1000行にも満たないレベルじゃたかが知れてそうだけど。
そんな負担を気にするぐらいに、ヘボマシンか、アクセス過剰なのか?
「%u3042」を PHP で「あ」に戻す方法はないでしょうか? urldecode() や mb_convert_kana() ではないみたいですし。
531 :
523 :2006/11/30(木) 12:12:40 ID:sNmjvtK7
>>524 ,526
あ、そんなもんなんですね、
いや、最近始めたものでその辺の感覚がよく分からなかったので。
ありがとうございます。勉強になりました。
>>529-530 ありがとうございます。
ユーザーノートにある unicode_urldecode() を
ベースにうまくいきました。
うひひ
連想配列と連想配列の合体みたいな事って出来るのでしょうか? 例えば $a=array("テスト"=>"$test"); $b=array("ホゲ"=>"$hoge"); ↑上記二つを合体して↓ $c=array("テスト"=>"$test","ホゲ"=>"$hoge"); みたいに出来たらいいのですが、可能でしょうか? 意図は$aと$bの配列の値がフォームの入力値によってことなるからです。
もちろん出来るぜ
$c=array_merge($a,$b); こうですね。
$c = $a + $b; とか。
538 :
nobodyさん :2006/11/30(木) 14:39:16 ID:sFslmVcl
フォームのセクリティについて質問させてください。 htmlspecialchars ENT_QUOTES mb_SubStr mb_convert_kana などを使って一応意識してるつもりなのですが、 フォームから「あああああああああ」と入力された場合は大丈夫なのですが、 URLから直接↓このように入力されるとちょっと無理的な現状なのですが index.php?q=あああああああああ なにか良い対策はありませんか?
何 が 大 丈 夫 な の か ?
お知恵をおかしください。 Debian GNU/Linux 3.1 apache2.0.54-5sarge1 (aptでインストール) php-5.2.0 (ソースからインストール) 上記のような環境で、*.php にブラウザからアクセスするとメモ帳などが開いて 生ソースが表示されます。 以前 php-4.4.3 を使用していたときは正常に動作していたのですが、 なぜか挙動不審になってしまいます。 /etc/apache2/httpd.conf には LoadModule php5_module /usr/lib/apache2/modules/libphp5.so の行もありますし、/etc/apache2/apache2.conf では AddType application/x-httpd-php .php の記述もあります。 なにか原因として思い当たることはありますでしょうか。 ちなみに、apache2 の動作が不審だったため、apt-get remove apache2 を行い、設定ファイルのいくつかがデフォルトに戻ってしまったのも 原因のうちかもしれません。
>>540 メモ帳が開くって事からエスパるとurlでアクセス汁
purgeしなきゃ設定ファイルはそのままだろ
545 :
nobodyさん :2006/11/30(木) 15:48:30 ID:G4M0iaJf
昨日のAsial社主催のセミ受講した人いる? どんな感じだったでしょうか
546 :
nobodyさん :2006/11/30(木) 16:10:33 ID:HTGu5qKm
Mysqlのテーブルにデータを追加するinsert文の中にループを組み込むことは可能でしょうか 例えば mysql_query("insert into table_1(ID_C)values while ($a < 4){ ('999'), $a++; } ('999')"); こんな感じで、$aの値が4になるまでテーブルのID_Cというカラムの中に999という データを入れるプログラムを作りたいんですけど上手く行きません。誰か教えてください
断る
>>546 可能だけどそれはMySQLスレで聞いといで
549 :
nobodyさん :2006/11/30(木) 16:19:43 ID:HTGu5qKm
>>546 for($a = 0; $a < 4; $a ++) {
mysql_query("insert into table_1(ID_C)values('999')"),
}
でいいんじゃないのか?
551 :
nobodyさん :2006/11/30(木) 16:42:03 ID:tD1Wqo8l
UNKO
553 :
487 :2006/11/30(木) 17:11:32 ID:HTGu5qKm
ディレクトリ内のファイルを別のディレクトリにコピーする と言うのをやろうとしているのですが、コピー出来ません。 どこがおかしいのでしょうか? $dir_name="./moto"; $dh = opendir($dir_name); while($file = readdir($dh)){ if ($file != "." && $file != "..") { copy("$file","to/$file"); }
copyの第一引数がおかしい
つかエラーメッセージ見ればすぐ分かりそうなもんだけど コーディング中にエラー抑止とかありえないっす
557 :
554 :2006/11/30(木) 20:04:28 ID:???
failed to open stream: No such file or directory in と出るのですが、コピー先のディレクトリはあります。
copy($dir_name."/".$file,"to/".$file);
ネタは他所でやってくれ。
ネタじゃないです マジレス希望です
駅前留学したら?
>>561 そういう意味不明で無駄なことを書くなカス
はじめたばかりの初心者です。 質問させてください。。 $str = $_POST["atai"]; if(strlen($str>0)){ print($str); } else{ print("エラーです"); この場合textに書き込みがあれば表示し、書き込みがない場合エラーですを 表示したいのですが最初から「エラーです」が出てしまいます どのようにすればよいのでしょうか。。
最近、あちこちのスレにこの手の房が増えてんだよな・・・
夏休みとか長期休暇の五月蝿さと比べたら、別に大した事はないような。
567 :
563 :2006/12/01(金) 00:19:28 ID:???
>>564 ありがとうございます。
なおしましたがやはり最初の時点で「エラーです」が表示されてしまいます。。、
どこがいけないのでしょうか。
送信ボタンを押したら出力させたいのですが。。
申し訳ありませんがどなたか教えてください
var_dump($_POST["atai"]);してみそ
569 :
563 :2006/12/01(金) 00:43:50 ID:???
$str = var_dump($_POST["atai"]); if(strlen($str)>0){ print($str); } else{ print("エラーです"); ありがとうございます。これでやったところ string(0) "" エラーです と出力されてしまいます。すみません引き続きおねがいします。。
<?php $str = var_dump($_POST["atai"]); ?> だけで試してみたら?
>>569 var_dumpでstring(0) "" が出力されることは
$_POST["atai"]が空ってこと
だからstrlenでも 0 が返る
NULLじゃないから一応定義されてるみたいだけど
572 :
563 :2006/12/01(金) 01:08:56 ID:???
ありがとうございます。そういうことなんですか。 さきほどので試したところNULLのみ表示されました。 最初は無表示でボタンを押すと空の場合エラーですという出力にその関数が必要なのですか?
var_dumpは主にデバッグに使うものだと思うけど
>>567 そもそもボタンを押す前はそのプログラムを動かさなきゃいい。
フォームを表示するプログラムと、そのデータを受け取るプログラムを分けれ。
$_GETS["m9"]
$_GETS["9m"]["m9"]
>>572 先頭でprint_r($_POST);するとどうなってる?
>>577 そんなん言ったところでNULLってなんですかレベルのやつに意味分かるわけないし。
579 :
nobodyさん :2006/12/01(金) 11:32:09 ID:pNXMUOFK
<? $test = "test"; ?> <?=$test?> ってやると$testの中身がprintされるんですが、これはマニュアル等にあるきちんとした仕様ですか? 基本的な文法からするとすごい意外だったんですが・・。
>>579 確か <?= は <?print と等しかったと思う。
ただ、それ、ショートタグを有効にしてないと使えないよね。
<?php= $test ?>
とかやってもできないしorz
ショートタグ関係の機能なんじゃないかな。
583 :
580 :2006/12/01(金) 11:50:48 ID:???
585 :
nobodyさん :2006/12/01(金) 11:56:14 ID:pNXMUOFK
ありがとうございました、マニュアル自分で探せばすぐでしたね。 横着はいけないなと・・。 ショートタグを活用したことが無かったので意外だったんですよね。 構文エラーじゃないのかと思った次第です。 <?=$test?>
Ver.5とかになってるphpでそれはないだろうw
ショートタグキライ
俺はつかいまくりんぐ。
俺も使いまくりだな。 まぁ、単純な置換でショートタグから普通の構文にできるんで、好みでやればいいかと
590 :
nobodyさん :2006/12/01(金) 15:44:49 ID:mT/4eJy6
質問です FORMに数字しか入力させないようにしたいのですが なんの関数を使えば良いでしょうか
ereg()
593 :
nobodyさん :2006/12/01(金) 16:02:12 ID:NWvcMdwA
array_walk()ってarray_map()の自爆関数版?
594 :
nobodyさん :2006/12/01(金) 16:05:26 ID:mT/4eJy6
本スレが全く機能していないのでこちらで質問します。 FPDFを使ってPDFファイルを作成しました。 index.html→ex.php(IE上でPDFが表示される) は問題ないのですが、ブラウザで表示するのではなく、 ファイルとしてダウンロードさせようと思います。 それで、ex.phpの上部に header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="ex.pdf"'); と記述したのですが、ファイルのダウンロードが出来ません。 もしご存じの方は、どうすればいいか教えていただけないでしょうか。
<?php $path_file="c:/httproot/hogehoge.pdf"; $content_length=filesize($path_file); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment ; filename=aaa.pdf"); header("Content-Length: ".$content_length); readfile($path_file); ?>
本スレなんてないはずだが? と回答もしないであげ足とるなよおまえらw
ブラウザはMIME-Type(Content-Type)を判断して動作するから Content-Typeを application/octet-stream に変えてやればいい
いやマジで気になる。本スレってどこ!?
俺がここが本スレと言ったところで、判断するのは結局お前自身なんだぜ?
はるか昔… 本スレとくだスレという、互いを意識しあう二つのスレが存在した。 本スレに住む住人は、「くだスレいらなくね?」と思い、くだスレに住む住人は、「本スレいらなくね?」と思っていた… そんな拮抗した時代はもろくも崩れ去った… 本スレ住人とくだスレ住人の戦争が勃発したのである。 続く↓
603 :
596 :2006/12/01(金) 20:25:17 ID:???
>>597 ,599
ありがとうございます。
試しに597さんのソースをex.phpの上部に貼り付けて
$path_fileをプログラムがある場所を指定したのですが、
ダウンロードはされるものの、作成されたファイルを開けません。
(なので、作成失敗していると思います)
604 :
nobodyさん :2006/12/01(金) 20:27:32 ID:ZL9qk5lm
IDとパスワードでログイン認証してる会員制サイトがあるのですが、 あるユーザ(例えばID=10)がログインしてるとき、IP等だけでなく、 IDもapacheのログに追加出力するにはどうしたら良いのでしょうか?? IDの内容は$_SESSIONで持ちまわっています。 apacheのログ出力設定の何かをいじるのだろうと思いますが、 ググってもいまいち望みの結果が検索できませんでした。。。
Apacheのログ形式に成形したのに、 IDを付け加えた別のログを吐くしかないのでは?
phpでsetenvしてapacheで受け取れんの?
自作のphpにtelnetからPOSTで入力を試してるのですがうまく行きません。 phpはinput.htmlのsubmitボタンからhoge.phpを呼んでいます。 ブラウザーからはうまく行きます。 input.html <form action="hoge.php" method=POST> <input type="text" name="name"> <input type="submit" value="submit"> </form> hoge.php <?php $fh = @fopen("piyo.txt","a"); fputs($fh,"$_POST[name] ああ\n"); fclose($fh); ?> <a href="input.html"> telnetでの入力 telnet localhost 80 POST hoge.php HTTP/1.0 Content-Length: 6 name=1 と入力してます。しかしpiyo.txtには何も入力されずああが増えるだけです。 どなたか原因を教えてもらえないでしょうか?
>>604 別々にログとって、後で合体させるスクリプトでも書けばおk
apache_setenvを使えばカスタムログから参照可能
610 :
607 :2006/12/01(金) 22:18:29 ID:???
自己解決した。 Content-type: application/x-www-form-urlencoded を入れるとうまく動いた。
611 :
607 :2006/12/01(金) 22:21:35 ID:???
自己解決した。 Content-type: application/x-www-form-urlencoded を入れるとうまく動いた。
612 :
607 :2006/12/01(金) 22:22:13 ID:???
自己解決した。 Content-type: application/x-www-form-urlencoded を入れるとうまく動いた。
functionの中でwhileを使ってDB(MySQL内)のデータを出そうとしました。 function entry($val){ $con = mysql_connect(localhost, root, test); $selectdb = mysql_select_db($DBNAME, $con); $sql = "select * from datatable"; $rst=mysql_query($sql,$con); echo "<select name=\"datalist$val\">"; echo "<option></option>\n"; while($row=mysql_fetch_array($rst)){ echo "<option value=\"$row[name]\">$row[name]</option>\n"; } echo "</select>"; } 表示側は <? entry(1);?>などとしています。 <select name="datalist1"><option></option></select>は表示されるのですが、 whileの中が表示されません。どこがおかしいのでしょうか?
>>614 大して読んでないが
whileの中を
echo "<option value={$row['name']}>{$row['name']}</option>\n";
でテストして味噌
616 :
614 :2006/12/02(土) 01:07:52 ID:???
>>615 ありがとうございます。ただ、特に変わりないです・・・。
617 :
nobodyさん :2006/12/02(土) 01:29:25 ID:C/1Qwb+b
FC4にyumコマンドでphp-5.0.4をインストールしたのですが zip関数を有効にするにはどのようにしたらよいでしょうか。 どなたかご教授頂けると恐縮です。
while の中で print_r($row); するとちゃんと値出る?
619 :
618 :2006/12/02(土) 01:36:21 ID:???
620 :
614 :2006/12/02(土) 01:42:30 ID:???
>>618 いえ、出ません。そしてソースを見ると以下のようなエラーが出てます。
<b>Warning</b>: mysql_fetch_array(): supplied argument is not a valid MySQL
result resource in <b>C:\Program Files\Apache Group\Apache2\htdocs</b> on line <b>10</b><br />
たぶんwhile内のmysql_fech_arrayが読み込めないっぽいです。。
氏ね
MySQLのあるフィールドの値に1加算する場合って 一旦mysql関数で現在値データ拾ってきて、それにphpで+1して UPDATEするしか無理でしょうか? 直接MySQLへのクエリーのみで+1することは不可能でしょうか?
>>624 いくらなんでもMySQLを馬鹿にしすぎだろ
まぁ、PHPの話題ではないけどできるはずだ
それができないと、会員番号とかプログラム的に増やさないといけないし、 同時にリクエストきたらプログラム対応じゃ面倒だろうがw
update table1 set field1 = field1 + 1 where id = ・・・; こんな感じだったっけ?
mysql系で質問してる奴、同一人物だろ・・・ sqlのマニュアルくらい読めよ
上の人とは別人ですが、 MySQLでorderというフィールドを作成して、 順番データを入れたいと思います。 それを参考に、phpで表示させる、という流れです。 今やってる苦肉の策は 指定データ(行)のorderの値だけ1加算する、というかたちです。 これだとorderが10のデータと順番を変えようと思ったら、 10回動作させなければいけません。 orderデータに一意性を持たせて、、、 みたいなことも考えましたが、いかんせんかなり面倒な感じになりそうです。 どんなロジックでいけばいいのかわからないのですが、 何かよい方法はないでしょうか。
>>629 orderが今10のやつを3に変更しようとしたら、元々3のやつを4に、4のやつを5に…と
全部ずらしていかないといけないって話?
update table set order = order + 1 where order >= 3 and oeder < 10;
update table set order = 10 where id = '元がorder=10のレコードのID';
の2回updateで終了の気がするけど。
>>630 下のsetはorder=3だった。まぁ分かるよね。
perlのuse integerみたいな設定?ってphpにはないですか?
>>632 他のプロセスがflockしてるときにさ、
(1)LOCK_NB無しでflockしようとする時(通常)
他のプロセスがflockが終わるまで待機する。
(2)LOCK_NB有りでflockしようとする時
flockはあきらめて先に進む。
>>634 わかりましたどうも。
しかしそれって不完全で、あんまりflockしている意味ないですね・・。
使い方によるよ。君のロックの考え方が一辺倒なだけ。
>>635 flockは成功するとTRUE、失敗するとFALSEだから
LOCK_NBありのときは返り値を見て処理を変更するとか、
結構使いどころはあるよ。
なるほど、LOCK_NBでfalseの時は、別処理にするとかですか。
本当に下らない質問なんですが、 WindowsのPHP4.4.2でfopenでURIを読み込もうとすると、apacheがエラーになります。 (WindowsXPで一般保護エラーのダイアログ?が出る。ご不便をおかけして申し訳ありません。のやつ) 何かモジュールを組み込む必要がありますか?
前に特定のバージョンのApacheでそんなバグが出てた報告見たよ。 Apacheをアップデートしてみたら?
642 :
nobodyさん :2006/12/02(土) 10:56:39 ID:h5X/zZpV
640です。追記です。php.iniは、 allow_url_fopen = On になってます。
643 :
nobodyさん :2006/12/02(土) 10:57:19 ID:h5X/zZpV
644 :
614 :2006/12/02(土) 11:31:04 ID:???
>>623 だいぶレスが遅れてすみません。。$conの問題ではないです。
function内ではなくrequireで読み込むと表示されますし、
function内でもwhileの箇所を$row=mysql_fetch_array($rst);
にすると1行出力されます。
だからfunction内でwhileを使えないのか?もしくは何か設定があるのか?
っと思い、質問した次第です。リファレンスとか見まくったのですが、解決しません。。
print_r($row);してみそ
>>644 そんなん無い。whileくらい使えて当たり前。
>>623 はconnectに問題とか行ってるがqueryの可能性も高い。
まずはconnectとselect_dbとqueryのそれぞれ直後に print mysql_error(); を入れること。
そもそもconnectとselect_dbとqueryとで戻り値チェックもしてない時点で君は大バカ。
ちなみに予想は「select_dbに失敗していてその後のqueryが実行できてない」だ。
1行だけ成功したパターンってその関数の実行前にすでにconnectとselect_dbを実行してて
改めて実行しなくても動く状況にすでになってたんではないかな。
(connectは同じパラメータで再connectかけると前のconnectをそのまま使う)
当ったら10回お礼を言うように!
>>645 どうしてそういう遠回りで無意味なデバッグ方法を示唆すんの?
それともお前は普段そんな変なデバッグ方法をとってるのか?
648 :
629 :2006/12/02(土) 11:42:19 ID:???
>>630 そのやり方の場合、
orderの値を全て把握していないと厳しくないでしょうか?
例えば、
a(order=100)
b(order=50)
c(order=3)
と並んでいて、
cを上に上げるためにはbのorder値と、
bをaの上に上げるためにはaのorder値と比較しなければいけないですよね?
MySQLでorderの直近の上の値をチェックできれば楽かと思いますが、
phpで実現しようと思うとかなり面倒なコーディングになるような気がするのですが・・。
>>648 なんでorderの値を連番にしないの?
>>639 ないですか。
整数演算はぜんぶFPU命令なんですね・・。
>>650 いや、PHPは演算データにfloat型を混ぜない限りはintで全部計算するよ。
652 :
614 :2006/12/02(土) 11:52:35 ID:???
>>646 おっしゃる通りでした・・。
この掲示板ではわかりやすいように
>>614 と書いたのですが、
実際は$con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)と
変数にしていました。
これを変数ではないサーバの設定に変えたところ、問題なく表示されました。
デバッグの方法も頭から抜けていました。大変勉強になりました。
昨日からご迷惑おかけしました。ありがとうございました。
>>651 おお、混ぜなければいいんですね。
ありがとうございました。
654 :
nobodyさん :2006/12/02(土) 12:22:46 ID:h5X/zZpV
>>641 apacheを2.0.59にアップデートしてみましたが、やっぱりエラーが表示されました。
2.2系にアップデートしないといけないかもしれませんね?
>>654 ごめん。過去ログ確認したら間違ってた。
それ、Apache側じゃなくWin版PHP4.4.2のバグ。4.4.3以降で修正済み。
◆質問する時の注意 ・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ) ・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。 ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
>>648 select order from table where order > 3 order by order limit 1で
一発で直近のorderの値くらい取得できると思うんですが。
658 :
nobodyさん :2006/12/02(土) 17:01:10 ID:uxBQAy5h
テーブルに検索をかけたときに 以下のようにして、見つかったら true なければ falese で条件判断をして 処理を行うということをしたいのですが・・・ $query=mysql_query($db_open,"SELECT * FROM abcd WHERE A='table'"); if($query==true){ } または、 if($query==falese){ } これって正しいのでしょうか?違っていましたら、正しい記述の 仕方を教えていただけませんか?
そろそろPDO使おうぜ
>・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
>>648 MySQLのバージョン次第では副問合せでいけそうだが。
662 :
658 :2006/12/02(土) 17:38:00 ID:2AsRSHi/
>>659 ご回答ありがとうございます。
マニュアルを見たのですが、先ほどの例の場合、どう記述するかが
掴めません。よろしければ、お教え願えないでしょうか?
mysql_num_rows
>>624 クエリーだけで+1できるよ。
UPDATE テーブル名 SET `hoge`=`hoge`+1 WHERE 〜
っていうか、使い方にもよるけど、
MySQLのオートインクリメントを使えばいいと思うが。
>>664 オートインクリメントで+1できるのはinsertであって
updateしたい要望とは全然噛み合ってない気がするが。
つーか
>>627
>>658 正しくない。mysql_queryの戻り値はSQL実行でエラーが出たかどうかであって
データが見つかったかどうかではない。
データの有無は取得されたデータを見ないとダメ。
>658 正しいかどうかは動かしてみればわかるだろ。
マニュアルを全く見ていない奴に手取り足取り教えてくれるスレなんですね
まぁ、くだ質なんてそんなもんだ
教えたいだけの人こそこういうスレに入り浸らないほうがいい マニュアルを見ないなら見ることを教えるほうがずっといい ごく単純なことだと思うが
うるさいなー
バカの将来なんて俺の知ったことか。
教えてクンは量産するけどマニュアルの読み方は教えない、か お前のほうがよっぽど馬鹿と言われるに相応しいねえ
よっしゃ、とりあえずジュリーの時の過ぎゆくままにを聴こうぜ
バカが自己満足するために作ったスレで説教うざいんだよ。
勝手な脳内定義を持ち出されても それで納得できるのは馬鹿であるお前だけだよ 常識ないなあ
だってこのスレ立てたの俺だもの
俺だよ俺、俺!
バカが自己満足してるから説教されてるんだろバカw
>>1 がどんな意図で立てようが知ったことじゃないし。
だいたいくだ質のパートスレとしか書いてないのに誰に伝わると思ったんだろ。
沢田研二はなんなんだよ
こいつらマジに取ってるよwww
ノノノハヽ ∋ノノノハ∈ @ノハ@+ (( (0^〜^∩ (^▽^ ∩ (‘ д ‘ ∩ )) ⊂ 中退 丿 ⊂中卒 丿 ⊂専門卒丿 ♪ + ( ( ( ( ( ( ( ( ( ∧_∧ + ノハヽヽ (_(_) (_(_) (_(_) /ハ)ヽヽ + ( ´__ `) ♪ ♪ (´ー ` ●) ( あなたつ 差別をなくして明るい社会 ⊂修士終了 ) ) ) ) 同じ人間同士仲良くしましょう ( ( ( (_(__) ♪ (__)_) ノノノハヽヽ ∂/ハ)ヽ ノノノハヽ ♪ 川^ v ^ 从 (〜^◇^) 川 ゚ ___ ^ ノ|| ( 高専卒 つ、( 大卒 つ、(博士終了つ、 + ) )ヽ_ノ ) )ヽ_ノ ) )ヽ_ノ + (__) (__) (__)
敗北宣言キター
>>671 君のような事を言う人間を何人も見てきた。
さぁ、現状を見たまえ。
そして、その主張が全くの無駄だという事に気付け。
精神衛生上、二度とこのスレに近寄らない事を強く推奨する。
>>688 去年も同じフレームやってただろお前w
馬鹿にはそう見えるのかも知れんが、マニュアル読ませず手取り足取り教えるだけのスレか?
判例が上に山ほどあるぞバーカ
精神衛生上ってなんだろ とくに問題を感じたことはないんだけど?
ちなみにマニュアル読んでない相手に手取り足取り教えた回答ってどれさ?
板違いかもしれんが、ちょっと前にアダルトサイトを見ていたのだが、
そんで、動画が見られそうだから動画見ようとしたら、音声しか出ないもんで、
なんかダウンロードしなきゃいけないんかと思いつつ、動画の下の方の英語見てたら、
Click hereだったかな?そこを押したら動画が見れると思ってそこをクリックした。
そしたら、とりあえず動画は見られたわけだが、翌日、ネットやってるとアダルトサイトのポップアップみたいなんが出てきた。
放っておいたら勝手に出てきやがる・・。。。
いくらスキャンしても解決しない。。
これはどうすればいいのだろうか。。orz
クレジットカードが心配だ。。まぢで教えてくれ。たのむ。
参考までに、そのアダルトサイトのURL載せとく。
ttp://kampamba.banchitos.com/index.html このエロサイトの画像何でもイイからクリックして、
そんでまた画像あるからそこの画像をクリックしたら動画が見られる。
頼む!本当に助けてくれ。。。
道徳語られて反抗心もやしたガキだろw
エロサイトかスパイウェアの宣伝じゃね?
どっちかというと手取り足取りっつーか鼻くそほじりながら適当にレスするスレだよな
まぢか。。 いくら消しても、時間がたつと出てくるのだが。。 これは家族のパソコンだからマヂヤバイんだが。。
>>695 お前ハナクソほじってたのかよ!近寄るなボケ
今、スパイウェア駆除でググってみたら、ダウンロード出来るサイトがあった。 一回それでやってみるぽ。
>>688 俺もお前みたいのを何人も見てきた。
いいかげん学習したら?
700 :
nobodyさん :2006/12/02(土) 20:38:51 ID:4l/VpbTL
printとecho forとwhile eregとpreg_match どちらを使うようにすればいいのでしょう?
どっちでもいいよ いまエロトロイでそれどころじゃない!
703 :
699 :2006/12/02(土) 20:51:50 ID:???
>>702 ああ言うの見て学ぶことなんて特にないよ
それに一番って何?
>>700 個人的な趣向を交えて言えば、
・printとecho
通常はechoだけど、printは値を返すらしいので、たとえば
kansu() or print("kansu失敗");
とかできるみたいだ。一度もやりたいと思ったことないけど。
・forとwhile
何かを順次処理するときはできるかぎりfor。それ以外はwhile。
あとは、while ($row = DBからfetch系())のようなイディオム次第。
・eregとpreg_match
pregのほうが強力なので、pregを常用。
ついつい長々回答してしまったorz
705 :
700 :2006/12/02(土) 20:53:47 ID:4l/VpbTL
>>701 ありがとうございます。
ふだんはforを使ってるので、whileの文法を忘れてしまう事が…
入門書にはeregの事が書いてあって、pregが一切なし。 人のソース見るとeregではなくpregを使ってる方が多いような気がしたので、どうなのかと思っていました。
>>704 順次処理ってのは初心者には分かりにくいかなあ
PHPの話じゃないから省いたのかしらんが
一人で何やってんの?
>>706 なんていうか$i++とか$j--とか$iter->next()みたいな、「次のステップに行くための処理」が別個に必要なときは、できるかぎりforを使いたいかな。
whileのブロックの終わりのほうに$i++等を書くのは、極力避けたい。
>>705 pregはPerlの独自拡張で複雑だから、入門書は基本的なPOSIX仕様のeregにしたのかもね
pregでマルチバイトを処理するには、文字列をutf-8にしてuオプションつけなきゃいかんことあるし
ていうかエロトロイに礼なんか言うなw
710 :
nobodyさん :2006/12/02(土) 21:19:30 ID:dk8eu7iU
>>704 >700氏ではありませんが…。
「printとecho」は何となく。「eregとpreg_match」は UTF-8 で処理をする癖が付いているので大体解りました。
ですが、「forとwhile」の順次処理の部分が今ひとつ掴めません。
while でも for でも書けるロジック。つまり、
for ($i=0; $i < $max; $i++){
...
}
のようなアルゴリズムを順次処理と呼称しているのでしょうか?
Google検索にて、順次処理とは「順番に処理をすること」ではないか、と解釈しました。(自信なし)
つまり、while ($row = DBからfetch系()) は順次処理とは呼べず、上記のようなロジックは順次処理である。
この理解であっているでしょうか?
PHP5.2対応のWin ZendOptimizerをインストールしてみたんだけど何か英語で エラーダイアログが出たw。そのままインストールが進んだけどPHPinfoで インストールが正常に完了したのか確認できるんでしょうか?。 php.iniには追加されてたしapacheをリスタートしても平気みたいだから大丈夫かな。
k1ハジマタ
whileはbool判定をループする時に使うのが理想だけどfor書くよりwhileと書くほうが楽ではあるww
for →ループする回数をこちらで指定するとき while→DBからの取得やファイルからの読み込みなど読込先に依存するとき って感じかな。
>>711 なんでわざわざ出てる答え(メッセージ)を無視して他人に質問するの?
おう、エロエロ土曜ワイド劇場の時間か。
717 :
700 :2006/12/02(土) 21:30:06 ID:4l/VpbTL
>>704 printは奥が深いですね… 今はecho使ってるのでそのまま使っていく事にします。
forとwhileについては713,714を見てたらだんだん混乱してきました。
ゆっくり理解してみます。
マルチバイトの文字コードは苦手分野で、EUC-JPで書いてるときはpreg_matchする場合は毎回エンコードする必要があるのですかね。
そのあたりは実際にやってみて調べてみようと思います。
718 :
658 :2006/12/02(土) 21:30:53 ID:2AsRSHi/
>>663 ありがとうございました。mysql_num_rows を教えていただいおかげで
ここのところ行き詰っていた部分が一挙に解決しました。
開発環境はノーパソのWindows(WAMP)で,本番用はLinux(LAMP)なサーバなんだけど,この2つで(絶対パスで指定しているところとか)ちょこちょこ設定が違うのよ. で,phpの側で自分の実行環境を自動認識させたいんだけど,どんな方法が良いのやら. $_SERVER[SERVER_SOFTWARE]から分けるとかしか思い浮かばないんだけど,何か良い手があったら是非・・・
720 :
719 :2006/12/02(土) 21:55:34 ID:pNytI564
すいません,メール欄消し忘れた・・・
PHP_OSもあるでよ
DOCUMENT_ROOTに「:」が含まれていたら窓
>>719 開発環境にVMware入れて本番環境を構築。
Document rootをsambaでローカルマウントすると
開発も確認も楽だし、環境の違いも考えなくて済むよ。
メモリがたくさん欲しくなるけど。
アクティブパーティションにPHP入れればパス互換になるよ
設定ファイル作って定数にパス指定すればいいんじゃねぇの
726 :
nobodyさん :2006/12/03(日) 01:11:00 ID:WgFKbMzx
画像をアップロードするスクリプトで、ディレクトリを動的に作成しようと思って mkdir()使ったらエラーが出てうまくいきません。 いろいろ調べるとどうもsafe_modeが原因のようなので、offにしました。 そしたら上手くいきました。 サーバはVPSでして、よく考えたらアカウントを持ってるユーザは自分だけ(つまりrootしかいない)なので safe_modeをonにする必要なんて無い・・・ですよね? だからsafe_modeはこのままoffにしようと思いますが、何かセキュリティ的にまずい点ってありますか?
ないんじゃない。
>>726 レン鯖業でも始めるのならsafe_modeは絶対にOnにすべきだが、
鯖をいじるユーザが自分だけならOffでいいと思う。
(もちろんサイトにアクセスしてくるユーザは不特定多数が存在しても良い)
あと細かい点は詳しい人ドゾー
DB抽象化レイヤなるものの中で、今から学ぶならどれがお勧めですか? 買ってきた本ではPEAR::DBを解説してるけど、 他にもあるよと紹介されてる中ではPDOが将来性ありそうに感じる。 ちなみにPHP5.1.6、DBはMySQL5.0.24aを使ってます。
>>729 自分は使っているフレームワークの関係で未だにPEAR::DBを使っているけど、
今ならMDBかMDB2じゃなかろうか?
731 :
725 :2006/12/03(日) 02:30:53 ID:???
>>729 俺はPDOベースでPEAR::DBに擬似させたサブクラスを作ってそれを使ってる
732 :
nobodyさん :2006/12/03(日) 02:36:32 ID:ONXLMhLT
>>655 貴重な情報サンクスです!わざわざ調べていただいて感謝感激です!
733 :
729 :2006/12/03(日) 03:24:18 ID:???
>>730-731 ご意見ありがとうございます。
自分は「PEAR入門」片手に触り始めたばかりで
フレームワークとかサブクラス自作とかの域に達してないのですが、
参考にさせて頂きます。感謝。
734 :
nobodyさん :2006/12/03(日) 05:59:41 ID:JsSZU6FP
736 :
719 :2006/12/03(日) 07:30:46 ID:LdRYMBEl
>>721-725 レスありがとうございました.
とりあえず一番簡単そうな実装として
>>723 を確認したところ,
WindowsXPでPHP_OS==WINNT,Linux環境ではLinuxとなることを確認しました.
当面はこれでOKです.多謝.
737 :
734 :2006/12/03(日) 07:49:42 ID:JsSZU6FP
>>735 あ、参照代入でしたか。 はずかしい。
ありがとうございました。
738 :
726 :2006/12/03(日) 09:46:41 ID:WgFKbMzx
すみません、画像ファイルの配信について質問です。 スクリプトを使って、動的に画像ファイルを読み込み、 適切なContent-TypeとContent-Lengthを吐き出しているとします。 このとき、あるA.htmに画像が100個(毎回変わらない)含まれているとして、 A.htmに毎回アクセスされるたびに同じ画像をサーバから再度送信し続けています。 (レスポンスヘッダを見るとHTTP/1.1 200 OKとなっています) これだと帯域の無駄遣いなので、画像が更新されてなければブラウザにキャッシュされてる(?)画像を 使ってもらうようにして、サーバから配信しないようにさせたいのですが、 どうすればいいのでしょうか??
PHP のmail関数でメールを送信した場合、必ずyahooの迷惑メール扱いになってしまうのですが、 どうやったら通常のメールとして認識されるようになるんでしょうか? メール送信元アドレスや、内容、題名など通常のメールとして届いたものを真似て送信しましたが どれも迷惑メールになってしまいました。
>>738 サバ側でcacheコントロールを書いても、ブラウザ側で毎回取るように
設定してあったら、毎回取られるよ。
>>738 画像ファイルを表示してるスクリプトにパラメータ渡してない?
744 :
726 :2006/12/03(日) 16:49:48 ID:WgFKbMzx
>>740 ありがとうございます。今から調べてみます。
>>742 そうなんですか! それは画像が多い場合に困っちゃいますね。
仮に静的な画像だとしてもそうなんですか?? でも、IEとかのデフォルトではそういう設定じゃない・・・のかな?
>>743 いえ、変動するパラメータは一切渡しておりません。
クエリストリングとして渡してるのは、毎回固定のファイル名だけです。
745 :
726 :2006/12/03(日) 16:52:52 ID:WgFKbMzx
>>744 について補足です。
「固定のファイル名」と書きましたが、
より丁寧に言いますと「各ファイルごとに固有のファイル名」を、
img srcとして指定している画像呼び出しスクリプトにパラメータとして渡している・・・という感じです。
746 :
nobodyさん :2006/12/03(日) 16:53:39 ID:U5thVNJ+
質問です。データベースにデータを入力するスクリプトを作っているのですが、 Fatal error: Out of memory (allocated -600571904) (tried to allocate 10448508 bytes) in .../Documents/main.php on line 210 というエラーがでてしまいました。 でphp.ini の memory_limit を40Mにしたのですが、同じエラーがでてしまいます。 (php.iniを変更した後でもtried to allocate10448508 bytesと同じ数値がでます。) どなたか対処法をお教えいただければと思うのですが。 よろしくお願いいたします。
Apache再起動とか つかAlloc600MBって強力だな
>>746 phpinfo()で実際の設定が反映されているかを確認。
違うphp.iniを見ているかも知れないので、同様にphpinfo()でphp.iniの場所も確認。
memory_limitでエラーになるとAllowed memory size of XXXX bytes exhaustedでしょ メモリの使用制限は関係ないんじゃないかと
XAMPPで、phpとアパッチとnySQL入れてローカルでやってるんですが、 mySQLにテーブルつくりたいんですが、DBコネクトエラーでできません・・・ 詳しい導入方法が載ってるサイトあれば教えてください
XAMPに導入も糞もない
>>750 > nySQL
なんだかすごくセキュリティに問題がありそうなDBだなww
格納したデータを次々バラまくとかww
IRI <=> URI の変換やってくれる関数ありませんか?
754 :
753 :2006/12/03(日) 19:02:58 ID:???
ごりごりとPHPで書きました。 preg_split とか駆使して。 汚い。 で、UTF-8 がらみのところは解決したのですが、 punycode がらみのところをやってくれるライブラリってありませんか?
755 :
nobodyさん :2006/12/03(日) 19:07:09 ID:U5thVNJ+
>>749 ってことは、何が原因?
本体の実装メモリが足りないのかな?
756 :
753 :2006/12/03(日) 23:07:56 ID:???
punycode <-> utf8 は
http://pecl.php.net/package-info.php?package=idn でできるようです。
Debian GNU/Linux Etch で
apt-get install libidn11-dev
pecl install --force idn
あとは php.ini か conf.d/ あたりに extension = idn.so
と書いて、読み込まれていることを php -m で確認。
自分はロケールを LANG = ja_JP.UTF-8 にしてて PHP
のソースも utf-8 で書いているのでコードはこんな感じ。
$utf8="総務省";
$puny=idn_to_ascii($utf8);
$utf8=idn_to_utf8($puny);
757 :
nobodyさん :2006/12/04(月) 01:51:50 ID:UgsNdO+/
コンテンツ(HTMLや画像など)を、通信経路にあるプロキシにキャッシュさせない方法ってありますでしょうか? HTTPヘッダでキャッシュ・コントロールをすればいいかと思ったのですが、それを無視しちゃうプロキシもあるそうですね。 たとえば会員限定の秘密コンテンツなどはどうやったら安全確実に会員「だけ」に配信できるのでしょうか… 通信をすべてSSL化しちゃえばいいのかなとも思いましたが、 SSLって画像とかも暗号化されるのでしょうか…。 もし暗号化されるなら、キャッシュされても大丈夫ですよね??
>>745 パラメータ付けてるとブラウザはキャッシュ使わなくなるよ。
PATH_INFOとか使って普通のURLに見せかけるとかの処置が必要なんじゃないかな、多分。
>>755 プログラムの見直しが必要。
PHPの変数のサイズは無限じゃないので
何でも格納できるとは思わないこと。
760 :
745 :2006/12/04(月) 02:55:34 ID:???
>>758 ttp://ml.php.gr.jp/pipermail/php-users/2006-June/029861.html の記述を参考にして、
<img src=image.php?filename=xxxx.jpg>
などとしていたのを
<img src=image.php/xxxx.jpg>
に変えてみたのですが、それでもやはりブラウザ(IE、Firefox)はキャッシュしてくれませんでした。
したがって、同じ画像に二度目以降にアクセスするときに「If-Modified-Since」を送信してくれないため、
アクセスがあるたびに、毎回サーバは画像を送信し続けるハメになっています。
(つまり、応答コードは 304でなく、毎回200です)
761 :
745 :2006/12/04(月) 03:27:21 ID:???
>>761 だから ユーザーがブラウザのキャッシュを使わない設定なら鯖側の意図は無意味
どうしても304吐きたいなら
#==================================
# HTTP Header 出力関数。
#==================================
function http_header($last_modified_logfile){
global $code,$siteurl;
$unixtime = filemtime("$last_modified_logfile");
$gmtime = gmdate( "D, d M Y H:i:s \G\M\T", $unixtime );
$etag = '"'.md5($gmtime).'"';
if (
( isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) && strtotime( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) >= $gmtime ) ||
( isset( $_SERVER['HTTP_IF_NONE_MATCH'] ) && stripcslashes( $_SERVER['HTTP_IF_NONE_MATCH'] ) == $etag )
) {
header("HTTP/1.1 304 Not Modified");
exit();
}else{
header("Content-Type: text/html; charset=$code");
header("Last-Modified: $gmtime");
header("ETag: $etag");
header("X-Powered-By: PHP/5.2.x");
header("X-Generator-Script: $siteurl");
header("X-2ch:
http://pc8.2ch.net/php/ ,
http://pc8.2ch.net/mysv/ ");
}
}
763 :
745 :2006/12/04(月) 10:41:23 ID:???
>>763 ?がある時点でブラウザは新規にリクエストするよ
766 :
nobodyさん :2006/12/04(月) 12:34:16 ID:nyh8nms1
俺の経験からいうと、?があってもブラウザはキャッシュするよ。 ためしに、現在時刻を出すだけのスクリプトで試してみたら?
俺んところで、
>>760-763 を参考にテストしてみた。環境はPHP4.3。
IE・FireFox・Opera、いずれの場合もキャッシュされず。
?を/や_などに変えてみてもダメだった。→
>>765 ETag・Last-Modifiedの有無も関係ないようだ。
>>763 にも書かれてるが、そもそもブラウザがIf-Modified-Sinceを送ってくれないので
>>762 の方法では絶対に304を吐けない。
つまり問題なのは304の吐き方ではなくIf-Modified-Sinceの吐かせ方。
もちろん上記環境で、apacheが配ってくれる静的な画像はキャッシュされた。
>>767 拡張子は?
.phpでなく.jpgとか.htmlでPHP動かしてみるとか。
だからあれほどHTTPを勉強しろといってるのに
IE 7.0、キャッシュされず…
>>769 拡張子を.jpgにすればOK、でFA?
えー。俺、画像アップローダで同名画像が更新されたときのキャッシュ対策に 画像の後ろに ?更新日時 とかパラメータつけてたのに、これじゃダメってこと?
>>767 >そもそもブラウザがIf-Modified-Sinceを送ってくれないので
念のため確認したいんだけど、If-None-Match を知っててその発言をしてる?
>>757 SSL通信ならば、プロキシサーバは内容を知ることができないので、大丈夫です。
内容を知ることができるのは、配信しているサーバと、最終的なクライアントのみです。
画像も https で始まるURLならば暗号化されてます。
776 :
nobodyさん :2006/12/04(月) 15:34:50 ID:+NWA2rgN
宿題がわからないです… 誰かヒントでもいいから教えてください… 単位がやばいんでw 問題は php、htmlをつかって二次方程式を解くプログラムです!!
宿題は自分でやれ
>>776 ネタか?
phpで二次方程式ってふざけてるとしか思えないんだけど
普通はWebプログ言語でやることじゃないだろ
あと、そんなプログラムあったら漏れも欲しいぞ
Vector探しても何処探しても、二次方程式を解けるプログラム(や電卓)なんてみたことない。
当てはめでおよその小数解だすようなのはいくらでもあるけど、分数式・虚数・無理数などを使った
数学的に正しい解を出すプログラムはマジでないぞ。
779 :
nobodyさん :2006/12/04(月) 15:47:46 ID:+NWA2rgN
>>778 でもうちの先生がつくれとかぬかしてて…
当てはめでおよその小数解だすようなのはいくらでもあるけど
↑
教えてください
>>779 とりあえず、どこの学校の何ていう先生だ!
781 :
776 :2006/12/04(月) 15:52:57 ID:+NWA2rgN
T大学の中国人の先生すorz
東大か、日本終わったな
東大はRuby
>>782 東大にはそんな室の悪い先生はいません
これは客観的な事実です
785 :
767 :2006/12/04(月) 16:02:59 ID:???
とりあえず具体的に何も知らないくせに偉そうな
>>770 みたいなバカは放っておくとして、、、
>>768 、
>>772 拡張子は関係ない。mod_rewriteで、見かけ上「.jpg」にしてみたが、やはりダメだったので。
>>773 結論としてはそれじゃダメ。
>>769 に示されたURLにアクセスして、HTTP通信をキャプチャしてみるといい。
>>774 ETag付けてもキャッシュされてないんだから、If-None-Matchは関係ない。(っていうかキャッシュされない=If-None-Matchもリクエストされてこない)
If-Modified-Sinceが付いてるか付いてないかしか書いてないから まさか If-None-Match が付いてるのに「If-Modified-Sinceが付いてない」って騒いでるのかと思ったんだよww 「条件付きGET」とか言えよ
787 :
767 :2006/12/04(月) 16:07:19 ID:???
>mod_rewriteで、見かけ上「.jpg」にしてみた 上記に追記というか補足。 .jpgにしたうえ、?も使ってない。それでもキャッシュされず。 具体的には、hogehoge.com/images/filename.jpgにアクセスすると mod_rewriteでhogehoge.com/img.php/filename.jpg にリダイレクトするようにしたが、 これでもキャッシュされず、アクセスすると毎回200応答になっちゃう。
788 :
778 :2006/12/04(月) 16:07:39 ID:???
まぁ親切な漏れがおしえてやろう。 漏れは実は 『分数式・虚数・無理数などを使った数学的に正しい解を出すプログラム』 が欲しいわけだけど これのURLを教えてくれたら効率的で高速なphpプログラム書いてやるけど、まぁ現時点ではいい加減なので勘弁してくれ。 「当てはめでおよその小数解だすようなの」 でいいんだよね X^2 + X = 23 を解くなら、 for ($i = -100000; $i < 100000; $i += 0.00001) { $d = $i * $i // phpでの2条処理は異常に遅いので if ($d + $i >= 23 ) { $result = $i; break; } } だ。 くだらん設問つくる教師にはこれで十分だろう
>>786 それはむしろ喪前の読解力がおかしいと思われ。
>>786 お前は脊髄反射でレスしすぎ。
ちゃんと頭から書き込み読めよ。
単語にだけ反応してんじゃないよ。
>>787 mod_rewriteじゃブラウザを騙せない、ってことじゃないのかそれ。
mod_rewriteだと最終的なURLがブラウザにも通知されちゃうから。
.jpgでPHPが呼び出されるように.htaccessいじってみたらどうよ?
792 :
789 :2006/12/04(月) 16:20:16 ID:???
>790
あ、かぶったww
>>791 騙せるよ。っていうかmod_rewriteってapacheの内部的な処理だから、
クライアント(ブラウザ)はリダイレクトされたことすら分からない。
>mod_rewriteだと最終的なURLがブラウザにも通知されちゃうから。
こんな大嘘、どこで覚えたんだか・・・www
>>791 >.jpgでPHPが呼び出されるように
アイタタタタタ・・・・・・
お前、それがまさにmod_rewriteの機能の一つだよ。
中途半端な知識で知ったかぶって大恥をかく典型例だな。
795 :
776 :2006/12/04(月) 16:32:20 ID:HUF4lLmF
〉〉788 まじで感謝です。 親身になってくれてあざすm(__)m
>>795 つーかお前、自分で考えなきゃ宿題の意味がないだろう。
これが「ゆとり教育の結果 & 大学生の質の低下」ってヤツか・・・
mb_internal_encoding -- 内部文字エンコーディングを設定あるいは取得する とありますが、内部文字エンコーディングって何でしょうか?
どこのスレでも定期的に現れる、ゆとり教育厨。 いちいち煽るなよ。
>>778 >くだらん設問つくる教師
おう、呼んだか?
>>800 呼んだぜ
まずは「phpで二次方程式を解く」といったプログラムで何を学ばせたいのか教えてくれないか
ついでに大学名と配属教えてくれ
803 :
800 :2006/12/04(月) 17:18:21 ID:???
>>801 >まずは「phpで二次方程式を解く」といったプログラムで何を学ばせたいのか教えてくれないか
変数の取り扱いと演算子だ。
何か文句あんのか?
>ついでに大学名と配属教えてくれ
○○大学×学部だ
>>776 >>778 より、正解を導き出すと、
当てはめでおよその小数解だすようなのはいくらでも書けるけど、分数式・虚数・無理数などを使った数学的に正しい解を出すプログラムは書けません。
と書いて提出しる!
ゆとり教育は30年前から始まっているんだがな
>>805 少なくとも教科書のレベルは今から20年〜30年前が一番高かったよ
過去の中でね
>>804 > 分数式・虚数・無理数などを使った数学的に正しい解を出すプログラムは書けません。
書けないこともないとおもうけどね。
二次方程式なら因数分解もいらない (解の公式にいれりゃ確実に出る) んだから
人間と同じロジックで処理すりゃいい。
SSL設定などの質問はどこですればいいんだろうか。。。
>>762 If-Modified-Sinceヘッダに使う文字列で "D, d M Y H:i:s \G\M\T" こういうの使うのやめろよ。
DATE_RFC1123 があるだろ。
mtimeのみのEtagは弱いバリデータなんじゃ あとIF_MODIFIED_SINCEは実装上はエコーなんだから文字列として==でいいんじゃ strtotimeじゃパースできない形式返す端末の問題もあるよね
>>810 >mtimeのみのEtagは弱いバリデータなんじゃ
ETagの中身は別にmtimeじゃなくてもいいんだけど。
中身は変化したが意味は変化していない→ 弱バリディタは変化しない 強バリディタは変化する
中身が変化した → 弱バリディタ・強バリディタともに変化
>実装上はエコー
サーバーがRFC850の日時文字列を返してもIE7はRFC1123 を If-Modified-Since に入れるぞ
812 :
nobodyさん :2006/12/04(月) 19:10:51 ID:OBhf6ZT7
このたびXREAのサーバーへサイトを移転することになりまして、移管作業をすすめているのですが、 今まで使っていたサーバーではMySQLの文字コードがEUC-JPで XREAのMySQLの文字コードがUTF-8 Unicode (utf8) ということでして フォームからPOSTすると文字化けが起こりまして非常に困っております。 phpMyAdminの文字コードもUTF-8ということでphpMyAdminから修正しても日本語部分が??となって表示されてしまいます。 ページは全てEUC-JPで作成しており、 formタグでaccept-charset="EUC-JP"と指定し、 メタタグでもcharset=EUC-JPと指定しているのですが どこを直せば文字化けが解消されるんでしょうか? エスパーさんよろしくお願いします。
phpmyadminは設定ファイルで切り替えられる mysqlもユーザディレクトリに設定ファイル置けるんじゃなかったっけか
IO時にUTF-8 ⇔ EUC-JPコンバートすればいいじゃないのよ。
>>807 だから中学生に範囲外のこと教えるなってのに
$a, $b , $c; $y1 = (-$b ± sqrt($b * $b - ? * $a * $c)) / ? * $a; Pythonなら虚数も出せるとオモ
>>815 どうでもいいけど、二次方程式を解く時には平方完成の方が解の公式より早いから、
解の公式使うメリットなんて素人以外には無いぞ。
>>787 念のため漏れもmod_rewriteで同様の実験をしてみたところ
たしかにブラウザにキャッシュされてないようだ・・・なぜだろう。
タイムリーだな 昨日NHKで平方完成の使いどころやってた
822 :
nobodyさん :2006/12/04(月) 19:57:00 ID:Tc134QUM
823 :
nobodyさん :2006/12/04(月) 20:01:19 ID:Tc134QUM
<?php $pastTimeString = gmdate(DATE_RFC1123, mktime(10, 10, 10, 10, 11, 2006)); $creationTimeString = date(DATE_RFC1123, mktime()); header("Last-Modified: $pastTimeString"); ?> <html><header></header> <hr> <table border="1"> <?php echo "<tr><td>HTML Creation</td><td>$creationTimeString</td></tr>"; echo "<tr><td>Random</td><td>".mt_rand()."</td></tr>"; ?> </table> <hr> </body></html> mod_rewriteなんて使わなくてもこれでキャッシュされるんだが、 キャッシュされないってわめいてるのはいったいどんなスクリプト書いてるんだ? Windows XP の IE7と Firefox2.0 で確認。
>>808 少なくてもここの板でもスレッドでもないな・・・通信技術スレッドかな
825 :
812 :2006/12/04(月) 20:05:28 ID:OBhf6ZT7
サーバー接続時にSET NAMES ujis;で解決しました お騒がせしました
>>823 アホかお前。もしやお前は脊髄反射が得意な
>>786 か?
知ったかぶる前に、一連の流れをもう一回最初から読み直せバカ基地害。
動的に配信された画像をキャッシュさせる話だっつってんだろが。
827 :
nobodyさん :2006/12/04(月) 20:30:24 ID:Tc134QUM
画像だろうとなんだろうと関係ないだろ。
>>823 のような単純なのでキャッシュされてるんだから
「キャッシュされていない」って言ってる人はなにか勘違いしてるとしか思えないね
リロードボタン押してキャッシュ破棄&No-cache送られてるとか なんか頭に血が上ってる人が2人ほどいるみたいだけど、ちょっと落ち着きませんか?
829 :
nobodyさん :2006/12/04(月) 20:55:45 ID:Tc134QUM
image.phpに (α) = アクセスしない (β) = If-Modified-Since付きでアクセスする (γ) = If-Modified-Since無しでアクセスする IE7の設定 (1)Interner Explorerを開始するたびごとに確認する リンククリック:(α) 更新ボタン:(β) Ctrl+更新ボタン:(γ) (2)Webサイトを表示するたびに確認する リンククリック:(β) 更新ボタン:(β) Ctrl+更新ボタン:(γ) Firefox2.0 の設定・・・する場所はない? リンククリック:(α) 更新ボタン:(β) Ctrl+更新ボタン:(γ) 各ファイルのソースは次のレスで。
830 :
nobodyさん :2006/12/04(月) 20:57:31 ID:Tc134QUM
image.jpeg:適当な画像 image.php <?php $pastTimeString = gmdate(DATE_RFC1123, mktime(10, 10, 10, 10, 11, 2006)); header("Last-Modified: $pastTimeString"); header('Content-Type: image/jpeg'); readfile('./topimage.jpeg'); ?> test1.html <html><head><title>test1</title></head><body> <a href="test2.html">test2</a> <img src="./image.php"> <img src="./image.php?hoge=1"> </body></html> test2.html <html><head><title>test2</title></head><body> <a href="test1.html">test1</a> <img src="./image.php"> <img src="./image.php?hoge=2"> </body></html>
>>792 mod_rewriteでリダイレクトした先のURLってブラウザのアドレスバーに表示されなかったっけ?
832 :
nobodyさん :2006/12/04(月) 21:06:03 ID:Tc134QUM
mod_rewriteって言ったって(超大雑把に言って)2種類、 [R]を付けるのと付けないのがあるでしょ。
>>830 要するに
>>738 はContent-TypeとContent-Lengthだけで
Last-Modifiedヘッダを吐いてないならキャッシュされるわけないだろトンマ。
って話?
834 :
nobodyさん :2006/12/04(月) 21:36:43 ID:voLSDiiK
835 :
nobodyさん :2006/12/04(月) 21:43:29 ID:Tc134QUM
>>833 さあ。。。
>>763 の通り、Last-Modifiedつけても駄目らしいですけどね。
キャッシュ関係はいい加減ウザイからキャッシュさせるのを再現する方法を
>>829-830 に掲載しただけ。
丸投げしたいのが煽ってコード出させてるだけだと思うんだが・・
>>833 Last-Modifiedを吐いてもキャッシュされないから問題になってんだろトンマ。
>>835 どうでもいいけどお前のコードで試すと
Last-Modified: WedAMGMTE_ROctoberC1123 などとおかしな値になるぞ。
>>836 バカかお前は。すでに一連の議論の中で必要なコードは出尽くしてるだろ。
838 :
nobodyさん :2006/12/04(月) 22:21:05 ID:Tc134QUM
>>837 1段落目
キャッシュされてるかどうかを判断する方法手順が間違ってるんだよきっと
2段落目
DATE_RFC1123 定数はPHP5.1.1以降だって。
>>809 みて初めて知ったから試したのがまずかった。
"D, d M Y H:i:s \G\M\T" でいいんじゃね?
お互いに確認方法が間違ってるだけだ、で終わりそうな予感
>>838 >キャッシュされてるかどうかを判断する方法手順が間違ってるんだよ
だから間違ってないってば。この話のレスの流れを全部読んだかい??
きちんとHTTP通信をキャプチャして、ブラウザのリクエストとか
サーバの応答コードとか全部チェックしてるんだから間違いようがない。
ちょっと気になったのですが、 for($i=0;$i<count($hairetu);$i++){ echo "$hairetu[$i]"."<br>"; } のようにして配列内のデータを表示しますが、 フォーム登録時のinputに<input type="checkbox" name="hairetu[]"> というようにしている場合、上記のソース上に$hairetu=$_POST["hairetu]; みたいな記述は必要ないのでしょうか?(ちなみにこの書き方ではエラーなりますが・・
register_globalsがOffになってたらもともとその使い方はできないはず $hairetu = $_POST["hairetu"];がいる 一回変数に入れなおすのもいいけど for($i=0;$i<count($_POST["hairetu"]);$i++){ echo $_POST["hairetu"][$i]."<br>"; } こういうのもできるよ あとcountはループの条件評価で使わないほうがいいかも ループする前に変数に入れるとか初期値として使うなら全然いい
843 :
841 :2006/12/05(火) 02:05:23 ID:???
>>842 ありがとうございます。
ただ、842さんの方法だと表示がArrayとなって
中身が表示されません・・。
>>842 ループでcount使わない方がいいの?なんで?
>>843 コード間違ってるだけじゃない。Arrayになってるならprint_rぐらいしてみたら?
>>844 条件評価で使わないほうがいいってこと
ループ毎にカウントするから
>>840 こんな簡単な実証コードが出てるのに何を言ってるんだ
847 :
nobodyさん :2006/12/05(火) 10:16:04 ID:??? BE:84701232-2BP(1)
サーバ環境の問題でPHP5.1系のWindows版が欲しいのですが php.netを見ても最新のバージョンしか置いて無いようです。 どなたかPHPの最新バージョン以外を置いてある所って ご存知ありませんか?
849 :
nobodyさん :2006/12/05(火) 11:26:44 ID:??? BE:423504656-2BP(1)
>>848 ありがとうございます!
無知でした・・
>>842 ,845
countっていう関数名だからって、第2引数を指定しない限りは、本当に1個1個カウントするわけじゃないよ。
気にしなくておk。
851 :
841 :2006/12/05(火) 12:41:29 ID:???
>>844 だいぶ遅くなってすみません・・。
print_rももちろんしているのですが、なぜかAとかArrayとかでます。
こちらのテスト環境ではregister_globalsをOnにしてるからかな?とも
思いましたが、ググっても理由が分かりません。
ちなみにcountの箇所をcount($hairetu)にすると問題なく処理されます。
852 :
841 :2006/12/05(火) 12:46:09 ID:???
自己レスです。1から作り直したら、842さんの方法で大丈夫でした・・。 登録フォームで配列の箇所は別ファイルにしているからだろうか、、、 関係ないと思いますが、色々調べてみます。お騒がせしました。
>>846 だから実証したんだっつーの。
バカかお前は。スレの流れを全部読んでから発言しろ。
854 :
nobodyさん :2006/12/05(火) 13:57:45 ID:nXBCkDsb
もういいっつーの。
>>852 とりあえず現状のソースを改変なしでそのままコピーしてみ。
856 :
a :2006/12/05(火) 16:41:58 ID:s1tJ/lxX
電子メールとウェブサービスの原理的な違いは何ですか?
違いすぎてどこから説明したものやら
>>856 何言ってんだ。
サーバの原理はみんな一緒だ。
クライアントから何らかの要求を受けたら、何らかの答えを返す。
サーバってのはそういうもの。
>>856 ここはPHPの質問をするスレッドです。
メールサーバはメール送受信の要求を受けたら実行する。 WebサーバはWebページの要求を受けたら送信する。 原理はどちらも同じ。受ける要求や返す内容が違うだけ。
>>859 サーバの違いじゃなくサービスの違いを聞いてるんじゃないの?
あ、原理だからいいのか。
>>862 >>861 をよく読め。
サービスってのは、サーバというハードやソフトが供給する仕事を指す。
だからサーバとサービスは密接不可分。
クライアントから見たサーバーの仕事内容は一緒でも、
サーバーが中でやってる仕事はWebとメールじゃ随分違うのでは。
>>861 > メールサーバはメール送受信の要求を受けたら実行する。
ここで「何を実行するのか」が論点なんじゃないの?
866 :
nobodyさん :2006/12/05(火) 17:25:19 ID:nXBCkDsb
スレ違いだから終了で。 知識自慢は余所でやれ!
JavaScriptのみサニタイズしたいのですが何か都合のいい関数はありますでしょうか?
>>865 お前は「原理」という言葉を辞書で100回ほど調べるといいだろう。
>>866 「知識自慢」じゃなくて、単なる質問への回答でしかない。
そしてそれを「自慢」と感じるのは、お前が無教養なバカだから。
下らない質問に回答するやつは荒らし
addslashesが効いているかいないかをチェックしたいのですがどのような方法がありますでしょうか??
>>870 マニュアル嫁。
そのまんまなコードが載ってるだろうが。
>>867 $hoge = preg_replece('/<(script)>/i', '<\1>', $hoge);
>>869 スレタイを理解できないほど頭がイカれてるお前は
荒らし以下の基地害クズニートダメ人間。
861=868=873 とりあえず落ち着けよ
>>868 あの質問のどこにPHPが関係してるのか述べてみろ
>>875 つまらねぇ人間だなぁ。
公務員か教師か? お前は。
それとも底辺ウンコサラリーマンかな?w
guest guest
879 :
age :2006/12/05(火) 20:45:32 ID:nt4HnWjk
アクセス解析プログラムを作りたいと思っているのですが、ホスト名、ブラウザの種類、OSの種類などのデータはどのように取得すればいいのでしょうか?
881 :
nobodyさん :2006/12/05(火) 21:36:56 ID:GzZh5Paf
index.php?aaaみたいに同一ファイルでなんの処理が行われているかURLで判断するために 無意味にクエリ文字つけるのはよろしくないですか?
>>881 よく意味がわからない。
>無意味に
意味ないならつけないにこしたことはない。
WEBFTPツールみたいなものを作っています。 FTP上のものをブラウザからダウンロード可能にしようと思った場合、 セキュリティ上の脆弱性は問題ないでしょうか? 例えば、ダウンロードさせるようのHTTPヘッダを表示して、 その後、ユーザ任意のファイルを表示(出力)させることになるのですが、 この段階で、ファイルの内容によって脆弱性が発生することは あるのでしょうか? 通常であれば、PHP上で任意のファイルを出力させるのは危険極まり無いですが、 ヘッダー出力後なので問題ないのかなと思ってます・・・。 間違ってますでしょうか?
ヘッダー出力前にファイルを出力ってどういう意味?
>>883 脆弱性云々がブラウザ上でのXSSだけを指してるんなら
特に問題はないんじゃない?
そんなの言い出したら世間のダウンロードサイトは
全部セキュリティがやばいことになってしまう。FTP関係ない。
ちょっと相談ですが、カテゴリがいくつもある場合、 カテゴリごとにファイルを分けて必要な時にrequireやincludeで読み込むのと 1つのファイルでfunctionによって分けるのと、どちらが汎用性や処理の面で 良いのでしょうか?
>>883 >>886 ブラウザが仕様通りの動作をしてくれれば問題無い。
だけど、IE6 (SP2で多少改善されたがIE6SP1からアップグレードした人は設定が自動では書き換わらなかったような) だと、
HTTPヘッダを無視して内容で判断されるから、scriptを含めたhtmlファイルをアップされたらブラウザ上でそのドメインとしてのスクリプトが実行されちゃう。
これはブラウザの欠陥、というか脆弱性だが、そういう脆弱なIEを配慮するなら、
ユーザに任意のファイルをアップロードさせる、つまり、アップローダーをやるならば、
捨てドメインを使うべき。
間違っても、Cookieでセッション管理しているドメインでやっちゃ駄目。
あ、あと Cookie 使っているなら httpOnly 属性を使えばXSSによるCookieの漏洩は抑制できる。ただし、完全ではないし、
XSSにはCookie漏洩以外の問題もある。
>>885 >ヘッダー出力後なので問題ないのかなと思ってます・・・。
ってことはヘッダー出力前にファイルを出力する方法があるってことだろ
だから、それは何ですか、と。
DBのテーブルから抽出した文字列を、語句の置換に利用したいのです が、うまくいきません。(置換されていない) テーブル:A word word1 word2 word3 果物 フルーツ fruit くだもの 上のようなテーブルがあり、PHPからクエリを投げて、word1,word2,word3の いずれかにヒットしたときは、変数に格納されている語句をwordに変換したい のですが。。。 $phrase="fruit"; $select=<<<EOM SELECT * FROM A WHERE word='{$phrase}' OR word1='{$phrase}'OR・・; EOM; $sel_query = sqlite_query($db_open,$select); $rows = sqlite_num_rows($sel_query); $query_array = sqlite_fetch_array($sel_query,SQLITE_NUM ); //ヒットしたレコードがあったら、そのレコードのwordフィールドの語句に置換 if($rows == 1){ $word_replace = str_replace("$phrase","$query_array[0]",$phrase); }
>>888 >HTTPヘッダを無視して内容で判断されるから
それって、IEはContent-TypeやContent-Dispositionまで無視して、「ファイルの内容」からHTMLを判別(推測)してるってこと?
そんな無茶な・・・
「知識はただ物事を知っていること。知恵は知識を使いこなすこと」と どっかの坊さんが言ってたな。 プログラムするときって知恵が重要だよねー。
>>889 (スクリプトの処理による)Octet-Stream指定でのヘッダ出力後、って意味でしょ。
任意ヘッダ出力前のファイル出力=自動ヘッダ出力=text/html指定。
Octet-Streamにしとけばユーザが自ら「表示」を選択しない限り
ブラウザで表示されることはないはずだよね、というのが質問の趣旨かと。
>>888 IEの「内容で判断」って拡張子での判定だっけ。
894 :
888 :2006/12/06(水) 00:39:08 ID:???
>>891 その通り。
実験してみれば分かるよ。
IE6 on Windows 2000 や IE6 SP1 on Windows XP だとそうなる。
image/gif 返しても、中身HTMLだとHTMLとして処理される。
もじら組みとかにも載ってるよ。
895 :
888 :2006/12/06(水) 00:40:01 ID:???
>>893 IE6SP2の、拡張子によって判断する、ってオプションの拡張子はMIMEタイプを示す。
(MSの表記が問題あって分かりにくいけど。)
なので、これがONになっているIE6 SP2 なら問題なし。
>>894 Content-type: application/octet-streamやContent-disposition: attachmentまで無視されるとしたら、かなりやっかりだな。
IE6SP1以前の「内容がHTML」ってのが、いったいどのように判定されているのかわからないと対処しようがないね。
圧縮してダウンロードさせるしか安全な方法はないのか。
もしくは、ファイルの1バイト目が「<」だった場合だけ圧縮するとか。
>ファイルの1バイト目が「<」だった場合だけ圧縮するとか いくらでも抜け穴のある対策法だなww
898 :
867 :2006/12/06(水) 03:19:43 ID:EpXwEc8l
お願いします
Apr 05 01:00 Apr 05 2005 ↑ をタイムスタンプや 4月5日01:00 4月5日2005 とかに簡単に直す方法ってありますか? 今はちまちまとif文使って、Aprの場合は4、Aug の場合は8、とか ありえないことやってるんですが・・・。
>>899 前者は年を挿入してやらないと無理っぽいが、後者なら
$unixtime = strtotime("Apr 05 2005");
echo date("n月j日Y", $unixtime);
でできる。
前者も05と01:00の間に date(" Y ") を挿入してやれば変換可能。
>>898 872のを直して
$html = preg_replace('/<(script[^>]*)>/i', '<\1>', $html);
でいいんじゃないの?
ちっ。872と同じミスしたか。 $html = preg_replace('/<(script[^>]*)>/i', '<\1>', $html); か?
strtotime()
904 :
903 :2006/12/06(水) 05:20:50 ID:???
リロードしていなかった 恥ずかしや恥ずかしや(ノ∀`)
>>902 firefoxなら前者、IEなら後者。
<script<script type="text/javascript>">
document.write('You are third-class.');
</script>
<script<script type="text/javascript" charset=">">
document.write('You are third-class.');
</script>
906 :
905 :2006/12/06(水) 11:11:34 ID:???
禁止されないから許可ではなく、許可されないから禁止が プログラミングの原則だろ。 質問は下らなくてもいいが、回答まで下らないと話にならない。
907 :
nobodyさん :2006/12/06(水) 11:46:43 ID:0xIGcNVS
>>907 が、知識では対抗できないが、反撃しないのは悔しいので
>質問スレで運悪く、ろくな答えもよこさない(ry
という嫌味な文面を探して時間を浪費しているところを想像してしまったのはオレだけですか?
exit;
912 :
452 :2006/12/06(水) 12:47:23 ID:???
return str_replace(908, "", $result);
>>912 return str_replace(array(908, 909, 910, 912), "", $result);
>>913 return str_replace('913', null, $result);
以下再びループ
スレタイの「下らねぇ質問」って言葉は、しょっちゅう荒れる原因になるな。 次スレからはタイトル変えれ。
>>902 それだと
<script language="JavaScript">
とか普通に変換されません
>>915 2chに「荒れない」を求めるのは無理
でもまぁ、あえて書き換えるなら
【PHP】荒れない程度に下らねぇ質問はここに書き込みやがれ
>>917 くだらなくない(本スレ)スレが無くなってしまったので、
ちょっと考えんと如何かもな。
>>918 あぁ、そう言えば下らなくないほう(五十歩百歩だったが)が
いつのまにか消えてるな。
「下らねぇ」と「下らなくねぇ」の違いがよくわかんないから
統合しちゃったほうがいいと思うのだが。
初心者です、、 変数を出力する場合printで'. $test .'と出力してて1つだと出力できるのですが 2つの変数を隣り合せで並べて出力するにはどうすればいいんでしょうか '. $test .' ' . $test2 .' イメージ的にはこんな感じで出力したいのですが、、
filename username はこれ自身で一語ですか? classname は一語になりませんよね。 変数名付けるときに $filename $fileName $username $userNmae $classname $className のどちらにしようか迷ったんで。
知識のあるものからしたらくだらないし、知識のないものからしたらくだらなくない。 おまえらそんなこともわからず質問回答してきたんですか?
「くだらないかどうか」という話題自体が、そもそもくだらないのですよ。
925 :
920 :2006/12/06(水) 14:08:38 ID:???
自己解決しました
926 :
920 :2006/12/06(水) 14:13:42 ID:???
>>922 .で統合なんですね
レスありがとうございます。
>>919 いつの間にか??
下らなくない方(旧本スレ)の最後を見れば分かるけど
「次から下らないスレと統合ね」という意見で消え去った。
とっくの昔にここは統合されている。
>>918 それなら本スレが残ってこっちを消せばよかったわけだが、
本スレが「お前らあまりにも下らん!」で荒れまくってたので
今の下らない質問スレ程度の荒れ方ならそれよりは100倍マシ。
とりあえず途中に様々な煽りは入るものの、質問→回答という
流れは本スレよりまともに機能している。
後はみんなで荒らしを無視する大人の対応を心がけるだけだ。
アクセスされたときのURLとページのタイトルを取得したいのですが、 タイトルを取得する簡単な方法はないでしょうか? URLはPATH_INFOとかでなんとかなるのですが。
>>928 <?php
ob_start();
?>
元のHTML
<?php
$html = ob_get_contents();
ob_end_flush();
$title = preg_replace('/<title>(.*?)</title>/i', '\1', $html);
?>
ってPHPコードで元々のHTMLを挟むってのはどう?
(挟むのではなく元のHTMLをincludeで読み込むのでもいい)
でも個人的には最初からHTMLのタイトルをPHPで定義しちまえば?と思うが。
どっちにしろそのHTMLにPHPコードが入るんだろ?
>>929 うっかり。
> $title = preg_replace('/<title>(.*?)</title>/i', '\1', $html);
ここは
$title = preg_replace('/<title>(.*?)<\/title>/i', '\1', $html);
にしてくれ。
931 :
nobodyさん :2006/12/06(水) 15:57:01 ID:orxyqHFc
>>931 お前、そんなの待ってたのかよ。よく見ろよ。
カスにはわかんないだろうが
>>906 はすでに回答になってるだろ。
scriptだけ確実にはじくなんて無理なんだよ。script以外のタグを
有効にしたいんだったらHTML_BBCodeParserでも使えや。
933 :
nobodyさん :2006/12/06(水) 16:18:35 ID:qPJcEJvW
$pattern = "<b>(.*)<\/b>"; $val1 = "<b>ABC</b></td><td nowrap><b>YYY</b>"; preg_match_all( "/".$pattern."/i" , $val1, $matches); oreach( $matches[0] as $valo ) { print $valo . "<br>"; } PHP5.2にて正規表現を使用します。 上記にてABCとYYYを別々に抜き出したいのですが、 ABCYYYと抜き出されます。 どこが悪いのでしょうか?
934 :
487 :2006/12/06(水) 16:25:50 ID:BQeeyZbT
PHPでmysqlのmax()って使えますか? $max = mysql_query("selet max(col_1) from table_$t"); echo $max; というコマンドを打ったのですが、Resource id #4という結果が表示されて, カラムの中の最大値が表示されません。どうすればいいでしょうか。
>>933 最短マッチの条件じゃないと、可能な限り長い範囲でマッチさせようとするから。
> $pattern = "<b>(.*)<\/b>";
↓
$pattern = "<b>(.*?)<\/b>";
>>934 マニュアルを見直せ
君は普通の値を取る時もそうやるのかい?
>>934 君はmysql_queryの使い方そのものを勘違いしている。
queryは実行だけ、結果の取得はresultなりfetch。
>>933 $pattern = "{<b>(.*?)</b>}i";
$string = "<b>ABC</b></td><td nowrap><b>YYY</b>";
preg_match_all($pattern , $string, $matches);
print_r($matches[1]);
$matches[1][0]がABC
$matches[1][1]がYYY
これじゃだめなの?
PHPだけで、毎日決まった時間にそのスクリプトを実行するなんてことは出来ませんよね? クライアント側で、毎日決まった時間にそのスクリプトにアクセスして実行するなんて プログラムでも作るしかないのでしょうか?
$array1 = ( [0] => Array ( [id] => 001 [name] => hoge1 ) [1] => Array ( [id] => 002 [name] => hoge2 ) [2] => Array ( [id] => 003 [name] => hoge3 )) ; $array2 = ( [0] => Array ( [id] => 001 ) [1] => Array ( [id] => 003 )); この二つを較べて、結果を $array3 = ( [0] => Array ( [id] => 001 [name] => hoge1 ) [1] => Array ( [id] => 003 [name] => hoge3 )); こうしたいのです… array_mergeを使用して、やってみてるのですが上手く行きません (涙) 少しだけヒントお願いします;;
>>930 echo $title;してみたのですが、<title>と</title>が消えただけの
HTML全部が表示されてしまいます。
>>941 結合のルールが全く分からないんだが。
何を削って何を残すんだそれ?
>>942 すまん
$title = preg_replace('/.*<title>(.*?)<\/title>.*/i', '\1', $html);
>>942 馬鹿の一つ覚えみたいに正規表現を使うやつがいるが、HTMLの解析にはtidyのよ
うな専用の関数がある。
tidyのマニュアルに目を通しておくと後々役に立つ。
項目の追加や編集をモジュール化したアンケートシステムをPHPで作ろうかと思っているのですが
既存のスクリプトやシステムはありますか?
単なるアンケートスクリプトは大量にありますが、プログラムの知識がなくても
管理者が自由に編集できる完全モジュール化スクリプトってあまり知らないので。
http://www.databasebank.com/svc_ankete.php これがそんな感じかなと思ったのですがサンプルは見れず。
>>945 たかがタイトル取得にtidyなんて糞重いもの持ち出すのは
すりむき傷をレーザーメス使って手術するようなもん。
>>948 普通の正規表現だとHTMLコメント中にtitleタグあったらこけるとかがあるから、
HTML記述が一定しない外部サイトのHTMLからのtitle取得とかなら
tidyとか使った方が確実だろうし、tidyを使わなくても重くなるだろうね。
自分のサイトのHTML相手にそこまでやるのはさすがに自爆行為だと思うけど。
950 :
948 :2006/12/06(水) 17:33:40 ID:???
>>949 だよね。正規表現は便利だけど、セマンティクス
に基づかないケースが多いから使い方を間違える
とちょっと危ない。
まぁ、ケースバイケースってやつか。
titleのコメント表示をやってるサイトなんて見たことないけどw
<title><なんかやばいコード></title>
やばいコードを埋めるほうが悪い。
今までフレームワークもクラスも関数も一切使わずにやってきて、 最近フレームワークを使うようになったんですが、 重いとは思わないまでも 何かつっかかる感じがしますね。
>>954 キャッシュは使ってないの?
APCとかeAcceleratorとか
956 :
941 :2006/12/06(水) 19:52:26 ID:???
>941です >943 すみません、IDが比較対象です。 $array1がselect * from で引っ張った全データで、$array2は絞込み検索の結果だと思ってください。 $array1と$array2で、$array1にしかないIDを削って、共通のIDがある場合は、そのまま残すと、考えておりました。 配列構造が違うと、array_diffも使えず、困っておりました;; 説明足らず失礼しました;;
>>956 そんな複雑な条件を関数一発でできるとは思わない方が…
条件で取捨選択するなら素直にロジック書いた方がいいよ。
$array3 = array();
$idlist = array();
foreach($array2 as $id) $idlist[] = $id['id'];
foreach($array1 as $data) if(in_array($data['id'], $idlist)) $array3[] = $data;
とかいう感じ?
しかし意味分からんのが、$array2が絞り込み検索の結果なら、
そもそも絞り込み検索で$array1を取得すればいいんじゃないの?
何故わざわざ2段階に分けてPHPで苦労する?
select id,name from table where 絞り込み条件;
でいいじゃん。
958 :
933 :2006/12/07(木) 00:05:43 ID:???
ファイルを移動させるには、移動先にcopyして 元のファイルを削除するという考え方で良いのでしょうか? それとも直接移動出来るのでしょうか?
961 :
960 :2006/12/07(木) 01:34:36 ID:???
>>960 rename()はファイル名の変更ではないのでしょうか?
ファイルそのものの場所(ディレクトリ)を移動出来るのですか?
963 :
959 :2006/12/07(木) 01:36:01 ID:???
↑間違えました。上のは959です。。
>>962 そうですか・・・手持ちのリファレンスには書いてないので、もう少し調べてみます。
965 :
nobodyさん :2006/12/07(木) 12:25:40 ID:4ce7Ud5I
> そうて?はありません。例えは?、今のところ宇宙日本食の試作品には寿司や天ふ?らと こういう文字列の濁点・半濁点を合体させたいのですが、どのようにすれば良いのでしょうか?
>>965 Jcodeにそんな機能があったキガス
967 :
nobodyさん :2006/12/07(木) 14:36:15 ID:9CmtFee0
すみません。添付ファイルとしてメールを送れるフォームメールについて教えてください。 現在以下のような画面遷移でフォームを作っています。 入力→確認(or必須エラー)→送信完了 input name="file" type="file" でファイルを選ぶんですが、入力画面から確認画面に遷移 した時にテンポラリファイルとして保管されますよね? で、確認して実際に送信する際にはリクエストが一度終わってしまうので、削除されてしまっているようなんです。 なので、確認画面に遷移する際にテンポラリファイルをリネームし、 削除されないようにして、その後送信を押すと、リネームしたファイルをメールに添付し、サーバ内のファイルを削除するような仕組みにしたんですが、 こうすると、確認画面から入力へ戻ったりそこでブラウザを閉じてしまった際に削除されません。 実際のところ、添付ファイルの送信ができるメールフォームで、確認画面を出すのは難しいのでしょうか? 長文で申し訳ございませんが、わかる方ヒント頂けると嬉しいです。
>>967 意外と面倒くさいよ、それ。
手法としては
1.アップロードファイルをファイルに保存しないでhiddenで持ち回す
メールに添付するもの=それほど大きなファイルではない=サイズを制限する
という扱いができるならこれが簡単。
2.TMPディレクトリを一定期間ごとにゴミ掃除する
各ファイルの更新日付を確認して古いファイルはゴミとみなして削除していく
とかがある。
969 :
nobodyさん :2006/12/07(木) 15:44:31 ID:VdHijTI7
FedoraCore5+Apache2+php5+postgreSQL8で、顧客名簿プログラムを作成しています。 洗濯した顧客の情報をCSV形式のファイルで出力しようと思ったのですが、「梶v「求vの文字がうまくCSVに はいってきません。DBの文字コードはutf-8で、出力するときにmb_convert_encodingでSJISに変換し、CSVに 納めています。 どうしてもだめなら「(株)」「(有)」で代用しようと思いますが、以前のDBとの整合の都合上できることなら「梶v「求vを 使用したいのです。 どなたかヒントをお願いします。
971 :
967 :2006/12/07(木) 15:54:31 ID:???
>>968 あら、やっぱり簡単な方法ってないんですね。
昨日googleでずっと調べてたんですが、出てこないわけですねぇ。
ありがとうございます。
>>971 セッション使ってファイルデータもセッションに格納してしまえば
hiddenでたらい回すよりは高速にたらい回しできるし
一定時間後のゴミ削除も自動でやってくれるから簡単。
>>969 変換する時にSJISじゃなくSJIS-winを指定したらどうだろう
974 :
969 :2006/12/07(木) 16:20:33 ID:???
>973 無事できました!ありがとうございます。SJIS-winという形式があったのを知りませんでした。 勉強しなおします。 >970 ご指摘ごもっともです。これまでサーバーはWin環境のみでやってきたため無頓着に使ってしまっていました。 今後は徐々に使わない方向にもっていきたいと思います。 ありがとうございます。
975 :
800 :2006/12/07(木) 16:56:24 ID:???
>>972 だけど、ブラウザを複数開くときの処理を考えないといけないわな。
>>975 そうなんだよね。
で、一般的な対処法とかあるんですかね。>タブブラウザで同時にアクセス対策
そろそろ次スレ立てますか?
くだらなくないはずの本スレと統合する形で。
もう統合してるってば。
だから
>>1 から「ここなら本スレで回答のないお前の」って一文も消えたし、
本スレにあった簡易FAQも
>>5-6 に移動してきたんじゃん。
何も知らないで間抜けなことぬかすな。
>>976 本スレも下らない質問しか来なかったから
統合したら下らない質問だけが残ったんだよ。
>>977 わかっとるわボケ。
スレタイを直すのかというとんじゃ池沼
わろた
981 :
967 :2006/12/07(木) 17:58:21 ID:???
>>972 セッションってファイルのデータも格納できるんですか。。
全く知りませんでした。
画像ファイルとかの場合、文字列化して格納するってことでしょうか?
>>979 下らねぇ質問しか来ないんだから、このままでいいだろ
>>979 直す必要があったら統合時に本スレ残して下スレを消してるよ。
修正無用。直しちゃったら下らない質問が投下しにくいじゃないか。
984 :
nobodyさん :2006/12/07(木) 18:16:07 ID:G0QKrQPg
超 つけてくれよ もっとハードル下げようぜ
985 :
nobodyさん :2006/12/07(木) 18:18:38 ID:Jk+UiVCG
aタグでURLを出力するときに
$h_URL = htmlspecialchars($URL);
echo "<a href={$h_URL}>{$h_URL}</a>";
って感じにしてるんだけど、
このとき例えば$URLの中身が「
http://example.com/?a=1&b=2 」とかだったりすると、
「&」がエスケープされちゃって、リンクが正しく機能しなくなります。
こういう場合、正しくエスケープして安全性を保ちつつ、
正常なURLをaタグのhref属性に送り込むには、どうすれば良いんでしょうか?
>>985 っていうか正しいURLならエスケープ要らないししちゃダメだろ。
URLを組み立てる時点で各パーツをurlencode()する。
ユーザ入力とかで信用ならないURLなら、1度 ? と & でパラメータを分解して、
全部urlencodeかませて再構築。
987 :
nobodyさん :2006/12/07(木) 18:28:24 ID:Jk+UiVCG
>>986 $URLはユーザから渡される値なんです。
やっぱりクエリストリングを分解しないとダメですか・・・
988 :
979 :2006/12/07(木) 18:44:56 ID:???
989 :
nobodyさん :2006/12/07(木) 19:37:48 ID:JHpRodpN
PHPにてディレクトリ内のファイルの数を取得するにはどう記述すれば良いのでしょうか?
>>989 そのディレクトリに他のディレクトリは含まれているのか?
配列に値が入ってなかったら削除するにはどうしたらいいのでしょうか? 例えば $array=array("あああ","いいい",""); $array_max=count($array); //3が入る これを空白値を削除してcountした時に「2」と表示したいのです
>>992 これです!出来ました。ありがとうございました。
994 :
nobodyさん :2006/12/07(木) 21:32:57 ID:TE+ffKua
1000ゲットm9(^Д^)プギャー
pear::HTTP_Requestでタイムアウトの検出ってできますか?
ume
uma
lヽ、 /ヽ i! ゙ヽ、 ,,,..-'"/ ゙i!⌒ヽー-、.,,.-イ''⌒ヽ l ゝ-─‐-/' i! ヽ、 i, ,ノ ,/" i! .... ゙'';;.. Y" ,/' 〈 :::::. '';;... 'i- 、,, i' 'i, :::::::: :::: 'i! ゙"ヽ、 i! ー- ,,_ 'i ::::::::: ''':;;; ヽ、 ゙) 'i,::::: ,--、  ̄ ,/ヽ '''' 'i,-‐'" /⌒ヽ、 i,_,〉 :::::,,-‐ ゝ ............. ヽ、 ( ヽ、 ,,.-‐''" ,) ::::::::: '\, ヽ、,, ノ,.-‐''" ノ-‐''"´( ::::::::::: ) "~ ( ,. -'" ヽ、 _,,... -‐─'''" ヽ、,,.. -‐'''" ``゙"´~
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。