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

このエントリーをはてなブックマークに追加
1nobodyさん
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

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

本スレ【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/

【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/

過去スレは>>2-3あたり
2nobodyさん:2006/04/09(日) 01:31:41 ID:???
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
3nobodyさん:2006/04/09(日) 01:32:15 ID:???
【PHP】下らねぇ質問はここに書き込みやがれpart10
http://pc8.2ch.net/test/read.cgi/php/1127581425/
【PHP】下らねぇ質問はここに書き込みやがれpart11
http://pc8.2ch.net/test/read.cgi/php/1129582431/
【PHP】下らねぇ質問はここに書き込みやがれpart12
http://pc8.2ch.net/test/read.cgi/php/1130835396/
【PHP】下らねぇ質問はここに書き込みやがれpart13
http://pc8.2ch.net/test/read.cgi/php/1132921016/
【PHP】下らねぇ質問はここに書き込みやがれpart14
http://pc8.2ch.net/test/read.cgi/php/1134868212/
【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
【PHP】下らねぇ質問はここに書き込みやがれpart16
http://pc8.2ch.net/test/read.cgi/php/1139146534/
【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
4nobodyさん:2006/04/09(日) 01:32:54 ID:???
・part17よりテンプレ化

extractは極力使わないほうがいいと思います。
例えば、

hoge.php?_SESSION[user_pw]=hogehoge

って形で送られてきたとします。これを

extract($_GET)

しちゃうと、$_SESSION['user_pw']の値が、
"hogehoge"に変更されてしまいます。

もし事前にユーザのパスワードを、$_SESSION['user_pw']に
保持してたとしたら、勝手に書き換えられてしまうことになります。

それを避けるために

extract($_GET, EXTR_SKIP)

ってやって上書きを避けたとしても、
このままでは変数の初期化を忘れる危険性があります。

extract($_GET, EXTR_PREFIX_ALL, "get")

と、接頭辞をつけるのが一番安全な気はしますが、
それなら最初から
$hoge = $_GET['hoge'];
ってやるのと手間が変わらないと思いますし、可読性も増します。
確かにextractするのは楽だと思いますけど。
5nobodyさん:2006/04/09(日) 01:35:05 ID:???
6nobodyさん:2006/04/09(日) 01:35:33 ID:???
前スレ1000、舐めてるなw
7nobodyさん:2006/04/09(日) 01:36:36 ID:???
SQLインジェクションとは

全く心配は要りません。
昔と違い今は法律ができたおかげで安心して脆弱なプログラムが使えるらしいです。
8nobodyさん:2006/04/09(日) 01:47:32 ID:???
PHPプログラマの心得その1

PHPに求められるものは1に開発の速さ、2に開発コストの安さです。
決してエラーチェックやセキュリティ対策を頑張ってはいけません。
それはコードの冗長化や複雑化を招き、テスト期間の長期化も招きます。
そのような堅牢なプログラムはJavaやC♯といった高性能言語に任せればいいのです。
9nobodyさん:2006/04/09(日) 01:48:32 ID:???
前スレからの続き。
漏れの会社はデフォではチェックしないが
別料金でSQLインジェクションなどの対策オプションを作って依頼者にはちゃんとやってる。
XSS対策: +1000円
SQLインジェクション対策: 1500円
CSRF対策: +4000円
CSSXSS対策: 30000円

CSSXSSはWebアプリではなくInternetExporerの脆弱性であり対応が困難なので高価になっている。
10nobodyさん:2006/04/09(日) 01:52:39 ID:???
・・・それは安すぎじゃないか?
11nobodyさん:2006/04/09(日) 01:53:04 ID:qYTyFCRs
>>9
SQLインジェクション対策って、具体的になにしてるの?
外部から渡される値をSQLに埋める時にエスケープしてればそもそも何の心配もいらないと思うんだけど、
わざわざオプションにするような“対策”ってどんなの?
12nobodyさん:2006/04/09(日) 01:55:00 ID:???
>>11
むしろ「エスケープ外せば1000円値引きできますよ」とかいうオプションにしか見えないw
13nobodyさん:2006/04/09(日) 01:56:57 ID:???
>>10
mysql_escape_stringやhtmlspecialcharsをかますかどうかなんて
開発コストからしたら500円もしないもののような気がするが。
14nobodyさん:2006/04/09(日) 02:03:26 ID:???
>>13
それを噛ますかどうか交渉する時間があるなら、最初からやった方が無駄が無いよな。
というか、エスケープなんてのは空気のようなもんで、あって当たり前だと思ってたよ。
エスケープしてなかったら入力にかなりの制限が付くはずだけど、エスケープしない人たちはその辺どうしてるのかな?
15nobodyさん:2006/04/09(日) 02:09:25 ID:???
一言「運用でカバー」
16nobodyさん:2006/04/09(日) 02:11:50 ID:???
>>14
交渉自体は営業や担当窓口でやるものだから無駄とか関係ないんじゃ?
で、料金一覧表に最初から明記してあって、発注時に選べばいいだけになってる気がする。
17nobodyさん:2006/04/09(日) 02:17:46 ID:???
>>16
>>9 のオプション全部入れたって4万もしないようなもんだろ?
それをわざわざオプションを設けて作り分けるってのも、そもそも無駄な気がするけどなぁ
あヤベ、うっかり対策入りにしちまった、外さないと・・・ なんてことになったら目も当てられない

しかし、わざわざする“対策”の内容は興味あるな。
まさか単なるエスケープの有無じゃないよな?
18nobodyさん:2006/04/09(日) 02:18:12 ID:???
大してデカい仕事やってるヤツいないんだな。

普通は、開発終了後は業務委託契約に切り替えて、
恒久的にバグなどの補填や、セキュリティバグなどの保証とする。
だから、もしそのセキュリティバグから何かの情報が漏れて、経済的負担が出れば、
受託したこっちにもいくらかの負担が発生する。
会社であれば、負担としては小さいかもしれないが、会社の信用が落ちる。
個人だったら、その負担だけでもう一生借金地獄もありうる。
それを極力無くす為に当然SQLインジェクションとか、XSSやらは実装は当然だろ。

100とかそんぐらいのしょぼい仕事してないで、
もうちょっと大きいクライアントとってくれば?井の中の蛙サン達。
19nobodyさん:2006/04/09(日) 02:31:34 ID:???
一体どのレスに対してのレスなんだ。
20nobodyさん:2006/04/09(日) 02:38:00 ID:???
PHPおもすれー

最近PHPばっかりだよ。もうintとか型を忘れそうだ・・・
21nobodyさん:2006/04/09(日) 02:43:15 ID:???
RSSが更新されたらメールで知らせてくれるスクリプト公開してる
ところありませんかあ?
22nobodyさん:2006/04/09(日) 02:43:40 ID:???
>>21
スクリプト探しはスレ違い
23nobodyさん:2006/04/09(日) 02:48:40 ID:???
>>22
ごめんなさいです><
24nobodyさん:2006/04/09(日) 03:21:20 ID:???
>>9はどう見ても釣りだろ。お前ら簡単に釣られ過ぎ。
プログラマとかオタクは本当に世間知らずが多いな。
3年くらい営業の仕事でもやってこいって感じだ。
25nobodyさん:2006/04/09(日) 03:27:07 ID:???
>>24
> 3年くらい営業の仕事でもやってこいって感じだ。
> 3年くらい営業の仕事でもやってこいって感じだ。
> 3年くらい営業の仕事でもやってこいって感じだ。
コーディングが出来ないから営業に回されちゃったんですか^^;
かわいそうですね(´・ω・`)
269:2006/04/09(日) 03:43:23 ID:???
>>13
そんなことは無い。
print "名前: $name<br />年齢: $age"; というコードが、
print "名前: " . h($name) . "<br />年齢: " . h($age); のようになるわけで、
コードが汚くなる上、コード全体ではh関数を1000個近く入力するわけだ。
ヒアドキュメント内で使うときには別の変数への置き換えなどもいるからね。
これはかなりの手間。
それが、たった1000円とはお得だ。

顧客としては、セキュリティ対策が行われているか不安なわけで、あえて別料金にしたほうが安心感が出る。
「当社ではXSS対策、SQLインジェクション対策は標準で行ってます。」よりは、心理的にセキュリティ対策のチェックオプションを選ぶ方が安心できるわけだ。

営業の人によれば、たった1500円であの価格comのクラックの原因のSQLインジェクション対策ができるなんて!! って感激してたクラもいたそうだ。
クラは知識が無い人が多い。

ちなみに、CSSXSS、CSRFについては最近では「正しい情報」が公開されていて次のようなサイトで誰でも観覧できる。
http://www.jumperz.net/texts/csrf.htm
http://www.oiwa.jp/~yutaka/tdiary/20060330.html
http://bakera.jp/hatomaru.aspx/glossary/0043005300520046
http://bakera.jp/hatomaru.aspx/glossary/30bb30c330b730e730f356fa5b9a653b6483
http://takagi-hiromitsu.jp/diary/20050427.html
http://slashdot.jp/developers/06/04/01/2145235.shtml
http://tdiary.ishinao.net/20060331.html
http://d.hatena.ne.jp/hoshikuzu/20051204#P2005204MATANGILLON
http://kaede.to/~canada/doc/csrf-warning
http://kaede.to/~canada/doc/csrf-todo

しかし、つい1年前にはまともな情報は公開されておらず、Webからえられる情報は間違った情報、不十分な対策ばかりだった。
mixiでの被害でやっと世間に知れ渡ったって感じだったね。
Webから情報がえられないから会社で独自に対策を研究したため、CSRF関係はだいぶコスト(人件費)がかかったよ。
27nobodyさん:2006/04/09(日) 03:55:54 ID:???
出力部分をまとめとけばいいじゃない
28nobodyさん:2006/04/09(日) 04:02:53 ID:???
個人でやっているならそれもありだろうけど、そのコストに
1000円や1500円の代価しかつかない、付けられないってもなんだ
かなぁ。
29nobodyさん:2006/04/09(日) 04:12:05 ID:???
>>27
例えば、$error という変数にはプログラム側でのエラーメッセージ(タグ含む)が入ってるかも知れんし、
全ての変数をエスケープ処理していいわけはない。
そして、前の段階でチェックをすれば、チェック漏れが生じる可能性があるため、
「出力前」の時点でエスケープ処理をするのが一番確実かと。
30nobodyさん:2006/04/09(日) 04:19:18 ID:???
print "名前: $name<br />年齢: $age"; の例だと、

h ("名前: $name");
echo ("<br />");
h ("年齢: $age");

これのがチェック漏れはおきないんじゃ
31nobodyさん:2006/04/09(日) 05:34:12 ID:???
うちは
function disp_xxxx($data) {
  $data = array_may('htmlspecialchars', $data);
?>
名前: $d[name]<br />
年齢: $d[age]<br />
<?
みたいな。HTMLのとこは実際は別ファイルだけど。
テンプレートライブラリ使ってることも似たような感じじゃないの?
いまどき、print "年齢: $name<br />"なんつーコードは書かんだろ。

> $error という変数にはプログラム側でのエラーメッセージ(タグ含む)が入ってるかも知れん
まぁ、エラー表示とかシステム表示系の関数はまた独自のルールで作るもんだよな。
それ以外の通常のHTML表示に関しては、HTMLを書いてる部分(デザイナーが編集してる部分)以外で
変なタグ入れられても困るので変数にタグ入れるのは絶対禁止にしてる。
32nobodyさん:2006/04/09(日) 05:34:59 ID:???
あ、$d[name]じゃなくて$data[name]だったか。
33nobodyさん:2006/04/09(日) 05:40:16 ID:8VHURzhD
漏れはエスケープしなくても
echo "名前: ", $name, "<br />年齢: ", $age;
って書くなぁ。ヒアドキュメントも?>〜<?phpも汚くなるので使わない。
この辺は考え方の違いとかあるんだろうけど。


>>前スレ993
http://pc8.2ch.net/test/read.cgi/php/1142417901/993
>検索結果の2ページ目以降が、フォームで受け取った値を保持しません。
>どうしたらよいでしょうか?
2ページ目以降にもフォームで受け取った値を渡すようにする。
34nobodyさん:2006/04/09(日) 05:45:23 ID:???
>>31-32
興味ある。
いまいちよくわからんだけど、
$data[name] って何?
3534:2006/04/09(日) 05:52:04 ID:???
ようするに、予め $data をエスケープしたやつを $d['data'] のように配列に変換しちゃうってことかなるほどねー。
それだと確かに、

print "名前: $d['name']<br />年齢: $d['age']";

とかける。

36nobodyさん:2006/04/09(日) 06:19:30 ID:???
>>33
考え方の違いが結構ありそうだなぁ。
俺は "名前: ", $name とか"名前" . $name ってのは、関数を通す必要が
あるとかの場合以外は極力使わないようにしてる。(関数使う場合も可能な限り事前変換)
出力内容が . とか , とかで大量に分断されてると、その文中にさらに , . " ' を含む場合に
ミスがあっても一目で判断することが至難の業になるからね。

>>31の?>HTML<?php 形式ってのは実際には別ファイルのHTMLをincludeで読み込んでるから
微妙に違う話だったりもするんだけど、ちっこいプログラムなんかでは?>HTML<?phpも使う。
理由は対応エディタなら識別してHTMLタグを色分け表示してくれたり、
<DIV>→</DIV>などの閉じタグ間で括弧とかと同様に一発ジャンプできるようになるから。
37nobodyさん:2006/04/09(日) 09:01:25 ID:???
つーかさ、クラック対策とか以前に入力されたものをエスケープもしないで出力しちゃうっていうのは、使用上の大きな制限が付くわけだろ?
コードが綺麗とか汚い云々言う前に、きちんと動くものを作らなくちゃって思わないの?
たかだか < とか > とか " とか入力されただけで表示や機能が破綻してしまうわけだよ?
マニュアルにそういう入力で画面が崩れるのは仕様ですとか書いちゃうわけ?
プロがやる仕事として恥ずかしいとか思わない?

ちなみにおれは、画面表示HTMLは別ファイルにしておいて、そこでエスケープやら埋め込みやらするよ。
こんなかんじ。

(コード hoge.php)
$keyword=ほにゃらら;
$records=検索($keyword);
include 'hoge.tpl';

(別ファイル hoge.tpl)
<form>
<input type="text" name="keyword" value="<?=esc1($keyword);?>"><br />
<input type="submit" name="search" value="検索"><br />
</form>
検索結果<br />
<? if(empty($records)) { ?>
該当レコードはありません<br />
<? } else { ?>
<table>
<tr><td>名前</td><td>年齢</td></tr>
<? foreach($records as $r) { ?>
<tr><td><?=esc2($r['name']);?></td><td><?=esc2($r['age']);?></td></tr>
<? } ?>
</table>
<? } ?>
38nobodyさん:2006/04/09(日) 09:05:07 ID:???
SmartyとかMojaviで、PHPファイル名に「class」という文字列を
挟むのを良く見るのですが、どんな意味があるのでしょうか?
(例えば、Smarty.class.phpとかController.class.phpとか)
そんな命名規約ってありましたっけ?
39nobodyさん:2006/04/09(日) 09:18:09 ID:???
SmartyやMojaviを作った人の趣味じゃねーの?
40nobodyさん:2006/04/09(日) 10:52:26 ID:???
php覚えれば2chみたいな掲示板作れますか?
41nobodyさん:2006/04/09(日) 11:11:04 ID:???
はい
42nobodyさん:2006/04/09(日) 11:41:43 ID:2atGm5L3
セッションの為の文字列を生成しようと思っているのですが、
一般的にハッシュが使われるのはなぜでしょうか?
mt_randを使おうと思っているのですが、何か問題があるのでしょうか?
43nobodyさん:2006/04/09(日) 12:14:58 ID:???
推測が不可能(に近い)って意味じゃ対して変わらんかも知れんが、
mt_randの方は RAND_MAXの制限を受けるし、
セッションの方は md5(128bits)かSHA-1(160bits)になるから、
まぁ強度が違うって感じかと。
44nobodyさん:2006/04/09(日) 13:16:37 ID:???
>>42
セッションのための文字列?? セッションIDのこと?
それはPHPが勝手に発行してくれるんでは・・・
45nobodyさん:2006/04/09(日) 13:49:02 ID:???
[notice] Parent: child process exited with status 3221225477 -- Restarting.
[notice] Parent: Created child process 5420
[notice] Child 5420: Child process is running
[notice] Child 5420: Acquired the start mutex.
[notice] Child 5420: Starting 250 worker threads.

Apacheがこのようなエラーを吐いて強制終了してしまうのですが、
PHPコード上、どのような不具合が生じているのでしょうか?
パースエラー等が出るわけでもなく、一度は正常に表示されて、
リロードするとこのようなエラーが発生することが多いです。
OSはWinXPです。
46nobodyさん:2006/04/09(日) 14:52:11 ID:LktfeTrO
ファイルのアップローダを作っているのですが
POSTで受け渡し
print $_FILES["file"]["tmp_name"];
にてjpegならimage/pjpegと表示されるのですが
bmpだけ何故か空になってしまいます。
apache2を使っているのですが、設定によるものなのでしょうか?
47nobodyさん:2006/04/09(日) 15:19:01 ID:???
>>46
まず
$_FILES["file"]["tmp_name"]
ではなく
$_FILES["file"]["type"];
じゃないのか?
それはそうとMIME型なんてブラウザが吐くあいまいなものと
オレは認識しているのだが…ちがうのかな?
48nobodyさん:2006/04/09(日) 15:30:37 ID:???
>>46
ブラウザが送ってくるContent-Typeを代入しているだけ。
bmpの時に送られてないだけじゃねーの?
当然詐称される可能性があるので、mime_content_type() (こいつは中身(つーか先頭部分だけ)を調べる)か、
getimagesize()なんかで、それが正しいかどうかチェックした方がよい。
4946:2006/04/09(日) 15:45:47 ID:???
>>46>>47
すいません。print $_FILES["file"]["tmp_name"]; は書き間違いです^^;
なるほど、理解できました!
ありがとうございました!
50nobodyさん:2006/04/09(日) 17:16:32 ID:???
>>45
PHPかApacheかどっちかは不明だけど、メモリアクセス違反とかメモリリークとか
そういった内部的な致命的エラーが発生してる確率が高い。
それ、全然くだらん質問じゃないと思う。

同種の話がいくつかML等に転がってるけど
・解決しなかった

・ApacheやHPのバージョンを変えたら何故か直った
のどっちかくらいしか見当たらない。
51nobodyさん:2006/04/09(日) 17:26:36 ID:???
>[notice] Parent: child process exited with status 3221225477 -- Restarting

Apacheに詳しい人なら3221225477 = 0xc0000005から何か追えるかもね
とりあえず質問する場所はここじゃないと思われ
52nobodyさん:2006/04/09(日) 18:21:24 ID:???
>>51
ApacheMLでもそのエラーからは何も回答が出せてなかったよ
53nobodyさん:2006/04/09(日) 18:44:04 ID:???
array_key_existsは連想配列には対応していないのでしょうか?
断層が深い配列がヒットしなくて困っています。
54nobodyさん:2006/04/09(日) 18:50:30 ID:???
てか、多次元配列(のようなもの)には対応してないんじゃまいか?
次元数が不定なら再帰呼び出しで潜っていくのが吉かと。
55nobodyさん:2006/04/09(日) 18:59:30 ID:???
>>53
連想配列には普通に使える。2次元以上の深さは無理。
なんでそれを一緒に語る?
56nobodyさん:2006/04/09(日) 19:02:24 ID:???
ifの条件式で

if (0 <= $num < 10) {
・・・
}

こういう書き方できないんですか?エラーでてしまいます。

if ($num >= 0 && $num < 10) {
・・・
}

これならうまくいくんですが。
57nobodyさん:2006/04/09(日) 19:03:12 ID:???
>>56
ムリ
58nobodyさん:2006/04/09(日) 19:16:40 ID:???
"0xFFFFF"という形式のストリングを
実際に16進数の0xFFFFFFという値に変換するにはどうやればよいのでしょうか。
宜しくお願いします。
59nobodyさん:2006/04/09(日) 19:22:51 ID:???
>>58
hexdec()
マニュアルくらい常備したら?
60nobodyさん:2006/04/09(日) 19:32:15 ID:???
>>59
ありがとうございます。
型の変換パートと、文字列パートばっかり探してました。
mathにあるなんて思いもしませんでした。
61nobodyさん:2006/04/09(日) 19:36:06 ID:???
「進数変換」って言葉知ってる?
62nobodyさん:2006/04/09(日) 19:40:47 ID:yKOq7PT+
>>61
恥ずかしながら今知りました。
63nobodyさん:2006/04/09(日) 19:59:17 ID:???
MySQLなどとの連携にすぐれているといわれてますが
これがあると具体的にどのように役にたつのでしょうか?
phpだけでは掲示板とか作れませんか?
64nobodyさん:2006/04/09(日) 20:02:58 ID:???
データベースが無くてもつくれます。
65nobodyさん:2006/04/09(日) 20:07:33 ID:???
>>63
より大規模で高性能なものを作るときに、高速で安定したものが作れます。
個人サイトのちっこい掲示板くらいなら別に無くてもいいです。
66nobodyさん:2006/04/09(日) 20:13:34 ID:???
>>64
>>65
ありがとうございます
6742:2006/04/09(日) 21:18:39 ID:2atGm5L3
>>43
RAND_MNAXの制限を受ける点については一文字ずつ生成すれば良いと思うのですが、
元々考えていたtiger192,4でのセッション文字列生成より明らかに遅い(五倍ほど)のが気になります。
for($i = 0; $i <=32; $i++) { $hash .= chr(mt_rand(62, 126)); }というコード(同じ192ビット)でベンチマークを取ってみたのですが。。
出来ればchrを\xにして、forを使わないようにすればもう少し早くなりそうなんですが。自分ではこれが限界です。
どなたか上のコード添削していただけると嬉しいです。
乱数生成であれば専用の関数を使った方が早いように思えるのですが、ハッシュの方が適しているのでしょうか?
それとも適切なコードを書けばそれより早い結果を得られるのでしょうか?どなたかご教示していただけると嬉しいです。
>>44 PHPの機能は使わず自作する場合です。PHPではハッシュを使ってるみたいですね。
68nobodyさん:2006/04/09(日) 21:42:15 ID:???
>>45
Warningエラーの行はない?Noticeだけでは落ちないと思うのだが
69nobodyさん:2006/04/09(日) 21:59:29 ID:???
Warningじゃねーか。Errorか。

ttp://www.google.com/search?num=50&lr=lang_ja&UTF-8&q=Parent%3A+child+process+exited+with+status+3221225477+--+Restarting.
スタックオーバーフロー起こしてるっぽい?
70nobodyさん:2006/04/09(日) 22:02:43 ID:???
2chが未だにSQLを採用しないのにはどういうわけがあるんだろ
71nobodyさん:2006/04/09(日) 22:09:03 ID:???
SQL(つーかデータベース)を使うメリットがあるならそっちの方が知りたいね。
72nobodyさん:2006/04/09(日) 22:10:01 ID:???
73nobodyさん:2006/04/09(日) 22:18:52 ID:qYTyFCRs
>>67
完全な乱数を、ダブらないことを保証して作るのは少し面倒だったりしない?
74nobodyさん:2006/04/09(日) 22:28:21 ID:???
完全な乱数だなんて、そんなパンドラの箱を・・・
75nobodyさん:2006/04/09(日) 22:40:32 ID:???
>>73
重複を許さないのであれば、それは乱数発生ではなくてシャッフルになるだろ
7642:2006/04/09(日) 22:44:08 ID:???
>>73
ご返信ありがとうございます。完全に均等である(事を目指している)が故に、ハッシュを使うのも乱数を使うのもコリジョンの確率は同程度だったと記憶しております。

先程のコードを検討してみたところループで馬鹿みたいにロスをしていたので、現在二度mt_randを使って生成するように頑張ってます。
素直にハッシュ使えば良いんですが、どうしてももやもやするので。。
77nobodyさん:2006/04/09(日) 23:01:58 ID:???
>>70
単純でミニマムな要素を組み合わせて大規模にした構成の方が結果的に高速だから。
ここまででかくなると普通にDBにしても性能は出ない。
凝ったDBを構築するくらいなら生datを専ブラに拾わせる今の形態の方がずっとシンプルで性能がいい。
78nobodyさん:2006/04/09(日) 23:05:34 ID:???
>>42
現在使用中の他と重複しない一意の文字列を生成するのに
1番手っ取り早くてリソースも食わなくて高速だからでは。
逆にもっといい手法ってあるの?と聞きたい。
色々書いてる1桁ずつ乱数使って…とかいう話は「バカ?」としか思えない。
普段から常用するセッションIDの生成にそんなリソース食う方法使えるわけないでしょ。
7942:2006/04/09(日) 23:12:45 ID:2atGm5L3
>>78
素人考だとハッシュの生成(同一性も確認できる均等に分配される文字列)より、乱数の生成(均等に分配される文字列)の方が早いような気がするのですが、
もしよろしければなぜハッシュの方が早いのか教えていただけないでしょうか?気になります。。
80nobodyさん:2006/04/09(日) 23:25:38 ID:aTeqKq3o
前スレ988です。
前スレ990さんいますか?
javascriptでやる方法は検討していたのですが、分かりませんでした。
小窓からjavascriptを使って、メインウインドウのselectの内容(mysqlに
新規に追加した項目)を更新したいです。
使用する関数や具体的なコードのヒントが書かれたページなど
ご存知でしたら教えてください。
よろしくお願いします。
81前スレ990:2006/04/09(日) 23:27:26 ID:???
>>80
JavaScriptの質問スレいきな
82nobodyさん:2006/04/09(日) 23:30:15 ID:???
>>80
Ajax をぐぐってみたら?
8382:2006/04/09(日) 23:34:05 ID:???
あ、小窓を開くのね。
じゃあ Ajax なんていらないね。
>>81 が正解だと思う。
84nobodyさん:2006/04/09(日) 23:37:51 ID:???
>>80
JavaScriptの基礎的テク。
その辺の初心者向けサンプル集にも書かれてるんじゃない?レベル。
85nobodyさん:2006/04/10(月) 00:20:37 ID:???
会社がただのhtmlとcssでwebサイト作るだけからphpとDB使った仕事も受けるようになってから、勉強しながらこなした仕事の中には全くセキュリティ対策してないのもあるや。アヒャヒャ

>>31
array_mapだよね?
array_mapで、POST、GET、SESSION、COOKIEもしくは$_REQUESTにまとめて掛けちゃうのがやっぱり定番なんですかね?
その他、エラー処理なんかどうしてますか?>エラーとする文字列の検出
例えばあきらかに悪意のある文字列が含まれてる時とか・・・
漏れは、そういうときは、もう別画面に飛ばして、全部、自分に$_REQUESTの内容をメールで飛ばすって感じ。

個別に「○○欄に○○が含まれています」みたいなエラー処理(エラー告知)は、マンドクサ
顧客が記入するフォームはめんどくさいけど、項目数たかが知れてるから力技でなんとかしてる。


>>33
漏れはたいていこう書く

echo "名前: {$name}<br />年齢: {$age}";

これが一番可読性よくない?

>>前スレ993
POSTした検索条件をセッションに入れておいたうえでページングとか?
86nobodyさん:2006/04/10(月) 00:35:01 ID:???
>>85
$_POST全部エスケープとかはしないなぁ。
必要なのはあくまでSQLに入れるデータとHTMLに吐き出すデータでしょ?
だからSQL用の関数・メソッドと表示用の関数・メソッドでそれぞれ
受け渡したデータのみ変換かけてる。
87nobodyさん:2006/04/10(月) 00:42:07 ID:???
88nobodyさん:2006/04/10(月) 00:57:08 ID:???
>>45
> [notice] Child 5420: Starting 250 worker threads.
直接の原因は判らんがMPMあたりくさい。
workerで使ってるなら、そういうのが出るのも甘んじろというのが現状かも。
http://www.php.net/manual/ja/install.windows.apache2.php

89nobodyさん:2006/04/10(月) 00:57:33 ID:???
>>76
予め文字列連番を数億個生成しておいて、
都度食いつぶしていけば?
90nobodyさん:2006/04/10(月) 00:59:58 ID:???
>>79
単純な、ハッシュ値の算出vs1回の乱数ならそりゃ乱数の方が速いだろうけど、
今やろうとしてるのは30〜50桁を桁数分だけ毎回乱数取得だろ?
そんなのどうやってもハッシュほど速くなんて計算できないだろう。
9142:2006/04/10(月) 01:17:38 ID:EZQH4hCw
>>86
返信ありがとうございます。この実行時間差で悩んでるので、それはちょっと、、です。
>>90
forのところが悪いですか。。一度で算出しようにも桁数が大きくなりすぎてorzです。
いくつかに分ければ出来るかなぁ、と試行錯誤してますがスキル不足で出来ません><
もしよろしければコードを、、と甘えてみるテスト。
92nobodyさん:2006/04/10(月) 01:24:52 ID:???
なんだこいつ
うぜえ
93nobodyさん:2006/04/10(月) 01:35:24 ID:???
>>91
> もしよろしければコードを、、と甘えてみるテスト。
だからハッシュでやれって。無理だから。
何のためのハッシュだと思ってんのよ。
スキルも無いくせに「乱数の方が速いはずだ」とかいいかげんなことぬかしてんじゃねぇ。
9442:2006/04/10(月) 01:47:28 ID:???
ごめんなさい。非常に申し訳ないのですがベンチマークで致命的で初歩的なミスを犯していました。
普通にMTでの生成が早かったです。お騒がせいたしました。
95nobodyさん:2006/04/10(月) 01:53:29 ID:???
釣りウザ
96nobodyさん:2006/04/10(月) 02:54:11 ID:???
質問させてもらいます
Webサイトを作っているのですが
ページの一番下段に、コピーライトなどの文を入れています。
今までは一々、1ページ枚にHTMLで記述していたのですが
それだと、その文(コピーライト等)に変更があった場合全て書き直しが必要になるので
PHPを使い、その部分を読み込もうと思いました。

ですが、実際にやってみると
そのコピーライトの部分を読み込む際に
require('./under.php');
とやると、同位のディレクトリからは問題なく読み込めるのですが
その下位のディレクトリになると
require('./../under.php');
等としていかなければならず、ディレクトリ構成に変更があった場合は
結局書き直しが必要になってしまいます。

こういう場合は、皆様はどのようにして
上記のようなことを実現しているのでしょうか?
すいませんが、教えていただけると幸いです。
どうかよろしくお願いいたします
97nobodyさん:2006/04/10(月) 03:09:59 ID:???
日本語でおk
98nobodyさん:2006/04/10(月) 03:16:22 ID:???
>>96
1.フルパスで書く
2.$_SERVER['DOCUMENT_ROOT']からのパスにする
3.includeパスを設定する
好み+TPOでご自由に
99nobodyさん:2006/04/10(月) 06:27:30 ID:???
みなさんありがとうございました。
フレームワークのEthnaを使っていたのですが、その設定部分に
'log_facility' => 'user',
とするとこの現象が起きていたようで、結局この部分を書き換えてとりあえず
スクリプト自体は動くようになりました。
また、PEARをinclude_onceする部分をコメントアウトするとことでも
Apacheの強制終了が無くなりました(当然Fatal Errorでスクリプト自体は動きませんが)。
根本的な原因はわかりませんでしたが、PEARとEthnaのLogger周辺が原因となっていたようです。
100nobodyさん:2006/04/10(月) 06:27:49 ID:???
>>96
98の続き。

4.その程度のことを自分で解決できない場合、
コンピュータのセンスが無さ過ぎのでプログラミングは諦める。
101nobodyさん:2006/04/10(月) 06:27:59 ID:???
すいません、>>99>>45です。
102nobodyさん:2006/04/10(月) 06:52:57 ID:???
>>31
可読性が増すのでその方法を採用しようと思うのですが、
幾つか質問があります。

array_may という関数を使っているようですが、これはどのような処理のユーザ定義関数でしょうか?
103nobodyさん:2006/04/10(月) 07:18:38 ID:???
>>102
array_mapの書き間違い
104102:2006/04/10(月) 08:44:10 ID:???
>>103
ありがとうございます。
幾つか質問があります、と言いましたがあまり質問しまくるのも良く無いので
続きは自分で調査、研究してみます。
105nobodyさん:2006/04/10(月) 10:15:55 ID:???
>>104
一応言っとくと、>>31はあちこち書き間違ってるのでそのまま鵜呑みにしないのが吉。
106nobodyさん:2006/04/10(月) 11:39:39 ID:???
このスレが一番面白いな。
107nobodyさん:2006/04/10(月) 13:14:26 ID:???
> の引用符をテキスト文に加えたいのですが、
ぱっと思いついた方法は file()で各行を配列に加えて、
各要素に> を加えて、再度結合です。

もっと簡単な方法あったらきぼんぬです。
10880:2006/04/10(月) 13:30:27 ID:qYnFdAMk
81〜84レスありがとうございます。
javascript質問スレにいったのですが、あまり人がいないようで解決できていません。
onchangeとかonfocusでやるっぽいのですが、
どうやってリロードせずに新しいレコードをmysqlから引っ張るかが分からないです。
スレ違いだとは思いますが、ヒントをもらえるとうれしいです。
109nobodyさん:2006/04/10(月) 13:30:30 ID:???
こんなのどう?
$text = Preg_Replace("/(.*\n|.+)/",">$1",$text);
110109:2006/04/10(月) 13:31:51 ID:???
>>107 へのレスね
111nobodyさん:2006/04/10(月) 13:39:09 ID:???
改行コードを改行コード+>に置換
112nobodyさん:2006/04/10(月) 13:40:08 ID:???
>>109
その正規表現おかしいだろ。
113109:2006/04/10(月) 13:44:37 ID:???
>>112
ん?どうおかしい?
0文字以上+改行か、1文字以上の行の先頭に > を付け足すようにしたつもりだけど。
.*\n だけだと $text の最後にも無条件で改行が付いちゃうし、
.* だけだと空行の先頭に改行が付かないからこんな感じに落ち着いたんだけど。
114113=109:2006/04/10(月) 13:45:49 ID:???
× .* だけだと空行の先頭に改行が付かないからこんな感じに落ち着いたんだけど。
○ .+ だけだと空行の先頭に改行が付かないからこんな感じに落ち着いたんだけど。
115nobodyさん:2006/04/10(月) 13:53:06 ID:???
>>108
メインウィンドウはリロードしなくても、データ自体は小窓を開くことによって取得するんだよね?
だったら小窓の onLoad からメインウィンドウのフォームオブジェクトに値をセットするんじゃだめなの?

というか、JavaScript のリファレンスって持ってる?
無いなら http://www.tohoho-web.com/js/index.htm この辺はどうよ。
http://www.tohoho-web.com/www.htm から丸ごとダウンロードできるよ。
116109:2006/04/10(月) 14:01:44 ID:???
説明がメタメタでしたね・・・
スレ汚しとは思いつつも、気になるので書き直します。

.* だけだと $text の最後に無条件で > が付いてしまうから .*\n にしたんだけど、
これだと $text の最後の行が改行で終わってないとその行に > が付かないから
.*+ も付けてみた

が正しいです。
117107:2006/04/10(月) 14:03:05 ID:???
>>109
うまくいきました。
トンクスです!
118nobodyさん:2006/04/10(月) 14:09:06 ID:???
正規表現の行頭
119nobodyさん:2006/04/10(月) 14:10:22 ID:???
>>118
もっと詳しく
120nobodyさん:2006/04/10(月) 14:21:00 ID:???
^
121109:2006/04/10(月) 14:24:45 ID:???
>>120
$text は複数行で構成されているつもりだったので、
シングルラインモードならそれ付けたらうまく動かないし、
マルチラインモードでは ^ はあっても無くても同じ動作になります。

122108:2006/04/10(月) 14:38:17 ID:qYnFdAMk
>115さん レスありがとうございます。
amazonでもオススメだった、mdnのjavascriptビジュアルリファレンスを買いました。

やりたいこととしては、
投稿フォームの真ん中あたりまで記入すると、カテゴリーのプルダウンが
出てくるん出すけど、そのプルダウンの下に「新規カテゴリーを登録」という
ボタンがあって、それを押すと小窓が開きます。
小窓には登録済みのカテゴリーのリストが出ていて、新規登録用の
inputがあって、カテゴリーの削除なんかもここでできます。
登録が完了して、小窓を閉じて、再びメインウインドウに戻ったときに
カテゴリーのプルダウンをクリックすると、さっき小窓で登録した
カテゴリーがリストに載っているという状態にしたいのです。
カテゴリーはカテゴリー名しか入っていないテーブルで管理されていて、
新規投稿フォーム(メインウインドウ)が開かれたときに
select category from categorytableみたいに呼び出されます。
小窓で新規登録した後に、リロードすれば反映させられますが、
カテゴリー選択以前に記入していた各inputの内容もクリアされてしまいます。

この場合でも、115さんの方法で解決できますでしょうか?
123nobodyさん:2006/04/10(月) 15:15:48 ID:T3nuwwG3
教えてください。

$data = @file($file); //50行
for($i = 0; $i<10; $i++){ //最新10件表示
list($A,$B) = explode("<>", $data[$i]);
echo "<p>$A $B</p>";
}
こんな感じになってて、$dataには通し番号が入っていません。
最初に行数を数えて、
50
49
48
・・・と言う風に新しい方に大きな番号を振っていくにはどうしたらいいでしょうか?
124nobodyさん:2006/04/10(月) 15:31:18 ID:???
>>122
できるよ。
小窓から登録なり削除をしたとき、submit するわけでしょ。
その応答ページに、メインウィンドウのフォームオブジェクトを書き換える JavaScript を埋めてやって、
処理完了後に小窓を閉じればいい。
メインウィンドウをリロードする必要なんて無い。
125nobodyさん:2006/04/10(月) 15:36:07 ID:???
>>123
count($data) で件数が取れるよ
その例で言えば 50 が返ってくる
126123:2006/04/10(月) 15:43:02 ID:???
>>125
そんなことは分かってるんですー。タイミングが分からないんですー。。
って思ったんですけど、言われて改めて考えたら分かりました!
$no = count($data) - $i;
ってすれば良かったんですね!$x-1とかやって悩んでました。
ありがとうございました。
127nobodyさん:2006/04/10(月) 15:47:18 ID:???
うざ
128nobodyさん:2006/04/10(月) 15:59:55 ID:???
そんなことは分かってるんですー。
129nobodyさん:2006/04/10(月) 16:26:17 ID:???
そんなことは分かってるんですー。
130108:2006/04/10(月) 16:41:02 ID:qYnFdAMk
124さん ありがとうございます。本当に感謝です。
板違いにもかかわらず、親切に答えてくださって助かります。
応答ページというのは、「登録が完了しました。」とか出るページでしょうか?
自分のコードではそこでinsert intoの処理をしています。
それとメインウィンドウのフォームオブジェクトを書き換える際に必要な
構文とかが具体的に分かれば教えて欲しいです。
それが分かればネットの情報とリファレンスを使って書いてみます。
よろしくお願いします。
131nobodyさん:2006/04/10(月) 18:36:15 ID:???
>>130
opener
options[n].text
options[n].value
こんだけあれば十分でしょ
132nobodyさん:2006/04/10(月) 18:47:36 ID:???
>>130
必要な値を子から親にPOSTかGETで渡してリロードさせればいいんじゃないの?
というか構文とか教えたらネットの情報とリファレンスで出きるなら、
自分で調べるか諦めて業者にだしたら?その方が早い予感
133nobodyさん:2006/04/10(月) 18:57:58 ID:???
>>132
元々の話が、リロードさせると入力途中のフォームの内容が失われるって話で、
JavaScriptでselectの内容だけ書き換えたいって質問。
134nobodyさん:2006/04/10(月) 19:08:19 ID:???
会社で、希望者へ独自メルマガ配信をやってるんだけど、
一部の登録者のサーバーでたまにスパムだと誤認されて
届かなくなり、その人から「メルマガが届いてないぞゴルァ!」って
怒られるんだけど、これってこちらではどうしようもないよねぇ?

「おたくの会社のサーバー管理者に相談してね」って言うしかないよね?
135134:2006/04/10(月) 19:11:14 ID:???
ちなみにある登録者宛のメルマガがエラー戻ってきたときに
付加されていたメッセージはこれ↓

Remote host said: 450 Recognized as SPAM. Please set your server address in DNS. Till then!
136nobodyさん:2006/04/10(月) 19:15:02 ID:???
>>135
DNSの逆引きが出来てないんじゃね?
137nobodyさん:2006/04/10(月) 19:16:28 ID:???
>>135
見覚えのある目欄だけど、配信鯖の逆引きを設定すれば?
138134:2006/04/10(月) 19:16:51 ID:???
>>136
あ・・・・・・・今、気が付いたんだけど・・・・・・・・
こっちが使ってるサーバーが実はXREAなんだよね・・・・

そういえばXREAはここ数日、大騒動になってるんだったっけか。。。
ウチは独ドメだから関係ないと思っていたけど、この騒動と関係ありそうだな。。。
139134:2006/04/10(月) 19:19:35 ID:???
>>137
すいません、逆引きって自分で設定できるんでしょうか・・・??
140nobodyさん:2006/04/10(月) 19:22:28 ID:???
>>138
届いたり届かなかったりするならXREAがどうとかじゃないと思われる
おそらく届かないユーザーにaolだとかaolだとかaolだとかあとaolとか
のユーザーはいないか?
141nobodyさん:2006/04/10(月) 19:25:02 ID:???
>>139
曖昧だが、IP管理元に言わないと駄目だった気がする
そして別途費用がかかった気がする
142134:2006/04/10(月) 19:27:43 ID:???
>>140
日によって届いたり届かなかったりする登録者もいるし、
毎回必ず届かない登録者もいます。
そしてaolは見たことがありません。登録者のドメインはいろいろです。
143134:2006/04/10(月) 19:29:21 ID:???
>>141
自鯖ならDNSサーバをいじればいいのかもしれませんけど、
XREAはレン鯖だからどうしようもないですよねぇ。。。

ちなみにXREAの大騒動については↓です。
http://pc8.2ch.net/test/read.cgi/hosting/1144506157/l50
144nobodyさん:2006/04/10(月) 19:29:58 ID:???
>>134
そりゃそうだろ。無理矢理送信できたらスパムだって簡単に大量に受信させられるってことだし。
145134:2006/04/10(月) 19:32:15 ID:???
>>144
え? ちょっと意味がよく分からないのですが、
何を指して「無理矢理」なのでしょうか??

ちゃんと受信者からはメルマガ送信許可をもらっています。
146nobodyさん:2006/04/10(月) 19:35:37 ID:???
>>140
いま、xrea.comドメインがREGISTRAR-HOLD食らってるから
DNS鯖によってはどっち向きにも引けないのよ。

だから、aolとかaolとかaolとかだと蹴られるだろうし、
先方さんが「逆引きできないMTAとは話さない」設定でも蹴られると思う。

>>139
>>134がカ)デジロックの中の人なら、ns[1-3].value-domain.comの設定をごにょごにょ。

ていうか、いくつか前のスレで「1万人の会員にメルマガを…」って言ってた人とは別?
XREAでどんくらいの数を撒いてるのか、ちょっと気になる。
147nobodyさん:2006/04/10(月) 20:01:11 ID:???
>>146
>REGISTRAR-HOLD食らってるから

いま調べたら「Status: Active」だったYO。
148108:2006/04/10(月) 20:56:32 ID:qYnFdAMk
131さん ありがとうございます。
色々ググったりして、近い処理など見つけたのですが、
とりあえず自分のjavascriptの知識が足り無さ過ぎですね。
ttp://www.game.gr.jp/about/log/board_whole_javascript.abc_seq_605.htm
↑などは近いですが(DBが絡んでない)苦戦してそうですし、
結構長いスクリプトを書かないとダメみたいですね。
やろうとしてること自体、結構難易度が高いんでしょうか?
149nobodyさん:2006/04/10(月) 21:27:59 ID:???
>>148
難易度は高くないよ。スクリプトもそんなに長くならないはず。
おれだったら、メインウィンドウに JavaScript の関数を作って、そいつにフォームの select に値を設定させるようにするかな。
たとえば function setup(a) みたいな関数を作っておいて、小窓の「登録が完了しました」画面から opener.setup(a) で呼び出す。
小窓から渡す a は、Array('選択肢1', '選択肢2', '選択肢3', ...) みたいに配列にしてさ。

ようするに、PHP は小窓の完了画面の HTML にこんな風に出力する

<html>
<body onLoad="opener.setup(Array('選択肢1', '選択肢2', '選択肢3'));">
登録が完了しました
</body>
</html>

メインウィンドウに実装する setup の中身は自分で考えてみて
150nobodyさん:2006/04/10(月) 21:29:34 ID:ZFW0IoNM
質問です。
作成中のサイトはhttp://domain.jp/のようにアクセスすることでトップページへ飛びます
その飛び先のデフォルトとして.htaccess内でDirectoryIndex index.phpとして
phpがコールされるようにしています。
念のためダミーでindex.htmlを作ってありますが、METAタグのrefreshで
http://domain.jp/をコールするようにしています
ここで問題なのですが、サーバの解析ログをみたところ
http://domain.jp/を1度だけアクセスしたはずなのに
index.phpが連続して呼び出されているログが残っています。
最後にサーバ側から強制的にプロセスをシャットされているようなログも記録されています。
どのような原因が考えられますか?
151149:2006/04/10(月) 21:45:45 ID:???
× <body onLoad="opener.setup(Array('選択肢1', '選択肢2', '選択肢3'));">
○ <body onLoad="opener.setup(new Array('選択肢1', '選択肢2', '選択肢3'));">

ただ、new Array は引数が 1個の場合には 2個以上の場合と機能が違って使いづらいこともあるから、
小窓からの呼び出しは
<body onLoad="opener.setup('選択肢1', '選択肢2', '選択肢3');">
にして、メインウィンドウの関数は

function setup()
{
 var i;
 for(i = 0; i < argments.length; i++) {
  argments[i] をごにょごにょ
 }
}

みたいにするとか。
152nobodyさん:2006/04/10(月) 21:56:06 ID:???
>>150
まず、インターネット上で、ドメインなどを例として挙げる時は、
example.com、example.net、example.orgなりを使う。
RFC2606で規定されているから、まずはそれを覚えろ。

で、ログがあるなら、そのログをコピペしてみれ。
153108:2006/04/10(月) 22:49:43 ID:qYnFdAMk
149さん
なんて親切なんだ!泣きそうなくらい感謝します。
ちょっと検証します。結果は明日また書きます。
ありがとうございました。
154nobodyさん:2006/04/10(月) 22:54:41 ID:???
なんだかんだでお前ら優しいな。
惚れたぜ
155150:2006/04/10(月) 23:59:28 ID:ZFW0IoNM
>152
決まりごとを知らずに失礼しました。
あらためて質問します。

作成中のサイトはhttp://example.com/のようにアクセスすることでトップページへ飛びます
その飛び先のデフォルトとして.htaccess内でDirectoryIndex index.phpとして
phpがコールされるようにしています。
念のためダミーでindex.htmlを作ってありますが、METAタグのrefreshで
http://example.com/をコールするようにしています
ここで問題なのですが、サーバの解析ログをみたところ次のようになっていました。

23:01 stop.example.com index.php ←おそらくサーバによるプロセス強制終了
23:01 user.example.net index.php
23:01 user.example.net index.php
23:01 user.example.net index.php
        中  略
23:00 user.example.net index.php
23:00 user.example.net index.php
23:00 user.example.net index.php ← 実際にアクセスした時間

http://example.com/の呼び出しは1度だけです
この場合どのような原因が考えられますか?
156nobodyさん:2006/04/11(火) 00:17:56 ID:???
っていうかPHPと関係無いんじゃねぇの?
157nobodyさん:2006/04/11(火) 00:48:25 ID:???
>>155
index.phpの中でindex.phpにLocationしてるとか、
実は403になってて、かつ403の飛び先がまたhttp://example.com/になってるとか
158nobodyさん:2006/04/11(火) 01:45:57 ID:Vmfip3pd
すいません質問です
magic_quotes on
sjisで書いてます。

文字列をPOSTすると「表」とか文字化けするのでstripslashes使ってるんですが、
ブラウザに出力する場合はこれでOKなのに、
MYSQLに送ろうとすると後ろのタグまで格納されておかしくなっちゃいます

stripslashesをはずしてMYSQLに送ると正常に動くのですが、何か納得いきません
(例:格納前の文字列は確かに「予\定」なのに、DBには「予定」で入ってます。)

この辺詳しい人いたら教えてください。
159nobodyさん:2006/04/11(火) 01:53:59 ID:???
>>158
DBはEUCになってるんじゃないの?
それにSJISのコードを無理やり格納しようとするもんだから、\ 記号がエスケープ記号として有効に働いちゃってるとか。
160158:2006/04/11(火) 02:12:01 ID:Vmfip3pd
>159
いやDBはSJISなんです
それで自分で書いときながら何ですが、タグまで格納されると言うのがミソかなと
何で「予定」が「嵐・></TD></TR><TR><TD></TD><TD><SELECT、、」
みたいなとんでもない文字列になっちゃうの?
161nobodyさん:2006/04/11(火) 02:26:55 ID:???
1. HTML 上の文字コード(ブラウザが送信に使用するのは一般的にコレ)
2. (設定があれば)PHPによる文字コード自動変換
3. スクリプトによる文字コード変換
4. (環境次第では)MySQL の文字コード自動変換(SQL による INSERT/UPDATE 時)
5. (環境次第では)MySQL の文字コード自動変換(SQL による SELECT 時)
6. HTML として表示する際の HTTP ヘッダと meta 要素による Content-Type の文字コード

どれかがおかしい
162nobodyさん:2006/04/11(火) 02:48:39 ID:???
ENVチェッカーを作りたいのですが
そういう関係の定義済み変数が載っているサイトはありませんか?
163nobodyさん:2006/04/11(火) 03:01:50 ID:???
>>158
本当にDBはSJISになってるか?
MySQLのiniファイルをC:の直下に置いてみろ
MySQLはデフォルトの場所にiniファイルを置いてると読み込みに行かないことがあるぞ?
164nobodyさん:2006/04/11(火) 03:05:23 ID:???
>>158
>magic_quotes on
1秒でも早くoffにしろ。

>sjisで書いてます。
5秒以内にEUCにしろ。
165nobodyさん:2006/04/11(火) 05:04:46 ID:???
>>158
とりあえず
stripslashesした文字列をMySQLに投げるときはmysql_real_escape_stringとかしとくが吉
\は文字コード関係なくエスケープの必要あり。SJISは漢字に\が含まれるからいまいち
166nobodyさん:2006/04/11(火) 07:17:53 ID:h7+HNAKj
phpmyadminでmysql管理したいのに、config.inc.php?入ってないじゃん。
しかも公式の説明では、自分で作れ。とか。知るか。


もう誰か教えれ。
167nobodyさん:2006/04/11(火) 07:45:39 ID:???
正直eucもださいからutf-8にしてほしい
168nobodyさん:2006/04/11(火) 08:39:16 ID:???
>>162
print_r($_SERVER);
169nobodyさん:2006/04/11(火) 09:46:37 ID:???
>>7-8
適当なこと言うなカス。
170通訳:2006/04/11(火) 10:05:36 ID:???
>>145
spamフィルタリングしているものを、フィルタを無視して(=無理やり)
送信できるなら、spamメールセンダーだってやってる。
171nobodyさん:2006/04/11(火) 10:06:51 ID:???
javascriptスレ違いウゼーとおもいつつ、
ajax全盛の今、PHP使いでもjavascriptは必須だなと思ってスルー
172nobodyさん:2006/04/11(火) 10:13:18 ID:???
Ajaxなんて標準規格が無くブラウザの仕様に依存するようなもん使う気になれない。
もし使うなら対応ブラウザ以外でも正常に表示できるような等価な内容のページも作ってね。
173nobodyさん:2006/04/11(火) 10:35:40 ID:???
>>164
今時なんでEUCなんてUnixOSと特定の言語に依存した文字コードを使うんだ?
UTF-8を使えば、OS、言語に依存しないのに。
174171:2006/04/11(火) 10:42:19 ID:???
まあ、サイトの目的によっては向いてないのかもな。

俺が今手を掛けてるのは単なる俺の金稼ぎ目的のサイトだから、
利用できる大半の奴が便利に利用できれば無問題。
175172:2006/04/11(火) 10:51:47 ID:???
>>174
そういうサイトなら無問題だね。
政府機関のサイトとかUnixヲタ向けページではAjax版しか提供しないってのはやるべきじゃないけどね。

漏れのサイトでそれやったら、
Lynxで表示できないページなんて許せないです(><)
って言われます。
176nobodyさん:2006/04/11(火) 10:56:35 ID:???
>>173
UTF-8だと日本語に3バイト使うからねぇ。
単純計算で日本語部分のサイズが5割増になるわけですよ。
じゃUTF-16か?っていうと現時点での普及状況や、全範囲の文字に2バイト使うことなど考えるとソースコード肥大化が心配でちょっと微妙。
それじゃとりあえずSJISかEUCでいいや、という話になるじゃないですか。
どうせ今時のPHPはマルチバイトも問題なくスキャンしてくれるわけだし。

・・・といいつつ俺自身はUTF-8派だったりする orz
177173:2006/04/11(火) 11:38:32 ID:???
>>176
日本語に3バイト使うと何か問題起こる?

今の時代、巨大なポータル(Yahoo!)レベルで採用してもコスト上問題無いと思うけど。
ソースの容量の全体(HTMLタグ、インデント、画像、Flash、JavaScript、CSS)の中で
文字が占める割合ってそこまで多く無いと思うんだがな。
178nobodyさん:2006/04/11(火) 11:40:14 ID:???
DBの容量くらいしかきにならんよなw
179nobodyさん:2006/04/11(火) 11:51:14 ID:???
phpでユーザの偏差値を出したいのですが、
そういった関数を配布しているページをご存知な方はいらっしゃいますか?
180nobodyさん:2006/04/11(火) 11:55:50 ID:???
>>177
気にならないなら気にしなければいいだけだよ。
例えば2chのログを丸ごとUTF-8に変えたら容量が大変なことになるでしょ。
文字情報が中心なサイトで容量に何らかの制限があるなら気になってもおかしくないと思うけど。
もちろん気にならなくてもおかしくないし。
つーか俺は気にならないからUTF-8使ってるっつーの。
181nobodyさん:2006/04/11(火) 11:55:59 ID:???
>>179
phpユーザーの偏差値?
低いよ
182nobodyさん:2006/04/11(火) 12:06:55 ID:???
>>181
いや、高いだろ。
プログラミングをするという時点で偏差値的にはかなり高くなるはず。

日本全国の国民を対象に数学のテストを行い、
phpユーザの偏差値の平均を出したとしよう。

そうしたら、65ぐらいにはなるな。
183nobodyさん:2006/04/11(火) 12:08:22 ID:???
えらい高いなw
184nobodyさん:2006/04/11(火) 12:08:31 ID:???
>>182
まともにプログラミングできない人が選ぶ言語がPHPだってことを忘れてるな?
185nobodyさん:2006/04/11(火) 12:09:46 ID:???
186nobodyさん:2006/04/11(火) 12:10:56 ID:???
>>184
Webプログにおいては生産性が最も高い言語だろ
まともにプログラミングできる人でもphpを選ぶ
187179:2006/04/11(火) 12:11:47 ID:???
>>185
pearにあったとは感激です。
ありがとうございます。
188nobodyさん:2006/04/11(火) 12:27:48 ID:???
>>186
99%のまともにできない人と1%のまともにできる人の集合で
偏差値がどこまで上がると思ってるんだ?
PHPは底辺ユーザの人数が恐ろしくでかいことを忘れてるな?
189nobodyさん:2006/04/11(火) 12:30:38 ID:???
まー、php-users MLとか見てると「こないだまで農業やってた50歳です。
日本語も満足に話せませんが教えてください」みたいのがごろごろしてるしな…
190nobodyさん:2006/04/11(火) 12:36:53 ID:???
>>188
母集団は国民全体だぞ。
年齢層の限定をしただけで数学のテストを行った際の偏差値は一気に向上する。
例えば、16才〜35才の偏差値を出せばそれだけで60は軽く超えるだろう。

世の中には数学なんて一切関係ないような職業は山ほどある
底辺言語であってもプログラミングをやっている人に限定すれば数学の偏差値はかなり高くなることが予想される

>>189
ごろごろはしてねーよ
そんなのそれこそ一部だろ
191nobodyさん:2006/04/11(火) 12:40:15 ID:???
なんかPHPに夢見てる人が1人いるな
192nobodyさん:2006/04/11(火) 12:46:35 ID:???
つーか、質問の趣旨からあきらかに外れて盛り上がるなよ。
>>181が一番偏差値が低く、それに絡む奴はもっと低い。
193nobodyさん:2006/04/11(火) 12:47:23 ID:???
>>172
おれは隠しフレームにフォーム作って、そこでサーバとのやりとりして Ajax みたいなことやったことあるよ。
ただ、隠しフレームってのいまいち使いづらいんだよね。
何かいい方法あるかな?
194nobodyさん:2006/04/11(火) 12:47:55 ID:???
>>181 にはかなりワロタw
こういうギャグが思いつく時点で偏差値はかなり高いと思われる
195152:2006/04/11(火) 12:49:59 ID:eIuCYO6J
>>157
index.phpの中ではLocationなどは使っていないです。
403エラー時の飛び先設定はトップの.htaccessでは記述してませんが
トップより下の階層のフォルダでは確かに.htaccessに403エラー時の飛び先を書いています。
でもこれはトップのフォルダには関係しないですよね?
それで一応パーミッションも見直してみましたが変化ありませんでした。
自分も無限ループしています。誰か助けて・・・
196155:2006/04/11(火) 12:51:00 ID:???
↑番号間違えました。
152じゃなくて155です。
197nobodyさん:2006/04/11(火) 12:51:54 ID:???
>>193
Flash使えばいいじゃん。
Ajaxなんて生産性も対応ブラウザもFlashを下回るのに使う意味あるの?

Flash Player が使える環境は全体の 97.7% だが、JavaScript が使える環境は全体の 95%以下。
そして、Ajaxアプリケーションが動作する環境だと、93%ぐらいまで下がるんじゃないだろうか。

AjaxでできることでFlashでできないことなんてある?
例えば、Googleマップなんて普通にFlashで作れるよ。

198nobodyさん:2006/04/11(火) 12:54:17 ID:???
>>192
「1番」低いやつに絡む奴がもっと低い…
素晴らしい!これほど偏差値の低そうな回答がかつてあっただろうかwww
199nobodyさん:2006/04/11(火) 12:57:14 ID:???
>>198
つメル欄
200nobodyさん:2006/04/11(火) 12:58:14 ID:???
やっぱPHPやってるやつってバカばっかじゃねーの?
201nobodyさん:2006/04/11(火) 13:04:02 ID:???
Flashなんて時代遅れ
今はFlexの時代
202nobodyさん:2006/04/11(火) 13:08:03 ID:???
各自自分の巣に帰ってください! ><
ここはphpのしかも質問スレです
203nobodyさん:2006/04/11(火) 13:30:18 ID:???
>>202
ここはphpのしかも「下らねぇ」質問スレです
204nobodyさん:2006/04/11(火) 13:56:27 ID:???
>>197
Flash で UI 作ることを本気で考えたことがあるんだけど、
ファイルのアップロードができなかったりして、
なかなか難しいのよね
205197:2006/04/11(火) 15:39:53 ID:???
>>204
ファイルのアップロードか
それは盲点だった

206179:2006/04/11(火) 15:48:06 ID:???
皆さんありがとうございます。
偏差値のために新たな拡張モジュールをインストールするのも面倒ですので、
自力で偏差値の算出関数を作っちゃいました。
教えて頂いた情報は今後の参考にします。



// 偏差値の算出
// $allPoint ・・・ それぞれの参加者の得点を入れた配列
// $point ・・・ 偏差値を出したい参加者の得点
function u_DeviationValue($allPoint, $point) {

$average = array_sum($allPoint) / count($allPoint); // 平均値

$molecule = 0; // 標準偏差の公式の分子の初期化
foreach ($allPoint as $number) {
$molecule += pow($number - $aberage, 2);
}
$standardDeviation = $molecule / count($allPoint); // 標準偏差

$DeviationValue = (10 * ($point - $average) / $standardDeviation) + 50; // 偏差値
return $DeviationValue;
}
207nobodyさん:2006/04/11(火) 16:11:25 ID:???
>>206
標準偏差求めるループの中の pow は掛け算に置き換えるとたいてい速くなるよ。

$molecule += pow($number - $aberage, 2);
 ↓
$d = $number - $aberage;
$molecule += $d * $d;
208nobodyさん:2006/04/11(火) 16:22:09 ID:???
>>206
別にそれでもいいけど、標準偏差を効率的に計算するアルゴリズム高校で習わなかったの?
209nobodyさん:2006/04/11(火) 16:42:34 ID:???
フォームのチェックボックス(複数)から送るnameってみんなどんな感じにしてる?
配列にしてる?してない?
してるなら
name="a[]"
name="a[]"
name="a[]"
とする?それともキーを指定する?
name="a[0]"
name="a[1]"
name="a[2]"

配列にしないなら
name="a1"
name="a2"
て感じ?一般的にはみんなどうなの?
210206:2006/04/11(火) 16:43:59 ID:???
>>207
ありがとうございます。
2-3割早くなりました。

>>208
速度に困ったら調べてみます。
211nobodyさん:2006/04/11(火) 16:46:43 ID:???
>>209
用途によるんじゃない?
単純に選択されたものの一覧だけ欲しければ a[] で、
何らかのキーと対応付けた一覧が欲しければ a[xxx] でかな。
a1、a2 なんかは JavaScript と組み合わせるときに使ったりする。
JavaScript は a[] みたいな name のフォームオブジェクトを簡単には参照できないから。
212nobodyさん:2006/04/11(火) 16:58:30 ID:???
>>211
俺はJavaScriptを併用するときはIDで別名つけてる
213nobodyさん:2006/04/11(火) 17:23:17 ID:???
>>206
その関数、もしループの中で何度も呼び出すような使い方をしてるなら
標準偏差を求める部分と
偏差値を求める部分で別の関数にした方がいいと思う。
214nobodyさん:2006/04/11(火) 17:29:15 ID:???
>>211
なるほど。自分はいつもa[]しか使ってなかったので、みんなどうしてるのかなと思いまして。参考になります。
215206:2006/04/11(火) 17:44:56 ID:???
>>213
ループから200回ぐらい呼び出す処理ですが、全体でも処理時間は数十ミリ秒だったので気にしてませんでした。
確かに無駄なので別の関数にしときます。
216nobodyさん:2006/04/11(火) 19:33:01 ID:3spEuCl2
cronからPHPを定期実行させたいのですが、
下記のようなエラーがでます。
Fatal error: Call to undefined function: pg_connect()

pgsql.so のモジュールははいっており
同じスクリプトをWeb上からは問題なく実行されます。
何が原因なのでしょうか?
217nobodyさん:2006/04/11(火) 19:40:37 ID:???
php.iniの参照場所が違うと思われ。
218nobodyさん:2006/04/11(火) 19:53:05 ID:???
指定された文字がある行を探す?場合はどのようにすればいいのでしょうか?
たとえば
0<>aaa<>aaa<>aaa
1<>bbb<>bbb<>bbb
と言う感じで1が含まれてる行だけ配列に入れたりする事は可能でしょうか?
219nobodyさん:2006/04/11(火) 19:56:17 ID:???
>>218
素直にループで一行ごとに判定するってのは?
220216:2006/04/11(火) 20:05:53 ID:???
>>217
ありがとうございます。
すいません!もう少し詳しくお教えてください!
221nobodyさん:2006/04/11(火) 20:18:56 ID:???
13Mくらいのファイルを一分に一回くらい読み込んだりし、五分に一回くらい書き込んだりしてます。
これで容量がさらに倍(26M)くらいに増えそうなんですが。DBにした方がいいでしょうか?
222nobodyさん:2006/04/11(火) 20:29:47 ID:???
残念ながらDBはハードディスクとのやり取りを高速化するためのものではありません。
223nobodyさん:2006/04/11(火) 21:40:01 ID:???
224216:2006/04/11(火) 22:01:06 ID:???
ありがとうございました!
自己解決しました。
225nobodyさん:2006/04/11(火) 22:31:40 ID:???
トラックバックの仕掛けがわからない。他人のを読んでも全くワカラン。
なんかわかりやすい解説してるサイト無い?
226nobodyさん:2006/04/12(水) 02:19:17 ID:???
blogのスレで訊け
227nobodyさん:2006/04/12(水) 02:37:04 ID:8N7Yz7+/
やりたい事は、

メール受信(from:[email protected])
 ↓
内容を変更(Subject,本文)、SQLorテキストファイルに書き込み
 ↓
あらかじめ登録されたメールアドレスに転送(to:[email protected])

サブアドレスを無料供与するかわりに、広告を入れるようなサービスです。
メールサーバーには転送済みデータは残したくないのですが、他の形で保存しておきたいのです。

これを1万人ぐらいの登録されたユーザー相手にしたいのですが、PerlとPHPしか書けません><
PHPやCGIでメールサーバーに接続するのって負荷が大きいですよねぇ。。
cronで定期的に呼び出すのは無理かなぁと。。

MLソフトで似たような事ができるものってありますかね?

228nobodyさん:2006/04/12(水) 03:36:09 ID:???
>>227
まずはコンピュータよりも日本語の勉強からやったほうがいい。

そして、そんなレベルの質問をしてるようでは、1万人も相手にした
サービスを提供するのは(危なっかしくて)不可能だから諦めろ。
229nobodyさん:2006/04/12(水) 04:20:35 ID:???
>>227
その程度の認識で1万人ものユーザを相手にサービスなんて
社会の大迷惑以外の何物でもないので頼むからやめてください
230nobodyさん:2006/04/12(水) 06:05:13 ID:???
メールが保存される転送サービスなんて( ;´Д`)いやぁぁぁぁぁー!
231nobodyさん:2006/04/12(水) 06:22:06 ID:???
メール転送サービスでメールの内容を勝手に保存するのって、
法律的にはOKなのかね??
232nobodyさん:2006/04/12(水) 07:34:49 ID:ZC3dGFkj
>>231
個人的に利用してなければ保存していた方が逆にいいだろ。
何かあったら使えるし
233nobodyさん:2006/04/12(水) 08:47:34 ID:???
>>227
小学校3年生くらいからやり直してください
234227とは別人:2006/04/12(水) 09:05:22 ID:wIeov7As
この流れで相当聞きにくいんだけど
ttp://www.dolphy.gr.jp/webap/topic/postfix.html
上記URLの方法で .forward を使ってPHP cli版のスクリプトに引き渡したいんですが。
phpスクリプト側でどうやって取得すればいいんでしょうか、変数名が分かりませんっ
235nobodyさん:2006/04/12(水) 09:46:14 ID:???
>>225
更新通知系pingには
・トラックバックping
・RPC ping
の2種類があることを認識した上で、
それぞれについて調べるといいよ。

一部のブログは、両方まぜてpingといったりトラックバックといったりしてるからね。
236234:2006/04/12(水) 10:13:25 ID:???
下記な感じでできました。
php4.2.3 のCGI版で定数STDINが使えないんではまりました
-------------------------------------
print getStdinput();

function getStdinput()
{
$stdin = "";
$fp = fopen("php://stdin", "r");
while(($line = fgets($fp)))
{
$stdin .= $line;
}
fclose($fp);

return $stdin;
}
-------------------------------------
237nobodyさん:2006/04/12(水) 14:01:54 ID:???
fileやfile_get_contentsでwebページ内容もって来れるのは
わかったんですが、ヘッダを読む方法はありますか?

header()でのヘッダ「送信」の話ではないです
238nobodyさん:2006/04/12(水) 14:33:00 ID:???
>>237
array get_headers ( string url [, int format] )
// PHP5
239nobodyさん:2006/04/12(水) 14:44:58 ID:???
>>238
おぉ…file関係とは別途でphp5ならストレートなのがあったんですね。
ありがとうございます
240nobodyさん:2006/04/12(水) 15:30:20 ID:???
>>232
「個人的」な考えはどうでもよくて、「法律的」にどうなのか、と。

>>234
パイプでメールを渡して、該当スクリプトを起動。
241nobodyさん:2006/04/12(水) 15:45:41 ID:???
>>240
メールの「保存」が法律的には問題あるわけがない。
勿論「守秘義務」はあるけどな。

242nobodyさん:2006/04/12(水) 16:44:07 ID:???
利害関係人が持ってても法的な効力はないけどなー
243nobodyさん:2006/04/12(水) 16:55:11 ID:???
>>240
phpスクリプト側で・・って書いてあるじゃん
244nobodyさん:2006/04/12(水) 16:59:52 ID:???
>>234
つ[ STDIN ]
245nobodyさん:2006/04/12(水) 17:10:56 ID:???
246227:2006/04/12(水) 17:12:40 ID:8N7Yz7+/
そのようなソフトはないって事でしょうかねぇ。

2chで聞くのが無謀なのかなぁ。
本当に知りたい情報が2chで得られたためしがない。
誰でも簡単にgoogleで調べられるような事しかレスがこない。。。
247nobodyさん:2006/04/12(水) 17:16:49 ID:???
>>246
ソフト探すスレじゃないからねぇ
248nobodyさん:2006/04/12(水) 17:22:14 ID:???
>>246
自分じゃ調べられなくて困り果てて2chに来たくせに、
期待した回答が得られないと分かった途端にそういう逆ギレした態度を
とってるようじゃ、永遠に誰も教えてくれないよ。

あと、とにかく日本語がおかしいのを直しなさいよ。
誰も答えてくれないのは、質問の文章がおかしいのも一因だと思うぜ。
249nobodyさん:2006/04/12(水) 17:26:52 ID:???
>>246
他人の情報や経験がタダだと思ってるバカは1秒でも早く氏んだほうがいいよ。

この世で最も価値があるのは車でも家でもダイヤでもなくて、情報だぜ。
それが分からずに調子コイた戯言をぬかしてるお前は一生底辺で終わる。
250227:2006/04/12(水) 17:28:09 ID:8N7Yz7+/
>>247
そうですね。該当スレが見つからなかったもので。すいません。


それと、メール保存は違法ではないかとか、保存されるのは嫌だとかいう意見がありましたが、
メールサービスを提供した時点で、メールボックスにはメールデータは保存されます。
保存場所を移したいだけです。もちろん悪用するわけではありません。
なぜ保存場所を移したいのかというと、Webメールサービスに近いものも提供したいからです。
しかし、メールボックスの容量も制限したいです。制限値を超えた時の処理なんですが、受信拒否となっては困ります。
古いものから自動的に削除されていくような容量制限が出来れば、特に保存場所を移す必要もありません。

環境はqmail+vpopmail+ezmlm+mysqlでメールサーバーは動かしてます。
ソースが読めれば簡単なんでしょうが。。。
251227:2006/04/12(水) 17:32:33 ID:8N7Yz7+/
>>248、249

偉そうな物言いで申し訳ありませんが、事実ではないですか?
私の経験ではそうでした。
252nobodyさん:2006/04/12(水) 17:37:58 ID:???
>>251
情報が得られないとわかったなら何も言わずに立ち去れ。
いちいち捨て台詞を吐くのは非常に失礼。
事実かどうかなんていうお前の主観は発言が許される理由にならない。

>>248-249の口調もほめられたものじゃないが内容は完全に同意。
253227:2006/04/12(水) 17:55:11 ID:8N7Yz7+/
わかんないんだったら、自分たちもレスしなきゃいいのに。

小学生からやり直せとか、日本語勉強しろとか言われるために書き込みしたわけじゃない。
こいつらが人に言えるほど語学力と知識があるとは到底思えませんがね。
謙虚になれという事はそういう事かい?

人を失礼だと思う前に自分も失礼ではないかと考えてみたらいかがでしょうか。

なんて不毛な掲示板だ。
254nobodyさん:2006/04/12(水) 18:00:47 ID:???
>>253
だから不毛だと思うならカエレ
255nobodyさん:2006/04/12(水) 18:11:41 ID:LsBK61rA
>>253
キミにはその仕事を請けるスキルが無いんだから、他に回すなり業者に発注するなりしなよ。
せめてここの回答やgoogle先生の結果で何とかできる程度のアタマが無いとさ。
つーか、SQL書ける?
書けるならその案件程度のテーブル設計くらいできるよね?
だったら、何が疑問?
256227:2006/04/12(水) 18:26:46 ID:8N7Yz7+/
>>255
おっしゃるとおり、スキルはありません。外注も考えています。
ただ、そういうソフトがあれば教えてもらいたかったのです。

SQLは書けます。
vpopmailはSQLにメール毎ぶちこめましたっけ?
ユーザー管理にしかSQLは使っていませんが。
257nobodyさん:2006/04/12(水) 18:30:48 ID:???
そんなことASP.NETならちょこっとコード書くだけでできるのにな
258227:2006/04/12(水) 18:37:35 ID:8N7Yz7+/
>>257
PHPやperlで書くなら実現できます。
ただ、メール転送だけはMTUに任せたいのです。

259nobodyさん:2006/04/12(水) 18:37:43 ID:???
さぁ、益々下らなくなってまいりました。
260nobodyさん:2006/04/12(水) 18:42:12 ID:???
なんだってー!
すごいなPHP&Perl
261nobodyさん:2006/04/12(水) 18:48:49 ID:???
普段だったら気にならない個所なのに、こういう流れだから
メール転送を任されて戸惑ってるMTUやRWINの図が浮かぶ。
262nobodyさん:2006/04/12(水) 18:57:56 ID:???
fopenの時に、ファイルが存在しなければ
ファイルを作成したいのですが
そういう場合はどうしたらいいですか?
263nobodyさん:2006/04/12(水) 19:09:40 ID:???
空気が読めない奴って当然の如く去り際も心得て無いよな
264nobodyさん:2006/04/12(水) 19:09:42 ID:???
>>262
'w'ならデフォルトで新規作成される。
'r'でファイルが存在しなかった場合に新規作成したいならtouch($file);とか書けばいい。
265nobodyさん:2006/04/12(水) 19:22:21 ID:???
>>258
というか、ここはPHPで書くための質問スレなんだけど。
PHPで書かないための質問は他所で。
266nobodyさん:2006/04/12(水) 19:32:24 ID:???
典型的な初心者にワラタ
267nobodyさん:2006/04/12(水) 20:24:31 ID:fK671VOd
227はイタイな
答えられないのに文句だけ言う奴もウザイけど
268nobodyさん:2006/04/12(水) 20:37:47 ID:zZpSpaHD
このウェブサイト(http://cubic9.com/PukiWiki/%B2%FE%C2%A4/%C0%C5%C5%AA%A5%B3%A5%F3%A5%C6%A5%F3%A5%C4%A4%CB%B5%B6%C1%F5/%A5%DA%A1%BC%A5%B8/%A5%B3%A5%E1%A5%F3%A5%C8/ )を参考に

  <?php
  $arg = input_filter($_SERVER['QUERY_STRING']);
  header('HTTP/1.1 301 Moved Permanently');
  header('Location: /'.anchor_replace(rawurlencode($arg)).'/');
  ?>

とすると、
  [12-Apr-2006 20:15:54] PHP Fatal error:
  Call to undefined function: input_filter() in /home/user/public_html/slash.php on line 2
というエラーが出てしまいます。
この関数やエラーについて調べてみたのですが、手がかりがつかめませんでした。
これはどうなっているのでしょうか?
269nobodyさん:2006/04/12(水) 20:43:40 ID:???
>>268
input_filterて関数が無いってメッセージ出てるやん。

リンク先に
>でぃあばぁ(管理者) at 2005-11-13 (日) 20:05
>func.phpからinput_filterとanchor_replaceをコピーしてくれば動きます。ただし何のチェックもしていないので、
>一つ間違うと無限ループです 一応 RewriteOptions MaxRedirects=1 で避けていますが、正直全くお勧めできません。
とあるが、理解可能?
270nobodyさん:2006/04/12(水) 20:57:48 ID:zZpSpaHD
>>269
うーん、よくわかりません…
でぃあばあ氏は、このようにスラッシュを補完しているのですが、もっと効率的な方法とかあるんでしょうか?
271nobodyさん:2006/04/12(水) 21:15:18 ID:???
>>270
効率とか関係なく、func.phpからinput_filter()をコピペしてきてないから動かないだけだろ。
272262:2006/04/12(水) 21:30:17 ID:???
>>264
ありがとうございます
$file = './dat/env.dat';
if( ! file_exists( $file)) touch( $file);
こう書いてみたのですが、うまく動きません
根本的に間違っているのでしょうか?
273nobodyさん:2006/04/12(水) 21:35:33 ID:zZpSpaHD
>>271
ありがとん。

PHPの方はエラーを吐かなくなったのですが、http://example.com/slash.php/ にリダイレクト
され、500 Internal Server Error となってしまいます。(Connection: close
274nobodyさん:2006/04/12(水) 21:46:12 ID:???
>>273
少しは、ソースの中で行われていることを
一つずつ追ってみようって気にはならないのか?
275nobodyさん:2006/04/12(水) 21:51:23 ID:zZpSpaHD
>>274
すみません、PHPやApache設定に関しては全くの無知なので・・・
「RewriteRule ^.+$ slash.php?$0 [L]」これが原因でInternal Server Errorになるのでしょうか。
276nobodyさん:2006/04/12(水) 21:51:53 ID:???
>>273
エラーが出るたびにこのスレで質問するのは迷惑だよ。
まず自分で調べて考えてみようね
277nobodyさん:2006/04/12(水) 21:59:09 ID:zZpSpaHD
ξ
278nobodyさん:2006/04/12(水) 22:14:03 ID:???
>>272
./dat/ ←のディレクトリのパーミッションは707あたりになってる?
279262:2006/04/12(水) 22:27:29 ID:???
>>278
ありがとうございます
ご指摘のとおりパーミッションの問題でした。
.datを777にしたら問題なくさくせいされました

お手数をおかけして申し訳ありませんでした
280nobodyさん:2006/04/12(水) 22:35:28 ID:KG2NZf4e
BASIC認証を利用しているのですが
ダイアログが出てきた時に
デフォルトでIDが表示されているように
出来ませんでしょうか?
(PASSを入力するだけの状態)

よろしくお願いします。
281nobodyさん:2006/04/12(水) 22:39:25 ID:???
>>280
ブラウザ依存の機能につき無理
282nobodyさん:2006/04/12(水) 22:46:27 ID:???
>>280
標準のダイアログにID文字列を勝手に入れるのは無理じゃないかな。
やるなら、HTMLのFORMでIDとパスを受け付けるようにするとか
JavaScriptのダイアログで受け付けるようにするとかにしないと。
283nobodyさん:2006/04/12(水) 23:38:10 ID:???
くっそおおおおおおおおおお
俺のソースは汚いぞおおおおおおおおおおおおお
284nobodyさん:2006/04/13(木) 01:42:46 ID:???
preg_replaceの使い方で質問です。

$main_text = 同一ファイル内ヒアドキュメント、内容はHTML(htmlのタグ含む)
$words = '1111111111'で区切られた単語とURLが1行1レコードのファイルをfile()で拾って来た配列

で、foreach($words as $line){
list($word[],$url[]) = explode('1111111111',$line);
}
として$word、$urlをprint_r()して中に期待した配列が入っていることを確認しました。
その次に
$replacement = "<a href=" . $url . " target=_blank>" . $word . "</a>";
$main_text = preg_replace($word,$replacement,$main_text);
とすると
Warning: Unknown modifier '?' in /パス/test.php on line 410
Warning: Unknown modifier '?' in /パス/test.php on line 410
と2回エラーが表示されました。$wordと$urlの要素が2個になっていたのでそこが関係していると思うのですが…。

またpregをeregに変えるとエラーを吐かなくなりますが配列で置換できないようで要求をみたせませんでした。
何かアドバイスくださいまし
285nobodyさん:2006/04/13(木) 02:01:28 ID:???
>>284
$word が正規表現として解釈されることを前提に、適切にエスケープしたり書式を整えたりしてる?
$word の中身をここにコピペしてみたら?
286nobodyさん:2006/04/13(木) 02:07:48 ID:???
一行のコードを複数行に分けて書きたい場合はどうしたらいいのでしょうか?
解像度が低いPCで書いているのですが、どうしてもよみづらくて・・。
287nobodyさん:2006/04/13(木) 02:13:11 ID:???
>>284
$word[] = "/ABC/sUi";
$word[] = "/DEF/sUi";
$replacement[] = "えーびーしー";
$replacement[] = "でぃーえふ自慰";
$main_text = preg_replace($word,$replacement,$main_text);

ってこんな風に使うんじゃなかったっけ
288nobodyさん:2006/04/13(木) 02:21:23 ID:???
>>286
「ここ、スペースあってもなくてもいいよね?」と感じる個所で改行
289284:2006/04/13(木) 02:22:12 ID:???
レスありがとうございます
とりあえずprint_rの結果をば
Array
(
[0] => テスト
[1] => テスト2
)
Array
(
[0] => http://www.exsample.jp/1
[1] => http://www.exsample.jp/2
)
ファイルは全てEUCです。
ブラウザのエンコードをeuc以外にしたら化けたので文字コードはおk、
エンコーディングが必要な文字列は(今はテストデータだからですが)無いようでした。
>>287
ごめんなさい、提示していただいたサンプルとの違いが読み取れなかったのですが…。添字も数字になりますから一緒ですか?
290nobodyさん:2006/04/13(木) 02:23:11 ID:???
>>284
> $replacement = "<a href=" . $url . " target=_blank>" . $word . "</a>";
それって「<a href="Array" target=_blank>Array</a>」にならんか?
配列をそのまま文字列として連結ってどういう意味よ

> $main_text = preg_replace($word,$replacement,$main_text);
$wordが配列なら$replacementも配列にせんと。
291nobodyさん:2006/04/13(木) 02:24:29 ID:???
>>289
$replacementもprint_rしとけ
292287:2006/04/13(木) 02:32:32 ID:???
>>289
ガ━━(゚Д゚;)━━ン!
293284:2006/04/13(木) 02:32:34 ID:???
>>291

…$replacementが
<a href=Array target=_blank>Array</a>
になってしまっていました。
これでは目的が達成できないとおもいつつとりあえず
preg_replaceのエラー吐いているのだけでも何とかしようと思い
$main_text = preg_replace($word,$url,$main_text);
としてみましたが上記と全く同じエラーを吐きました…。
ちょっと試しに>>287さんのコードをまんま試してきます。
と思ったら>>290さん、その通りでした
orz
294nobodyさん:2006/04/13(木) 02:43:13 ID:???
>>293
エラーになってるのは$wordの中身が /〜/ 形式になってないせいじゃなかろか。
295284:2006/04/13(木) 02:48:19 ID:???
>>294

ご指摘の通りでした。
$word = "/ABC/";
$replacement = "/http:/";
として通りました。
後は配列となっているURLをどうaタグにするか、考えてみます。
ありがとうございました。
全然関係ないですが皆さん遅い時間まで起きますね。
差し支えなければ、今何なさっているか晒してもらってもいいデスカ?
296287:2006/04/13(木) 02:56:09 ID:???
>>295
俺なら
foreach($words as $line){
の処理の中で
"<a href=" . $url . " target=_blank>" . $word . "</a>";
を配列に突っ込むかな。
297nobodyさん:2006/04/13(木) 02:56:14 ID:???
TV見てる
298nobodyさん:2006/04/13(木) 03:02:07 ID:???
ベース弾きつつネット
もう寝る
299nobodyさん:2006/04/13(木) 12:31:27 ID:???
$abc = "a,b,c";

$abc2[0] = "a";
$abc2[1] = "b";
$abc2[2] = "c";
にするにはどうすればいいでしょうか?
指定文字で分割する関数があったと思うのですが、
公式マニュアルみてもちょっとわかりませんでした。
いつも逆引きリファレンス本使ってるんですが、無いと死にますね・・・
300nobodyさん:2006/04/13(木) 12:42:53 ID:???
>>299
ツ explode
301nobodyさん:2006/04/13(木) 12:55:47 ID:???
299と似てますが、改行だけの行を境目に文字列を分けて配列に格納するのって
どうすればいいですか?
302nobodyさん:2006/04/13(木) 13:02:18 ID:???
Mon, 10 Apr 2006 18:18:53
を一気に 2006-04-10 18:18:53
に変更するような簡単な方法きぼんぬ
303nobodyさん:2006/04/13(木) 13:02:58 ID:???
>>301
explode("\n\n", 〜
preg_split('/([\r\n]|\r\n){2,}/', 〜
とかかな
304nobodyさん:2006/04/13(木) 13:04:18 ID:???
>>302
date('Y-m-d H:i:s', strtotime('Mon, 10 Apr 2006 18:18:53'))
305303:2006/04/13(木) 13:09:41 ID:???
ごめん。正規表現のほう間違い。
これじゃ\r\n1つでも区切っちまうわ
306nobodyさん:2006/04/13(木) 14:18:17 ID:???
文字数の表示制限って出来るのでしょうか?

例えば、$textに入っている文字数が200文字だとして
一覧に表示する時は20文字しか表示しないなど
307nobodyさん:2006/04/13(木) 14:22:10 ID:???
専用のかんすうありまっせ
308nobodyさん:2006/04/13(木) 14:23:23 ID:???
日本語環境なら
mb_strimwidth()
309nobodyさん:2006/04/13(木) 14:25:27 ID:???
mb_strimwidth($text,0,20,'(以下略)');
mb_strimwidth($text,0,20,'...');

などなど
310306:2006/04/13(木) 14:30:07 ID:???
>>307-309
ありがとうございます。また、その関数でも検索して勉強します。
311nobodyさん:2006/04/13(木) 19:10:41 ID:???
自己流ゴリゴリコーディングから脱皮したいので綺麗とかPHPらしいとか
言われるような読むのにオススメなソースコード教えてください。
312nobodyさん:2006/04/13(木) 21:31:24 ID:???
>>311

ttp://koders.com/
ソースコード検索エンジン。色付きでソース見れてちょー幸せ。
313nobodyさん:2006/04/14(金) 01:47:26 ID:AD++CmCG
一定時間ごとにスクリプトを起動させたいのですが
どのように書けばいいのでしょうか。
学生なのですがよくわからないので教えてください。
314nobodyさん:2006/04/14(金) 01:58:34 ID:aAV+eb7H
PHPの基礎を自分でも作りながら勉強できる
チュートリアルのようなサイトご存知ないですか?
マンモス本を読み出して1部チャプター3で早くもくじけそうです・・・。
315nobodyさん:2006/04/14(金) 06:41:02 ID:???
レッツPHPのぁぷろだ、うpされて1週間後に自動的に削除されるような改造って出来ますか?
316nobodyさん:2006/04/14(金) 07:28:18 ID:???
>>313
cronかスクリプトで永久ループしながらsleep
学生だから知らないちゅー言い訳はヤメレ
>>314
根性入れろや
>>315
出来ますか?じゃなくて
やってみてわからないことを質問する>強く推奨
317nobodyさん:2006/04/14(金) 07:41:14 ID:???
>>315
スクリプト起動時にファイルの日付をチェックして1週間以上前のものを削除する
opendir
whileでループ
readdir
filemtimeかstat
unlink
ループ終了
closedir
318nobodyさん:2006/04/14(金) 11:29:45 ID:???
大量にファイルがあり、1週間アクセスが無かった後の
アクセスって無茶苦茶重くなりそうだな

上手くやれば回避できそうだが、そこまで知ったこっちゃないか
319nobodyさん:2006/04/14(金) 11:55:13 ID:???
ファイルが大量にあるのかどうかも分からんし、
その辺はシステムの性格に応じてチューニングでよかろ
320nobodyさん:2006/04/14(金) 12:46:56 ID:???
それこそcronなりで定期的に処理すればよくね
321nobodyさん:2006/04/14(金) 13:30:41 ID:???
phpなんか使わなくてもfindコマンドでできるでしょ。そのほうが速いし。
322nobodyさん:2006/04/14(金) 13:49:41 ID:???
>>320-321
まあそれだとLinux板行けということになるし、PHPでの処理方法を聞きたいのかもしれんし
323nobodyさん:2006/04/14(金) 14:35:43 ID:9w4nbvJu
定数に以下のようにして値を設定しようと思っているのですが
セキュリティー的に問題があるのでしょうか?

define('HTTP_SERVER', 'http://'.$_SERVER[HTTP_HOST]);
324nobodyさん:2006/04/14(金) 14:45:48 ID:???
その後どう利用するかだろう
325nobodyさん:2006/04/14(金) 14:57:36 ID:???
>>323
定数の定義だけじゃセキュリティ上の問題は無い。
'HTTP_HOST' は、「現在のリクエストに Host: ヘッダが もしあればその内容。」となる。

ユーザから送られてきた値だから信頼はできねーぞ。
この意味分かるな。
Apacheのデフォルト設定だと、どんなHostヘッダでも受け付ける。
バーチャルホスト上のホストなら不正なホスト名だとサーバが受け付けないこともあるが
それを信用してはならない。
326nobodyさん:2006/04/14(金) 15:12:40 ID:9w4nbvJu
>>324
画像のリンクなどのURLフルパスとして利用したかっただけなので
問題ないようですね

>>325
了解しました。

ありがとうございます
327nobodyさん:2006/04/14(金) 15:31:10 ID:???
>>326
URLフルパス??そんなのに使える内容か?それ。
328nobodyさん:2006/04/14(金) 15:38:15 ID:???
>>326
お前、325の言ってる意味わかってないだろ
329nobodyさん:2006/04/14(金) 15:40:35 ID:???
>>326
>>325の内容了解していないお前は問題なくない
330nobodyさん:2006/04/14(金) 15:43:39 ID:???
>>326
設定した定数(HTTP_SERVER)を、そのままSQLに突っ込んだりすると危険
($_SERVER[HTTP_HOST] にSQLインジェクションされる文字列とか入ってり)

結局は>>324の言うとおり、使い方次第

っGoogle検索「サニタイズ」
331nobodyさん:2006/04/14(金) 15:46:41 ID:???
画像リンクとかってようするに毎回のHTML表示だろ?
困るのってその変なホスト名をよこしてきたユーザ本人だけでは。
332nobodyさん:2006/04/14(金) 16:15:18 ID:???
>>322
PHPのCLI版で書いてcronで定期実行がスレに合ってるかな・・
シェルスクリプトでいいならそれでいい気もするけど
333nobodyさん:2006/04/14(金) 16:21:09 ID:???
>>331
単純に考えてそうでも将来的にそれを利用した攻撃方法が発見されないとも言い切れないんだし、
htmlspecialcharsを通すべき。

334326:2006/04/14(金) 16:21:41 ID:???
>>327
使うんですよ
>>328
分かってますが?
>>329
基本的にドメインとダミーでバーチャル切ってるので問題なし
>>330
だから「html出力で画像のリンクに使用」といってるのですが…
>>331
そのとおりだと思っています
335333:2006/04/14(金) 16:22:17 ID:???
危険性のある変数だけエスケープするのでは無く、
エスケープしてはならない理由があり、かつ、安全性が確認できている変数のみエスケープしないというポリシーのが安全。

336nobodyさん:2006/04/14(金) 16:24:37 ID:???
// HTMLタグの無効化
function h($value) {
return htmlspecialchars($value);
}

こんな関数作ったらどうです?
変数を h( と ) で囲むのはたいした手間じゃないでしょ。

高木浩光流のセキュリティ対策ブログでも読んでみたらどうかな
337326:2006/04/14(金) 16:25:00 ID:???
>>333
ご指摘の通りですね。
盲点でした。
htmlspecialcharsは通すようにします。
338326:2006/04/14(金) 16:32:28 ID:???
>>336
ついでなので以下のようにしておきました。
// HTMLタグの無効化
function h($value) {
return trim(htmlspecialchars($value));
}
339nobodyです:2006/04/14(金) 17:25:47 ID:NgSqFnSx
if(error){
die(require_once('error.html'));
}
これは、何か問題が出てきますか?
340nobodyさん:2006/04/14(金) 18:25:52 ID:???
>>339
if(error)って、もし error という定数が真なら if文 を実行するということだけど、それであってる?
変数じゃなくて定数ならいい。

あと、定数は一般的なコーディングルール、慣習では全て大文字で書き、単語をアンダースコアで区切る。
これは様々なC系言語やJavaでも同じ。(ただし必ず従わなければならない訳ではないが、それを配布するなら
従っている方が他の人が見やすい)
これは、pearコーディングルールでも同じ http://itbtech.itboost.co.jp/man/php_man/pear.standards.constants.html

例: DB_ERROR_MESSAGE

変数は小文字で初めて単語の区切りを大文字にする。


ちなみに、
if ($error) {
die(require_once('error.html'));
}
は、

$error or die(require_once('error.html')); と書く人もいる。

ただし、比較演算子の用途外利用なのであまりおすすめできない。
(ただ、使うことでコーディングがすっきりするときは使う)
戻り値の比較をしない分、if文の方が早いと思われる。
341340:2006/04/14(金) 18:28:11 ID:???
みすった。

require_once は関数では無く制御構文なので
pearコーディングルールと慣習によれば関数コールと区別するために、

require_once('error.html'); じゃなくて、
require_once "error.html"; と書くべきだな。

342nobodyさん:2006/04/14(金) 19:07:58 ID:???
サニタイズでググったら論争で読むの疲れた
343nobodyさん:2006/04/14(金) 19:16:14 ID:???
何でも検索結果を一番上から読めばいいってもんじゃないぞ。

せっかくGoogle先生が内容も少し表示してくれてるんだから、
344nobodyさん:2006/04/14(金) 20:57:11 ID:Vr96m26a
HTTP_Requestについての質問ですが、
echo $req->getResponseBody();
これではlocationで転送(?)された先を表示することができないんですが、
できるようにするにはどうすればいいでしょうか。
345nobodyさん:2006/04/14(金) 21:01:58 ID:???
プロにしかできない
346nobodyさん:2006/04/14(金) 21:11:12 ID:???
俺はできる
347nobodyさん:2006/04/14(金) 22:31:00 ID:29AM62vM
くだらない質問します。
if文の条件で、「$hogeがあれば」みたいにすることはよくあると思うのですが、
( isset ($hoge)) {
( $hoge != "") {
if ($hoge) {
(strlen($hoge) != 0) {
などなど、似て非なるものが沢山ありますが、
これはどういう基準で使い分けているのでしょうか?
348nobodyさん:2006/04/14(金) 23:19:47 ID:???
>>347
自分がどういう意味を持たせるか、によるんじゃないかな。
$hoge という変数の存在自体を調べる意図があるなら isset だし、
$hoge の中身について評価する意図があるならそれ相応の判定式だし。

ただ気をつけなくちゃいけないのは、$hoge=="" みたいな判定式。
これは、$hoge が "" のときだけじゃなくて、0 のときや false のときにも成立しちゃう。
本当に "" であるかを判断したいならば、strlen($hoge)==0 や、$hoge==="" を使う。
strlen($hoge)==0 は、$hoge が未定義か "" か false の時に成立して、0 の時には成立しない。
$hoge==="" は、$hoge が存在してその中身が "" の時だけ成立する。

関数の中でも、0 と false どっちも返す可能性があるものがあるから、そういう判定の時にも気をつけて。
ex) strpos
349nobodyさん:2006/04/14(金) 23:25:17 ID:dko7defd
>>344
俺も串作るときこれがわからなくて断念した
どうやるんだ
350nobodyさん:2006/04/14(金) 23:30:25 ID:???
>>347
> ( isset ($hoge)) {
その変数が定義されているかどうか。
1度も代入してない、unset()した場合、NULLを代入した場合にのみelse条件になる。
主に初期背低が存在しない、特定のsubmitボタンが押されたか、などの存在チェックに使う。

> ($hoge) {
真として評価できる値が入ってるかどうか。
1度も代入していない、unset()した、NULL、FALSE、0、"0"、""、array()のいずれかが
代入された場合にelse条件になる。
一般的な数値チェック、論理チェックなどに用いられる。
たまに、文字列の有無を判定しようとしてこれを使って「0」を入力されたときにバグってるバカがいる。

> ( $hoge != "") {
> (strlen($hoge) != 0) {
文字列として空っぽかどうか。
1度も代入していない、unset()した、NULL、FALSE、""、array()のいずれかが代入された場合に
else条件になる。
FORMデータの入力有無など文字列の存在チェックにはこれを用いる。
351347:2006/04/15(土) 00:44:06 ID:mBWU3p7T
>348 350
すばらしい回答ありがとうございます。
人間リファレンスのようですね。
else条件のバリエーションをみるとなんとなく分かってきますね。
自分はなんとなくな理由でissetを多用してる気がします。
逆にstrlenはあまり使ってませんでした。
いずれもしっかりとした根拠なく使っていたので、これからは
意味合いをよく考えて適材適所な感じでいきたいです。
ありがとうございまいsた。
352347:2006/04/15(土) 00:49:45 ID:???
sage忘れたorz
>348 350
もう一度言いますがすばらしい回答ありがとうございます。
人間リファレンスのようですね。
else条件のバリエーションをみるとなんとなく分かってきますね。
自分はなんとなくな理由でissetを多用してる気がします。
逆にstrlenはあまり使ってませんでした。
いずれもしっかりとした根拠なく使っていたので、これからは
意味合いをよく考えて適材適所な感じでいきたいです。
ありがとうございまいsた。
353287:2006/04/15(土) 00:59:45 ID:???
>>352
そのレスの意味がわからない。
何故2回も。
もしかして未だに「sage」って書けば下がるとでも思ってるのか?
354nobodyさん:2006/04/15(土) 01:13:32 ID:???
age
355339:2006/04/15(土) 01:15:29 ID:???
>>340-341
いろいろ問題があったようですね。
コーディングルール今度読み漁って見ます

ご丁寧にありがとうございました
356nobodyさん:2006/04/15(土) 01:20:44 ID:???
>>344
これはgetResponseHeadでいいんじゃないの
357nobodyさん:2006/04/15(土) 01:24:51 ID:???
だめだろ
358nobodyさん:2006/04/15(土) 02:19:58 ID:???
socketでやらなきゃ。
359nobodyさん:2006/04/15(土) 02:29:00 ID:???
10件あるデータを2列5行にして表示したいのですが、
どのように設定して、折り返したらよいかわかりません。

どこか参考になるサイトなどはご存じないでしょうか?
360nobodyさん:2006/04/15(土) 02:59:27 ID:???
プログラムを「設定して」とか書いてる時点で根本的に間違ってるとオモ
361nobodyさん:2006/04/15(土) 03:31:09 ID:???
>>359
お前さん、そこを考えるのがプログラミングの醍醐味じゃないか〜
362nobodyさん:2006/04/15(土) 06:36:20 ID:???
ちょっと分からない事があるので教えて頂けませんか?

【je-pu-pu アクセス解析 有料版のご案内】ttp://je-pu-pu.jp/access/pay.php
月額\350らしいんだけど、どうも内部はこんな感じ→ ttp://je-pu-pu.jp/webalizer/

これってJE製作のツールでなくて、モロ海外フリーソフトのwebalizer↓なんでないかと思うんだけど。
ttp://www.ahref.org/webalizer.html()

勝手にコレの利用料で金取ってもいいの?ライセンス得てるんでしょうか?
それとも表面上は同じに見えるオリジナルなのでしょうか。
せいぜいあってもコードパクって部分的に改変しただけな気がするのですが・・・
もしかして人のフンドシで文字通り商売してるのでしょうか?
もしそうだったらレンタルするのが怖いです。

webalizerの権利関係詳しくないから誰かそっち方面強い人調べてみてくれないですか?
どうぞよろしくお願いします(´・ω・`)
363314:2006/04/15(土) 07:02:43 ID:???
>>316
気合入れてマンモス本、
自分で打ちながら最初からやり直してます。
また何かあったら教えてください。
364nobodyさん:2006/04/15(土) 07:51:05 ID:???
>>362
無料で同じものがあるのに違法かもしれない有料レンタルに金払うやつは見る目がないって事で。
365nobodyさん:2006/04/15(土) 09:15:20 ID:???
>>344
自分で処理して飛ばすしかないのでは
$a=file_get_contents('http://example.net/');
なら自動で処理してくれるんだけどなあ・・・


いちいち個別に対応するのが面倒だったので
いじって手抜き処理加えちゃったけど
366nobodyさん:2006/04/15(土) 09:19:27 ID:???
>>362
ライセンスはGNU GPL。
金を取るのもレンタルするのもOK。
367nobodyさん:2006/04/15(土) 12:42:19 ID:???
掲示板にトリップ機能をつけたいのですが、どのような方法で行えばよいでしょうか?
368nobodyさん:2006/04/15(土) 15:14:11 ID:???
>>367
入力された値をmd5とかにかけて、上5桁を取る、とかじゃダメ?
369nobodyさん:2006/04/15(土) 15:37:56 ID:???
正規表現で一致しているか調べたいんですが、
対象の文字列が.などを含んでいて、かつエンコーディングを変更したい場合、
エスケープしてからエンコーディングしたものをeregするのか
それともエンコーディングしてからエスケープしたものをeregするのか
どっちが正しいのでしょうか?

考えてたらぱにくってきました・・・おいらはあふぉです orz
370nobodyさん:2006/04/15(土) 15:44:03 ID:???
>>369
基本はエンコーディングしてからエスケープ。
でないと無関係な部分(漢字の後ろ1バイトに含まれる正規表現文字など)まで
エスケープされてまともに比較できなくなる場合がある。
371nobodyさん:2006/04/15(土) 16:03:51 ID:???
file_get_contentsでUser-Agent等のヘッダを送ることはできないものか
372nobodyさん:2006/04/15(土) 16:06:05 ID:FisXV/Qr
rawurlencode()で、スラッシュ(/)はエンコードしたくないのですが、そのような指定は
できるのでしょうか?
373nobodyさん:2006/04/15(土) 16:19:24 ID:???
>>371
fsockopen使え
374nobodyさん:2006/04/15(土) 16:39:27 ID:???
まだ初めて二週間
ヘルプでキーワード検索すれば大概の場合自分のやりたい事が実現可能かどうかわかるので、アルゴリズムの基礎を学んだ方が効率良い事に気がつきますた
プログラムっておもすろいですね
375nobodyさん:2006/04/15(土) 16:42:31 ID:???
quotemeta()の逆の関数ないですかね
376372:2006/04/15(土) 16:44:33 ID:FisXV/Qr
自己解決しました。
str_replace()で'%2F'を'/'に置換したんです。ありがとうございました。
377375:2006/04/15(土) 16:52:52 ID:???
レスおせーなあ
おまえら素人が必死に考えてる間にyahooで自己解決。
378nobodyさん:2006/04/15(土) 17:00:41 ID:???
>>375
んなもん探さなくても5秒で自分で作れるだろうが
379nobodyさん:2006/04/15(土) 17:03:07 ID:FisXV/Qr
ワラタ
380nobodyさん:2006/04/15(土) 17:04:15 ID:???
ID ヲ ダシテシマッタ...
381nobodyさん:2006/04/15(土) 17:10:20 ID:???
>>371
できる。
382nobodyさん:2006/04/15(土) 17:39:13 ID:1qLGoaV/
どうもPHP初心者なんですが
入力された文字が全角カタカナかどうかの判別の方法がわかりません。
半角英字は↓でできました。
if ($ename != "" && !ereg("^[a-zA-Z \']+$", $ename)) {
 $error['ename'] = "<font color=\"red\"> 半角英字で入力してください。</font>";
}

その要領で全角カタカナでやったのですが、全部引っ掛かる状態になります。
if ($fname != "" && !mb_ereg("^[ァ-ヶ]+$", $fname)) {
 $error['fname'] = "<font color=\"red\"> 全角カタカナで入力してください。</font>";
}
$fnameの中に全角カタカナを入れています。
383nobodyさん:2006/04/15(土) 17:48:21 ID:???
google初心者か
384nobodyさん:2006/04/15(土) 17:57:37 ID:1qLGoaV/
mbstringのせいかなと思いphpinfoをだしてみたのですが、こんなかんじです。

mbstring
Multibyte Support enabled
Multibyte string engine libmbfl
Multibyte (japanese) regex support enabled
Multibyte regex (oniguruma) version 3.7.1
385nobodyさん:2006/04/15(土) 17:58:16 ID:1qLGoaV/
mbstring.detect_order no value no value
mbstring.encoding_translation Off Off
mbstring.func_overload 0 0
mbstring.http_input pass pass
mbstring.http_output pass pass
mbstring.internal_encoding ISO-8859-1 no value
mbstring.language neutral neutral
mbstring.substitute_character no value no value
386nobodyさん:2006/04/15(土) 22:12:07 ID:269HnUWO
$a に入っている数値が15だとして、
$a に入ってる数値が 18未満だったら・・・というif文を作りたいのですが

if($a == "15 <= 0") というのは不可能でしょうか?
不可能でしたら方法を教えていただけないでしょうか。
387nobodyさん:2006/04/15(土) 22:21:10 ID:???
その条件式は、 $a という変数の値が"15 <= 0"という文字列と等しいかを調べている。
キミがやりたいのは、18より小さいかを調べることだろう。
ttp://www.php.net/manual/ja/language.operators.comparison.php
388nobodyさん:2006/04/16(日) 01:22:37 ID:???
>>386
if($a < 18)
389nobodyさん:2006/04/16(日) 02:35:31 ID:???
>>386
そこのあたりはどの言語やっても基本の部分なんだから
PHPの超初心者本とかかって勉強しとけよ
基本的な構文はC、Java、etc・・・ほとんど共通だ
390nobodyさん:2006/04/16(日) 03:26:56 ID:???
>>385
> mbstring.internal_encoding ISO-8859-1 no value
これをSJISに設定
391nobodyさん:2006/04/16(日) 03:30:26 ID:???
>>386
ひょっとして
if(0 <= $a && $a < 18)
っていう条件が書きたいって話?
392386:2006/04/16(日) 09:39:55 ID:???
>>391
あ、それが一番近いかもしれません。
0より大きくて18より小さい。
ありがとうございます。

>>387
よく考えてみるとそうですね。ありがとうございます。

>>388
その方がシンプルみたいですね。
参考になります。

>>389
二つの条件を一度にやるのがよくわかりませんでした。
勉強不足ですいません。
393nobodyさん:2006/04/16(日) 11:40:09 ID:???
>>392
PHPの勉強不足って感じでなくてさ、日本語覚えたての3歳児って感じ
他の言語もやったことなくPHPから始めたんだろうけど
394nobodyさん:2006/04/16(日) 12:20:28 ID:U9is4hyD
phpをはじめて半年くらいになります。
phpとmysqlで在庫管理システムみたいのを作ったのですが、
脆弱性というか、セキュリティ的なものは一切考えていません。
画像ファイルのアップロードをするときに、拡張子がjpgじゃないとダメとか、
10240バイト以下じゃないとダメとか、
あとhtmlspecialcharsとか書いたりしてますが、
そもそも何が危ないのかわかってません。
いくらわかってなくても、最低限これだけはやっとけみたいのは
ありますか?
395nobodyさん:2006/04/16(日) 13:19:17 ID:???
>>394
あくまで「最低限」ってことならサイズ制限とファイル名をそのまま使わなきゃ
それで十分じゃないかって気がする。
真面目にやるなら画像形式のバイナリチェックが欲しいところ。
拡張子の判定はほとんど意味ない。htmlspecialcharsはどこでやってんだ?
396nobodyさん:2006/04/16(日) 13:27:06 ID:???
>>394
PHPサイバーテロの技法―攻撃と防御の実際
ttp://www.amazon.co.jp/exec/obidos/ASIN/4883374718/
397nobodyさん:2006/04/16(日) 15:49:40 ID:nblpYMkq
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if ( $rows < 0 ) error();

何かで参考にして上記のようにエラー処理をしてたんだけど
もしかして↓のようにすれば mysql_num_rows って必要ないですか?

$result = mysql_query($sql) or error();
398nobodyさん:2006/04/16(日) 15:54:10 ID:???
>>397
num_rowsはエラーチェックじゃなく「データが1件以上あるかどうか」を判別している。
399398:2006/04/16(日) 15:56:13 ID:???
補足。それとは別にSQLの実行の成否を確認することは必要で、
それをやってるのが >$result = mysql_query($sql) or error();
よって >上記のようにエラー処理をしてたんだけど という前述コードは
「エラー処理を一切していない」
400nobodyさん:2006/04/16(日) 16:01:25 ID:???
$rows = mysql_num_rows($result);
if ( $rows < 0 ) error();
おまけにこれなに?mysql_num_rows()って「0以上の数値」か「FALSE」しか返さないんじゃなかったか?
マイナスの場合なんてありえないだろ。何のチェックにもなってなくないか?
401397:2006/04/16(日) 16:25:50 ID:???
皆さんありがとうございます。
ttp://allabout.co.jp/internet/database/closeup/CU20030227/
昔このあたりを参考にしました。


if ( $rows < 0 ) error();
この部分は省略しようとしてやっちゃいました。実際は
if ( $rows > 0 ) { }
else { error(); }
こういう感じになってます。

402nobodyさん:2006/04/16(日) 16:37:45 ID:???
まぁ、なんだ、
・SQLそのものがおかしくて失敗 -> mysql_queryの返り値を適切に処理
 or error()でやってるのはこの部分(まぁ適切かどうかは疑問だが)
・(mysql_num_rowsだからselectしてると仮定して、)select結果が一つもなかった時の処理
 こいつは正確にはエラーでは無い。結果が0個の時とそれ以外の時とで
 表示の仕方を変えたい時に使うことが多い。
403nobodyさん:2006/04/16(日) 16:38:58 ID:???
>>401
> if ( $rows < 0 ) error();
この条件と
> if ( $rows > 0 ) { }
この条件は全然一致してないだろ
404nobodyさん:2006/04/16(日) 16:42:37 ID:???
>>401
お前、意味も分からずにただ命令を並べてるだろう
405397:2006/04/16(日) 16:54:32 ID:???
>>403=>>404
ニートのパソヲタがなに言っても説得力ないよww人生の負け組乙。
406nobodyさん:2006/04/16(日) 17:23:24 ID:???
パソヲタ・・・?
407nobodyさん:2006/04/16(日) 17:31:15 ID:ifz+1Zn4
ユーザーエージェントで、KDDIというUAを取得かつSN33というUAを取得した場合、W41Sとし、それいがいはWとするってどうやるの?
KDDIのUAを取得したあとに、またif(preg_match〜ってするの?
408397:2006/04/16(日) 17:39:38 ID:nblpYMkq
>>405 は自分ではないですよ
409404:2006/04/16(日) 17:43:40 ID:???
>>408
言い逃れするなよww
410nobodyさん:2006/04/16(日) 17:51:51 ID:???
>>409
404は俺だが。
411nobodyさん:2006/04/16(日) 17:56:03 ID:???
>>407
if(preg_match('/(KDDI)-(\w+)/', $_SERVER['HTTP_USER_AGENT'], $match)) {
 $ua = $match[1];

}
412nobodyさん:2006/04/16(日) 17:58:21 ID:???
>>407
失敗。

if(preg_match('/KDDI-(\w+)/', $_SERVER['HTTP_USER_AGENT'], $match)) {
 $ua = ($match[1] == 'SN33')? "W41A": "W";
}
413nobodyさん:2006/04/16(日) 18:39:52 ID:???
次回テンプレ案

PHPプログラミングに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

ここは "下らない質問でもして構わないスレ" であってそれを歓迎するスレではありません。
自分のしてる質問が下らない質問だということをわきまえ、謙虚になりましょう。
下らない質問をしてるんだから当然のように罵詈雑言も浴びせられるだろうが
全て甘んじて受けましょう。そうすればひょっとすると回答をしてもらえるかもしれません。
414nobodyさん:2006/04/16(日) 20:03:34 ID:???
PHPでオブジェクト指向チックにコーディングしてる奴っているか〜?
415nobodyさん:2006/04/16(日) 20:06:03 ID:???
それはプログラム全体を、って意味か?
クラスくらいは普通に使うが。
416nobodyさん:2006/04/16(日) 20:31:30 ID:???
・絞込検索
・第三者が自由に書き込めるレビューの設置
・レビューと併せた投票システムの設置
上記の三つを作成したいのですが、
全くの初心者ですのでphpを勉強するのにお勧めの教本があれば教えて頂きたいです。
宜しくお願いします。
417nobodyさん:2006/04/16(日) 20:42:06 ID:???
418nobodyさん:2006/04/16(日) 21:29:52 ID:???
.phpファイルの何行目〜何行目の先頭に#をつける。
という処理はできないでしょうか?
419nobodyさん:2006/04/16(日) 21:30:35 ID:???
>>418
できます。
420nobodyさん:2006/04/16(日) 21:31:35 ID:???
>>419
よければヒントをいただけないでしょうか。
421nobodyさん:2006/04/16(日) 21:40:57 ID:???
>>418
※ file()関数
※ for文、もしくはwhile文

上の二つが大ヒントだ!!
まぁ、ほかのやり方は山ほどあるけどね
422nobodyさん:2006/04/16(日) 21:43:57 ID:???
>>421
file()で配列に読み込んで
forで[0]に#を入れる処理を繰り返しという感じですかね?
423nobodyさん:2006/04/16(日) 21:49:45 ID:???
>>422
そこまで考えたんなら自分でやって試してみ
424nobodyさん:2006/04/16(日) 21:56:17 ID:???
>>423
ありがとうございます。
やってみます。
425nobodyさん:2006/04/16(日) 22:11:36 ID:U9is4hyD
あるサイトの問い合わせフォームのソースをみたところ、
checkboxのnameがcheck[]となっていました。
checkboxは10項目くらいあるんですけど、全部check[]です。
これはその後どうやってばらばらに受け取るんですか?
チェックボックスはラジオボタンとちがって、複数の値が送れる(?)ので
メールフォームとかで、チェックされたものだけを出力したいのですが、
いまいちうまくいきません。
426nobodyさん:2006/04/16(日) 22:12:41 ID:???
$_GET['check']をvar_dumpなりしてみりゃすぐ分かるだろ。
427394:2006/04/16(日) 22:20:16 ID:U9is4hyD
>395
レスどうもです。
拡張子は意味無いんですか。勉強になります。
ファイル名はdate関数とかでリネームしてます。
てゆうかなんでそのままのファイル名は危険なんですかね?
htmlspecialcharsは普通にinput textをdbに入れる前に使います。
textareaの文章とかにも使います。これも意味ないですかね?

>396
その本は気になっていて、ちょっと読んだのですが、
難しそうで自分にはまだ早いかなと思ってしまいました。
もう一回読んでみます。
428nobodyさん:2006/04/16(日) 22:20:45 ID:???
>>425
ヒントは配列だ
429425:2006/04/16(日) 22:24:23 ID:U9is4hyD
>426
var_dampって初めて知りました。print_fとは違うんですか?
配列に格納されていたとしても、入っているもの(チェックされたもの)だけを
判別して、取り出すにはどうすればいいですかね?
430nobodyさん:2006/04/16(日) 22:35:23 ID:???
>>427
ああ、アップロード以外に文字列データもあるってことね >htmlspecialchars
それなら分かる。
しかし、普通はhtmlspecialcharsはHTML出力時に使うものであってDBに入れるときに使うもんじゃないぞ。
DBに入れるときはmysql_escape_stringしとかなきゃダメだろ。
拡張子はいくらでも嘘を書けるから、むしろ1度削除して自前で判定した拡張子を付加してやった方がいい。
431nobodyさん:2006/04/16(日) 22:36:50 ID:???
>>429
元々チェックボックスってチェックされたものしか送信されないような…。
後はそれぞれのvalueの内容を見て振り分けてるんじゃないの。
432nobodyさん:2006/04/16(日) 22:53:40 ID:42+ATyOF
XAMPP2.1をインスコしたんですが、PHPがうまく動作しません
PHPinfo()は動くんだけど
echoさえ動きません。。。orz
PHP Version 4.4.1-pl1です。。

もう、インストール&アンイストールを4回くりかえしてます。
php.iniの設定は以下の通りです。
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = EUC-JP
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none

extension=php_mbstring.dll
433nobodyさん:2006/04/16(日) 22:55:23 ID:???
> echoさえ動きません。。。orz
もっとくやしく
434nobodyさん:2006/04/16(日) 23:12:53 ID:ifz+1Zn4
PHP&MySQLの携帯対応のノーマル掲示板の(・∀・)イイ!スクリプトない?
435nobodyさん:2006/04/16(日) 23:25:10 ID:???
>>432
そんなんありえるのか?
phpinfo()を確認したときのソースとechoを確認したときのソース見してみ
436nobodyさん:2006/04/16(日) 23:26:25 ID:???
>>434
スクリプト探しはスレ違い
437nobodyさん:2006/04/16(日) 23:31:14 ID:???
>>432
動かないって何も表示されないのか?それともエラー吐かれるのか?
そこんトコ白黒ハッキリさせようぜ兄弟!!
438nobodyさん:2006/04/17(月) 00:28:08 ID:ivoWdWE5
>>436
どこに行けばいい?
439nobodyさん:2006/04/17(月) 00:53:31 ID:qfnqXSjS
>>435
>>437
すいません
解決しました。
PHP.iniの設定をmbstring.internal_encoding = SJISにしたら直りました。

下らねぇ質問で失礼しました
440nobodyさん:2006/04/17(月) 01:07:46 ID:???
確認作業でいきなり日本語使うなよ…
441nobodyさん:2006/04/17(月) 03:44:51 ID:???
なぁ〜に?namazuモジュールのライセンス問題ってさ・・

誰か、該当者やちゃってくれない?
442nobodyさん:2006/04/17(月) 08:52:22 ID:???
今更だけど
>>418は、単にスクリプトの一部分を一括でコメントアウトしたかっただけではないのだろうか?
443nobodyさん:2006/04/17(月) 10:36:03 ID:???
>>442
そうなんじゃないの?だから何?
444nobodyさん:2006/04/17(月) 12:48:59 ID:Z/1jQgco
/* 〜 */
でいいだろ。ってことでしょ。
445nobodyさん:2006/04/17(月) 13:10:32 ID:???
442のどこを解釈するとそうなるのかわからんw
446nobodyさん:2006/04/17(月) 13:59:46 ID:rTnmXweP
すみません、PHPのインストールについて質問です。
PHPでGDライブラリを使いたいので、必要なライブラリをインストールしたのですが
何度やってもFreeTypeを使えるようになりません。(phpinfo()で見てもFreeType Supportが有効にならない)
GD SupportやJPG/PNG Supportは有効になっていてグラフィックス関連の関数も使えるのですが・・・
OSはRedHat9、PHPやGD等のライブラリは全てソースからインストールしています。

○挑戦中のバージョン
PHP4.4.2.tar.gz
gd-2.0.33.tar.gz
libpng-1.2.8.tar.gz
jpegsrc.v6b.tar.gz
freetype-2.1.10.tar.gz
zlib1.2.3.tar.gz

PHPでGD+FreeType環境を構築された方いらしたら、./conigureのオプション指定方法やライブラリのバージョン等を教えていただけないでしょうか?
447nobodyさん:2006/04/17(月) 13:59:47 ID:???
>>405
また他人を騙るアホが出てきたな

質問者は語られたくなかったらID付けましょう
ageればID付きます。

って言うのをテンプレ化キボン
それでも本人性の確認は出来ないけどね
448nobodyさん:2006/04/17(月) 14:12:54 ID:???
>>446
まずは自分のconfigure晒しなさいな
449nobodyさん:2006/04/17(月) 14:14:30 ID:???
>>444
行の途中に /* 〜 */ があったらエラーになるよ
450nobodyさん:2006/04/17(月) 14:23:25 ID:???
>>444
いや、エディタのマクロでも使えと…
451nobodyさん:2006/04/17(月) 15:00:29 ID:wNvi8T9B
質問します。
僕はmysqlのサーバ名とか「パスワードとかを、db.iniというファイルにまとめて書いておいて、phpで呼び出すときにrequire_once("db.ini")とやって、
mysql_connect($dbserver, $dbuser, $dbpass);とかやっています。
このdb.iniは普通にphpのファイル群と一緒にアップロードしていますが、
こういうのって危険なんでしょうか?
これは別のフォルダに入れてhtaccessとかで認証かけたりしたほうがいいのでしょうか?
452nobodyさん:2006/04/17(月) 15:05:30 ID:???
pathが流出したら危険だわな。
外からは見れないところにおくか、拡張子phpとかにして、
見られても生では見えないようにしておかなきゃダメ。
453nobodyさん:2006/04/17(月) 15:06:21 ID:???
>>450
いやsedじゃね?
454nobodyさん:2006/04/17(月) 15:27:03 ID:???
「でも」とか「等」が読み取れない人って時々いるよな
455nobodyさん:2006/04/17(月) 15:28:46 ID:???
つーかこのネタもういいだろw
456nobodyさん:2006/04/17(月) 15:42:55 ID:???
>>446
distcleanしてないだけちゃうんか
457nobodyさん:2006/04/17(月) 16:23:04 ID:???
外部のサーバーにあるファイルを取得したいのですが、
proxyを経由してfile_get_contentsすることはできますか?
できるとしたら、どうすればいいでしょうか。
458nobodyさん:2006/04/17(月) 16:26:48 ID:???
>>451
とりあえずこれだけはやっておけ
君のサイトのhttp://ドメイン/ウニャウニャ/db.ini
としてdb.iniが見えるかテスト
あとhttp://ドメイン/ウニャウニャ/
でディレクトリ内一覧が表示されないかもテスト汁
見えたらアウト
459451:2006/04/17(月) 16:49:12 ID:???
自己解決しました。
>>458
一応サンクス。
460451:2006/04/17(月) 16:50:21 ID:wNvi8T9B
>458
レスありがとうございます。
ファイルを直接指定するとばっちり中身が見えます。
ディレクトリ内の一覧も正格に表示されます。
どうすればいいでしょうか?
461451:2006/04/17(月) 16:51:45 ID:wNvi8T9B
あれ?451は僕です。解決してないです。
よろしくお願いします。
462nobodyさん:2006/04/17(月) 16:53:21 ID:???
>>452さんの書き込みはスルーですか
463451:2006/04/17(月) 16:59:29 ID:wNvi8T9B
>452
見逃してました。どうもです。
一般的というか、こういうときはだいたいこうするみたいな
セオリー的なことが聞きたいです。よろしくおねがいします。
464nobodyさん:2006/04/17(月) 17:19:18 ID:???
>>463
それが>>452じゃないのか?
465nobodyさん:2006/04/17(月) 17:20:05 ID:???
こんにちわ!!!!!!
phpでWINMXみたいのををつくりたいんですができますか?
466nobodyさん:2006/04/17(月) 17:22:01 ID:???
http://www.php.net/manual/ja/

このサイトのマニュアルを一括でプリントできない?
紙で移動中とかに読みたいんだけど
467465:2006/04/17(月) 17:24:43 ID:???
>>466
いま私が質問しているんですけど?
他の質問は私の質問が解決してからにしてもらえませんかぁ??
468nobodyさん:2006/04/17(月) 17:25:48 ID:???
>>467
少し面白いけどうざい。
469nobodyさん:2006/04/17(月) 17:39:54 ID:???
>>465
やろうと思えば出来るかもしれません。頑張ってください。
                           以上

--------------解決-----------------------------------
>>466さん他の方、質疑応答どうぞ。
470nobodyです:2006/04/17(月) 18:14:21 ID:AOutErUa
---------------------------------- file.php -------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
<title>無題</title>
</head>
<body>
<form action="file.php" method="POST" enctype="multipart/form-data" name="file" id="file">
<input name="csv" type="file" size="60" /><br />
<input name="" value="追加" type="submit" />
</form>
<?
if(isset($_FILES['csv']['tmp_name'])){
$handle = fopen($_FILES['csv']['tmp_name'], "r");
echo "ファイルの内容<br>";
if ($handle) {
while (true) {
echo mb_convert_encoding(fgets($handle, 8192),"EUC-JP","Shift_JIS") . "<br>";
if(feof($handle)) break;
}
fclose($handle);
}
?>
471nobodyです:2006/04/17(月) 18:15:24 ID:AOutErUa

<table border="1" cellpadding="3" cellspacing="0" bordercolor="#000000">
<?
$handle = fopen($_FILES['csv']['tmp_name'], "r");
echo $_FILES['csv']['tmp_name'] . "をオープン<br>";
if ($handle) {
$arr = array();
while (true) {
$arr = fgetcsv($handle, 8192);
if($arr[0]=="") break;
echo '<tr>';
foreach($arr as $value){
echo '<td>' . mb_convert_encoding($value,"EUC-JP","Shift_JIS") . '</td>';
}
echo "</tr>\n";
if(feof($handle)) break;
}
fclose($handle);
}
}
?>
</table>
</body>
</html>
----------------------------------------------------------------------------------------
上記プログラムで、Excelで出力したCSVを読み込みたいのですがLinux環境ですと漢字が入ったCSVが読めません。
テキストエディタで漢字の部分を「"」で囲むと正常に動くのですが・・・
ちなみに、windows版のPHPだと「"」がなくても読み込めました。

Linux環境で読み込む良い方法はありませんでしょうか?
472nobodyさん:2006/04/17(月) 18:17:35 ID:???
fgetcsvの代わりに手でごりごり書きましょう。
473470:2006/04/17(月) 18:23:32 ID:AOutErUa
>>472
やっぱそれしかないのかな・・・

474nobodyさん:2006/04/17(月) 19:02:12 ID:???
POSTされた値などに、仮にnl2brする場合ってどうやるのがいいですか?

$num = count($post);
for($i=0;$i<$num;$i++)
$post[$i] = nl2br($post[$i]);


$_POST = array_map('func_nl2br', $_POST);
function func_nl2br($post) {
}
475474:2006/04/17(月) 19:04:56 ID:qA+rYU42
途中で送信してしまいました。

$_POST = array_map('func_nl2br', $_POST);
function func_nl2br($value) {
$value = nl2br($value);
}

他に良い方法がありましたら宜しくお願いします。
476nobodyさん:2006/04/17(月) 19:16:25 ID:???
>>475
$_POST = array_map('nl2br', $_POST);
でよくね?
477nobodyさん:2006/04/17(月) 20:30:41 ID:???
(;゚Д゚) マジデ?
478466:2006/04/17(月) 20:38:00 ID:???
結局webのphpマニュアルでpdfのように印刷できるのはないの?
479nobodyさん:2006/04/17(月) 21:13:28 ID:???
お前さんが提示したURLの中にリンクがあるわけだが
480nobodyさん:2006/04/17(月) 22:01:11 ID:???
こんにちは。今年に入ってPC弄り始めたケンタです(^^)

先週、HTMLという言語(?)の勉強をはじめました!
気づいたらスルスル頭に入っていくというか、どういうものか理解できてしまった!
勢いでWEBサイトを作って公開しました〜>_<

それで、僕が借りてるサーバはHTMLのソースに広告タグを付加してページを
出力するようになってるんですが、そこにJavaScriptが使われていたので今日勉強しはじめました。

すると・・・もうJavaScriptがだいたいどういうものか理解できてしまった!というかWEBがだいたい
どういうものか分かった!んで、今PHP書いてます!もちろんこれはJavaScriptと違ってサーバ側で
動くのでブラクラにはあまり関係ありませんね(笑)

ぶっちゃけプログラミングってかなり簡単。。基礎さえ分かれば関数調べるだけじゃん。。
481(^^):2006/04/17(月) 22:04:17 ID:???
>>480
(^^)
482nobodyさん:2006/04/17(月) 22:07:16 ID:???
芸のナイ奴はコピペしかできない
483nobodyさん:2006/04/17(月) 22:26:55 ID:???
>>480
おまえは中2のケンタ以下だな。ホント恥ずかしいよ。
484nobodyさん:2006/04/17(月) 22:53:40 ID:???
485466:2006/04/18(火) 00:29:05 ID:???
>>484
神降臨。
早速レーザーで焼いてくる
486nobodyさん:2006/04/18(火) 00:40:17 ID:???
レーザプリンタなんておまえ、ハイテクなモノ持ってるじゃんw
487nobodyさん:2006/04/18(火) 00:46:12 ID:???
>>485
ただ、公式のchm形式のドキュメントは本家のスタッフが
「手動」(恐らく)で生成してるので、普通のオンラインドキュメントの
バージョンに追従しきれてない(若干古い)ので、それには注意しとくこと。
あと生成時に文字化けが混入したりすることが昔は結構あった。

前に「需要があるのなら私家版を公開しましょうか」という人がいたが
余り要望がなかったせいか、今のところそういう動きはない(と思った)
488nobodyさん:2006/04/18(火) 01:53:16 ID:ufbV+k46
PATH_INFOの中に%2Fが入っていると404になるんですけど、
どうしてでしょうか?
489nobodyさん:2006/04/18(火) 07:24:42 ID:???
>>488
urldecodeされるから
%252Fにしろ
490nobodyさん:2006/04/18(火) 10:43:26 ID:Cv/nzOIg
PHPの習作にと日記を作っております。

formからPOSTされたデータの各最後尾に、
余分な空白キャラ(タブかも・・・)がくっついてきていて困っています。

一応データ展開時にrtrimすることで、余分キャラがない状態にはできるのですが、
余分キャラがついてこないようなPOSTの方法、
または余分キャラを発生させないログの作り方などの
ヒントをいただければと思う次第です・・・。

ログの作り方は
$writeDat = $number."\t".$post['title']."\t".$post['honbun']."\t".$post['hi']."\t".$post['ji']."\t".$post['cat']."\t".$image."\n";

展開は
$lines = file($setting['logfile']);
for ($i=0; $i<count($lines); $i++) {
$dat = explode("\t", $lines[$i]);
list($number,$title,$honbun,$hi,$ji,$cat,$image) = $dat;
$cat = rtrim($cat); // なぜかトリムが必要・・・
}

こんな感じです。よろしくお願いいたします。
491nobodyさん:2006/04/18(火) 10:48:16 ID:lmSkCOac
492nobodyさん:2006/04/18(火) 10:56:00 ID:???
めちゃくちゃなPHPソースを制御構造とかに則して
フォーマットしてくれるソフトってありませんか?

if ($a == true) { print "OK"; }



if ($a == true) {
 print "OK";
}

みたいな感じで
493nobodyさん:2006/04/18(火) 11:18:33 ID:???
さらにIEのXML表示のように、制御構文単位で折りたためるEditorキボン
494nobodyさん:2006/04/18(火) 12:03:27 ID:???
>>490
PHPというより、入力FORMでのHTMLの書き方に問題があると思うけどね。
495490:2006/04/18(火) 12:50:33 ID:???
>>494
レスありがとうございます。
フォームを書いている部分のソースを晒してみます。


function putForm($ua,$setting,$cate) {
echo '<div class="titlebox"><h2 class="diarytitle_2">admin mode</h2></div>';
echo '<form enctype="multipart/form-data" action="admin.php" method="post">';
echo 'title <input type="text" size="60" name="title"><br>';
echo 'category<select name="cat">';
echo '<option value="">--</option>';
while (list($key, $val) = each($cate)) {echo "<option value=$key>$cate[$key]</option>";}
echo '</select><br>';
echo '<textarea rows="6" cols="60" name="honbun"></textarea><br>';
echo '<input type="file" name="uploadfile"><br>';
echo '<input type="hidden" name="action" value="write">';
echo '<input type="submit" value="write">';
echo '</form>';
}
(原因を削除してしまうのを回避するために、関数部分まるごとコピペしました)

496nobodyさん:2006/04/18(火) 13:16:03 ID:???
>>490
ログデータを作るところは、implode使ったほうが見通し良くないか?
497446:2006/04/18(火) 13:19:13 ID:QNgm/uEx
>>456さんの言うとおり全てdist clean してmakeし直したら上手くいきました。

どうみても素人です。本当にありがとうございました。
498490:2006/04/18(火) 13:54:39 ID:???
>>496
ご意見ありがとうございます。
implodeを使うと、formのhiddenで渡している値なども、
まとめてログに格納されてしまうので・・・

あ。

POSTされた内容を$postに丸投げ($post = $_POST)しているから、
そんなことになるのですね。

$post[]の内容を整理して、implodeで見通し良くログを作成したいと思います。
ありがとうございました。
499nobodyさん:2006/04/18(火) 14:58:11 ID:???
>>495
> while (list($key, $val) = each($cate)) {echo "<option value=$key>$cate[$key]</option>";}
この$cateはどこでどういう風に作ってるんだ?
そこでゴミ入れちゃってるんじゃないかと思うんだが
500490:2006/04/18(火) 15:01:51 ID:???
>>499
> この$cateはどこでどういう風に作ってるんだ?

別ファイルにて$cateの設定をしております。
$cate => カテゴリーの意 です。

$cate = Array (
'news' => 'おしらせ',
'music' => '音楽',
'baseball' => '野球',
'game' => 'ゲーム',
'yota' => 'ヨタ話',
'test' => 'テスト'
)

こんな感じです。趣味がバレて(*‘ω‘ *)ィャンですが。

501nobodyさん:2006/04/18(火) 15:10:49 ID:ksf2FOYQ
PHP Version 4.4.1-pl1
xamppにて環境を構築しています

ファイルのアップロードをPHPで実現しようとscriptを組みましたがファイル名によっては正常にアップロードされない場合があります。
アップロード前に適当な長い文字にリネームすると正常に動作するのですが、これは私の綴りに誤りがあるからなのでしょうか。
web上でphp scriptを配布されている方のscriptも走らせて見たのですが全く同じ現象で、どこが悪いのかさっぱりです。
何かバグや仕様などあるのでしょうか?
502nobodyさん:2006/04/18(火) 15:14:13 ID:???
>>501
うpできないファイル名の例を挙げてみたら?
503501:2006/04/18(火) 15:19:11 ID:ksf2FOYQ
>>502
レス有難う御座います。
そしてすいません。
肝心な部分が抜けていました。

FILE_003.jpgが通らず、200601071530000.jpgは問題無し
前者をリネームし00aerasfsaf5.jpgにしてみましたが通らずといった感じです。

$upfile_name = $_FILES["image"]["name"];
$upfile = $_FILES["image"]["tmp_name"];
$path = dirname($_SERVER[PATH_TRANSLATED]).IMG_DIR;

if (file_exists($upfile)) {
$dest = $path.$upfile_name;
move_uploaded_file($upfile, $dest);
$ext = substr($upfile_name,-4);
rename ($dest,$path.date("20ymdhis").$ext);
$imgname = date("20ymdhis").$ext;
echo $size = getimagesize($path.$imgname);
$W = $size[0];
$H = $size[1];
504nobodyさん:2006/04/18(火) 15:21:28 ID:ksf2FOYQ
アップロード処理の一部はこんな感じで書きました。
原因があるとしたら、ファイル名処理が怪しいですかね。
ケツから三行目にechoとか入ってますが、なんちゃってデバッグでちゃんと取得できているか試してた名残です(汗
505nobodyさん:2006/04/18(火) 16:04:58 ID:???
>>504
以下で同じ駄目だというファイル名で実験したが普通に動いているぞ?
<?php
$upfile_name = $_FILES["image"]["name"];
$upfile = $_FILES["image"]["tmp_name"];
$path = dirname($_SERVER[PATH_TRANSLATED]).'/upfile/';

if (file_exists($upfile)) {
$dest = $path.$upfile_name;
move_uploaded_file($upfile, $dest);
$ext = substr($upfile_name,-4);
rename ($dest,$path.date("20ymdhis").$ext);
$imgname = date("20ymdhis").$ext;
echo $size = getimagesize($path.$imgname);
$W = $size[0];
$H = $size[1];
}
?>
<html>
<head>
<title>テストたぼけたれ</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>

<body bgcolor="#FFFFFF">
<form action="./0.php" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" value="送信">
</form>
</body>
</html>
506nobodyさん:2006/04/18(火) 16:12:20 ID:???
>>504
FILE_003.jpgのファイルサイズがやたらに大きいとかじゃないのか?
507nobodyさん:2006/04/18(火) 16:15:06 ID:???
ファイルサイズ制限かタイムアウトだろうな。
508501:2006/04/18(火) 16:39:57 ID:???
たくさんのレス有難う御座います。
仰るとおりファイルサイズ制限によるものでした。
PHPマニュアルから関数を調べてサンプルコードをコピペした際、隠し要素のMAX_FILE_SIZEをそのままにしていたのが原因でした。
初歩的なミスで申し訳ないです。
テンパってると簡単なミスにも気づかないものですね........
509nobodyさん:2006/04/18(火) 16:53:20 ID:???
>>490
$imageの後ろにゴミが付くのなら分かるが(これだと改行コードが付くだろう)
$catの方に付くってのはわからんなー
510490:2006/04/18(火) 16:59:31 ID:???
>>509
レスありがとうございます。
当面は「ゴミ付データをrtrimする」という場当たり対処で乗り切りますです。


・・・目覚めは悪いですが、現状の自分のスキル不足だと割り切ります。
これから勉強していくうちに、解決策も思いつくかもしれませんし(つД`)

レスをいただいた諸氏へ感謝(。・ω・。)ゞ

511nobodyさん:2006/04/18(火) 18:30:12 ID:???
if( 入力チェック )
$err['name'] = 'エラーメッセージ';
if( 入力チェック )
$err['tel'] = 'エラーメッセージ';
if( 入力チェック )
$err['address'] = 'エラーメッセージ';

のような入力チェックを作ったとして、
表示側を下みたいにした時、

<?= $err['name'] ?>
<input type="text" name="name"><br>
<?= $err['tel'] ?>
<input type="text" name="tel"><br>
<?= $err['address'] ?>
<input type="text" name="address"><br>

error_reportingの設定によってUndefinedが出るんだけど、
error_reporting関数か.htaccessを使って設定を変えるのと、
表示側を

<? if( isset($err['name']) ){ echo $err['name']; } ?>

とするのとどっちがいいんだろう?

512nobodyさん:2006/04/18(火) 18:42:51 ID:FgrLDE8s
ある一定の時間まで、カウントダウンのように
分数(秒数)単位で結果を出力させるにはどうしたらいいでしょうか?

http://iodine-127.no-ip.info/math/countdown.php
こんな感じなんですが、文字で出力させたいのです・・・
513nobodyさん:2006/04/18(火) 20:30:38 ID:???
514nobodyさん:2006/04/18(火) 20:31:20 ID:0MA4uQo3
文字コードの質問です。
phpのファイルはエディタの設定をシフトJISにしています。ヘッダのcharsetはshift-jisです。phpmyadminの最初のページで、languageをjapanese(ja-sjis)にしています。php.iniのmbstringの項目ではmbstring.internal_encoding = SJISになっています。
以上が全て同じなら、文字コード的に問題無いでしょうか?作ったシステムは今のところ正常に動いています。

それと、なんだかんだいってEUC-jpでつくるのがベストみたいな話を聞いたのですが、なぜでしょうか?

よろしくお願いします。
515nobodyさん:2006/04/18(火) 21:24:39 ID:ezAkcLQV
Apache 1.3.34+php 4.3.10で質問です
指定したディレクトリで指定した拡張子のMIME typeが何と設定されてるか
httpd.confやら.htacccessやら調べて取得してくれる関数ってありませんか
516nobodyさん:2006/04/18(火) 23:04:17 ID:???
>>514
「なんだかんだでEUC-JP」の理由が理解できないうちは、
なんだかんだでEUC-JPにしとくといいと思うよ。

EUC以外のエンコードを採用するのに確固たる理由や確信が持てるように
なったら、それにすれば良いとです。
517nobodyさん:2006/04/18(火) 23:58:23 ID:???
>>514
PHPで構築したサイトを1年以上運営していますが
Shift_JISで特に問題を感じたことはありません。
518470:2006/04/19(水) 00:05:26 ID:???
作ってみたが、難しい・・・
http://s2.muryo-de.etowns.net/~teti/tools.phps
どっかエラーがありそう。

文字コード「EUC」の改行コード「LF」に変換してからしか使えないし
何か、良い方法無いかな・・・
519nobodyさん:2006/04/19(水) 00:16:42 ID:47s4d2RM
アップローダーを作っているのですが、日本語の入ったファイルをアップできません。
というか、2byte文字が入っていると$_FILES['upfile']['name'];でファイル名が収得できません。
拡張子のみが返ってきます。

英数字のみのファイルはアップロード出来るので、2byte文字が原因だとは思うんですがどうすればいいのでしょうか?

$filename = $_FILES['upfile']['name'];
$enctype = mb_detect_encoding($filename);
$filename = mb_convert_encoding($filename,"EUC-JP","enctype");

if (move_uploaded_file($_FILES['upfile']['tmp_name'],$updir.$filename)
== FALSE){
print("アップロードに失敗しました。");
}else {
print( $filename . "アップロードしました。");
}
520nobodyさん:2006/04/19(水) 00:43:16 ID:???
例外を使おうと思ってんだけど、どういった場合に使うか迷う。

たとえばDBとコネクトするごとにtryしたほうがいいのか
クエリを発行するごとにtryしたほうがいいのか・・・

皆さんは例外結構使ってまつか?
521514:2006/04/19(水) 01:05:36 ID:3WMC/UyZ
>517
レスありがとうです。
SJISとかのデメリットってなんですかねぇ?
たまにUTF8を激しく推奨みたいのも見かけますし、
なにがいいのかわからないです。
自分的にはSJISが好きなのですが、予期せぬ\マークがでたりしますが、htmlspecialcharsとかstripslashesをやると消えるので、
あまり不具合も感じません。
具体的なお話がきけると有り難いです。
よろしくお願いします。
522nobodyさん:2006/04/19(水) 01:48:03 ID:???
ちゃんとわかってればいいですよ。
DBへ値を保存するときにはちゃんと文字コードを意識しなければだめ。

最近はサーバ環境がユニコードのためか、viでそのまま文字が読めることに
UTF-8はいいなと感じてる。

携帯はSJISがいいでしょ?
523nobodyさん:2006/04/19(水) 01:51:48 ID:???
>>521
大抵サーバがEUCだからEUCでスクリプト書いておくと何か問題があったときにviとかで直接見られる。
サーバ上にあるスクリプトを直接見ることで、何者かの手によって勝手に改変されてないかわかる。

・・・てことより、バグ見っけたらサーバ上のスクリプトをコッソリ直すってコトの方が多いなw
だからEUCで書いてた方が楽なときが多い。
全てのサーバがnkfとか入れてるわけじゃないからね。特に海外のレンタルサーバなんて・・・
まぁコメントとか日本語使わなきゃいいんだけど、日本語のコメントなきゃサッパリ分からないしー
524nobodyさん:2006/04/19(水) 01:55:59 ID:???
>>521
mb_** みたいなライブラリが使えない状況だと、EUC の方が圧倒的にコーディングが楽だよ。
SJIS は、文字列を途中から評価しようとしたとき、そのバイトが2バイト文字の一部なのか、そしてそれが何バイト目なのかがすんなり判断できない。
あと環境によっては、2バイト文字の一部に \ を含むものがあるというのがネックになる。
ヘタするとスクリプトのパースすら失敗するしね。
できるだけどこでも動くものを作ろうと思うと、SJIS よりも EUC の方が苦労しないと思う。
525nobodyさん:2006/04/19(水) 01:58:44 ID:???
PHPでDB(PostgreSQL)使うときにbeginて使えてる?
なんかちゃんと動いてんのかわかんねー
DBへの書き込み自体はうまく行ってるみたいだし
pg_query( 'begin' )だけで問題ないよね?
526nobodyさん:2006/04/19(水) 02:00:59 ID:???
>>525
INSERT して ROLLBACK してみりゃいいじゃん。
527nobodyさん:2006/04/19(水) 02:53:15 ID:???
あ、なるほどねー
サンクスコ
528nobodyさん:2006/04/19(水) 03:51:04 ID:sslsiAd8
すごいくだらない質問ですが答えていただけたら嬉しいです。

PHPでオンラインテストを作る課題を出されました。
mySQLでtest、question、answerが含まれたテーブルを作ったんですが、このテーブル1つだけで

テストを選んだら複数の問題が表示される
1つの問題に3つの答えが表示される
3つのうち1つだけが正解

というスクリプトは書けるでしょうか?
529nobodyさん:2006/04/19(水) 04:08:09 ID:enTaLLyd
Functionの引数とglobal、使い分けがわからん。
こういう場合は引数で渡して、こういう場合はglobal宣言っていう例ない?
530nobodyさん:2006/04/19(水) 04:12:06 ID:???
>>528
書けなくはないけど、効率悪いか、問題のメンテナンスに難がある。
・テストに対して問題は1対多
・問題に対して選択肢は1対多(ただし3つ固定)
てことを考えると、テストと問題は別テーブル、回答は本来別テーブルだけど、
パフォーマンスに難があれば問題に含めても良い。

…全然PHP関係ないね。DB板向け。
531528:2006/04/19(水) 04:32:32 ID:sslsiAd8
>>530
最高でもテーブルは2つまでとのことなので、テーブルを2つ作り、テストのみ、問題と回答1、回答2、回答3というようにしたらいいでしょうか?
正解の回答も回答4などとして加えてスクリプトで、選んだ回答が回答4のとき、などと書いて正解を確かめるんでしょうか?

最初DB板で似たような質問したのですが普通にスルーされまして・・・(;´Д`)
PHPのスクリプトの問題なのかと思いこちらで質問させていただきました。
532nobodyさん:2006/04/19(水) 04:46:09 ID:???
>>531
スクリプトは関係ない
DB板向け
533528:2006/04/19(水) 04:51:23 ID:sslsiAd8
>>532
分かりました。
どうもすいませんでした。
534nobodyさん:2006/04/19(水) 07:22:37 ID:???
>>511
使う変数は前もって定義しておく
$err['name'] = "";
$err['tel'] = "";
$err['address'] = "";
535nobodyさん:2006/04/19(水) 07:29:27 ID:???
>>519
ファイル名の最後が表とかで終わってるんじゃない
htmlの出力をshift jis以外にするしかないと思う
536nobodyさん:2006/04/19(水) 09:08:20 ID:???
知識が浅いヤツはシフトJISなんか使っちゃダメ。
文字化けとかセキュリティ的な問題とか山のようにある。
http://d.hatena.ne.jp/t_komura/20060122#1137944280

携帯とかSJISのほうがいい場合は、出力直前にSJISにコンバートすりゃいい。
(ただ、最近の携帯はパソコンとほぼ同じく複数のエンコードに対応してるからEUCがオススメ)。
で、スクリプトの内部やDBではEUCで統一したほうが圧倒的に楽。
537nobodyさん:2006/04/19(水) 09:34:24 ID:???
客からSJISで書けって言われるんだよ……
538nobodyさん:2006/04/19(水) 09:44:08 ID:???
じゃあSJISでセキュリティリスク無くかける技術を身につけろ
539nobodyさん:2006/04/19(水) 09:58:26 ID:???
>>536
へぇ、こんなSQLインジェクションのテクニックがあったんだね。
今までSJISを避けてきたけど、SJIS使わされるハメになったら穴だらけになるところだった。
危ない危ない
540nobodyさん:2006/04/19(水) 10:27:12 ID:???
>>537
SJISにこだわる理由を聞け、理由を。

っていうかそんな客なんか切るか、もしくは
「セキュリティ強度が低下しますけどいいんですね?
または強度を維持したいなら見積もり額アップしますけど」
って言えよ。
541nobodyさん:2006/04/19(水) 10:34:25 ID:???
SJISじゃないとたまにブラウザがcharset指定してても無視して文字化けするときがある
IE5の時代はよくあった
542nobodyさん:2006/04/19(水) 10:37:24 ID:???
>>541
それは出力時にSJISにすればいいだけじゃない。
内部処理までSJISにするこたぁない
543nobodyさん:2006/04/19(水) 10:39:30 ID:???
>>542
スクリプトチェックするときメモ帳で開けないジャンw
544nobodyさん:2006/04/19(水) 11:12:26 ID:???
メモ帳て
545nobodyさん:2006/04/19(水) 11:13:47 ID:???
そもそもPHPはInternalEncでSJIS対応してねーだろ?
546nobodyさん:2006/04/19(水) 11:19:06 ID:???
>>543
スクリプトに日本語かかなきゃいい
547nobodyさん:2006/04/19(水) 11:28:46 ID:???
>>546
日本語でちゃんとコメント入れておいてくれなきゃ、判んないじゃんw
548nobodyさん:2006/04/19(水) 11:30:18 ID:???
>>547
ぴゅう太でもつかうといいよ
549nobodyさん:2006/04/19(水) 11:37:21 ID:???
>>535
ありがとうございます。
表で終わっていると駄目なんですね・・・。
知らなかった。。
550nobodyさん:2006/04/19(水) 11:46:28 ID:???
>>543
お・・・お前・・・・・(絶句)

>>545
ハァ??
551nobodyさん:2006/04/19(水) 12:13:20 ID:???
>>549
途中にあっても駄目
ディレクトリの区切り記号"\"と判定されるから
表などであって他にもある

結論はシフトジスは使わない
552nobodyさん:2006/04/19(水) 12:13:34 ID:FFPzklJQ
自首しますた

http://8909.teacup.com/tomi/bbs
553nobodyさん:2006/04/19(水) 13:11:01 ID:???
$log = "example.log";
if (!file_exists($log)){
$logが見つからなかったらパーミッション666で$logを自動生成する
}

といったことをやりたいのですが、
fopenを使った場合、ログファイルなのでパーミッションを666にしたいのですが、
パーミッションが644になってしまい(Xrea使ってます)、
ディレクリの権限を変更しないと(707や777等)作成されませんでした。
なんかいい関数とか方法ありませんでしょうか?
functionで作れるような腕はもっておりませんorz
554nobodyさん:2006/04/19(水) 13:16:42 ID:???
>>553
つ「chmod」
555nobodyさん:2006/04/19(水) 13:22:07 ID:???
>>550
ハァ??

PHPで動作しないと思われる文字エンコーディングの例を以下に示します。

JIS, SJIS, ISO-2022-JP, BIG-5
これらのエンコーディングで書かれたPHPスクリプトは、特に符号化された文字列がスクリプトで記述子やリテラルに使用される場合には、動作しない可能性がありますが、
入力されるHTTPクエリに関してmbstringの透過的なエンコーディングフィルタを設定することでこれらのエンコーディングをほとんど使用しないようにすることができます。
注意:
SJIS, BIG5, CP936, CP949, GB18030 は、読者がパーサ/コンパイラ、文字エンコーディングと文字エンコーディングの問題点について精通していない限り内部エンコーディングとして使用するべきではありません。
556nobodyさん:2006/04/19(水) 13:27:36 ID:???
>>555
ハァ??
557nobodyさん:2006/04/19(水) 13:42:26 ID:???
>>555
デフォでは使えないということは、対応してないというわけではない。
(デフォで対応してないのはmb系全般そうだけど)
そこの説明は「非推奨。使用する場合は注意すること」っていう説明。
558nobodyさん:2006/04/19(水) 13:53:00 ID:???
>>536
SJIS使ってるときにエスケープでaddslashesなんて使う方が悪い気がするけど。
mysql_escape_string使ってれば全角文字をちゃんと認識してエスケープできる。
559nobodyさん:2006/04/19(水) 14:00:38 ID:???
>>558
だから{
>知識が浅いヤツはシフトJISなんか使っちゃダメ。
560nobodyさん:2006/04/19(水) 14:01:15 ID:???
>>558
mysqlと決め付けるのもワロス
561nobodyさん:2006/04/19(水) 14:25:45 ID:???
>>536
うん。もっとそのことを早めに解ってれば良かったんだけどね。
俺の場合はもう後の祭り状態だな。
562nobodyさん:2006/04/19(水) 14:51:21 ID:yEjSiGYT
phpスクリプトをがんがん書いている方に質問です。
使っているキーボードは日本語配列ですか、それとも英語配列ですか?
双方のメリット、デメリットと合わせて教えて下さい。
563nobodyさん:2006/04/19(水) 14:59:01 ID:???
>>562
日本語
メリット ここは日本で私は日本人だから
デメリット 特に無し
個人的にはそんなものよりキーを押したときの硬さなどが気になる…
長時間やっても疲れないのが一番!!
564nobodyさん:2006/04/19(水) 14:59:26 ID:???
>>562
どっちでもたいした影響は無いんじゃないの?
要は慣れなんだし。
565563:2006/04/19(水) 14:59:56 ID:???
あ!ローマ字ってことね
566nobodyさん:2006/04/19(水) 15:12:32 ID:???
>>565
いや、たぶん元の考えで合ってる。日本語106だとか英語101だとか。
567nobodyさん:2006/04/19(水) 15:28:38 ID:???
phpに限らず余計なキーの無い英語キーボードが好き
568nobodyさん:2006/04/19(水) 15:34:30 ID:???
109から変換・無変換・カタひらを取っ払った変則106をどっか出してくれないかなあ
569nobodyさん:2006/04/19(水) 16:23:24 ID:???
system()とかの出力を変数に代入するには
どうすればよかとでしょうか?
570nobodyさん:2006/04/19(水) 16:42:28 ID:???
>>562
日本語配列のメリット:慣れてると打ちやすい デメリット:慣れてないと打ちにくい
英語配列のメリット:慣れてると打ちやすい デメリット:慣れてないと打ちにくい
571nobodyさん:2006/04/19(水) 16:46:59 ID:???
>>569
$env = system("...");
572nobody:2006/04/19(水) 18:05:49 ID:k/ExYNcl
PHPから半角カナを使った検索をしたいのですが、
半角カナ文字のみ条件だと文字化けします。

A.php(「検索」を押すとB.phpが実行)
<input type=text name="hankaku_kana">
<input type=text name="zenkaku_kana">
<input type="button" value="検索">

B.php
$sql = "select * from Table where col = *";
if(hankaku_kana != NULL)
$sql = $sql."and col = hankaku_kaa";
if(zenkaku_kana != NULL)
$sql = $sql."and col = zenkaku_kana";

このとき、zenkaku_kanaに全角文字が入っていると
検索できるんですが、
半角文字だけだと文字化けします。
どうしたらできますか?
573nobodyさん:2006/04/19(水) 18:12:08 ID:???
しまった
オレsjisで作ったコトある・・・しかも商用orz
574nobodyさん:2006/04/19(水) 18:14:58 ID:???
UTF-8 >> EUC-JP >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Shift_JIS

よく分からないなら、UTF-8 使っとけ。

EUC-JPに比べてUTF-8を使うメリット
・最近のUnix/Linux系OSではUTF-8が標準であることが多い
・国際標準なのでどの言語でも利用できる
・Windows/Macでも内部コードとして使われてきている

575nobodyさん:2006/04/19(水) 18:19:29 ID:???
>>573
超大手商用サイトでもShift_JIS使ってるとこなんていくらでもあるよ
当たり前な日本語になるが、問題なければ問題ない
576nobodyさん:2006/04/19(水) 18:39:05 ID:???
UTF-8推奨ってのは同意するけど、スクリプトを配布して共用鯖で使う場合では別の問題がある。
・UTF-8は日本語が3バイト(EUC-JPはほぼ2バイト)だから容量制限にひっかかる(DBが5MBの某鯖とか)
・Winのメモ帳などでいじるとBOMがついて誤作動する
ただ
・DBの文字コードとスクリプトの文字コードは同じほうが効率が良い
・SQLiteはUTF-8/16推奨
577572:2006/04/19(水) 18:51:40 ID:k/ExYNcl
鯖がEUC、DBがSJISでやりたいんですが、難しいですか?
578nobodyさん:2006/04/19(水) 18:54:06 ID:???
全然
579nobodyさん:2006/04/19(水) 18:55:51 ID:???
DB SJISは正気とは思えない。
580nobodyさん:2006/04/19(水) 19:22:43 ID:???
箱庭諸島方式でいけよ 内部がEUCで出力はSJIS
つかUTF-8とかならともかく日本語環境でなんでEUCを内部コードに使うのかわからん
581nobodyさん:2006/04/19(水) 19:53:22 ID:???
SJISとEUCとどっちか2択、なら正規表現で全角そのまま書いてもこけないEUCが楽だから。
582nobodyさん:2006/04/19(水) 20:08:41 ID:yEjSiGYT
すいません、サーバに文字コードってあるんですか?DBの文字コードとは別なんですか?
サーバの文字コードとDBの文字コードとスクリプトの3つを気にしなきゃいけないのですか?
583nobodyさん:2006/04/19(水) 20:15:11 ID:???
>>582
サーバの文字コードとDBの文字コードとスクリプト内部処理の文字コードと
HTML出力の文字コードの全てを「UTF-8」にすれば完璧です。

それ以外の心配はいりません。
584nobodyさん:2006/04/19(水) 20:27:20 ID:lD0hd5jB
配列の配列($myArray[$i][$j])の値の合計値を求めたいのですが

$myArray_sum = array_sum($myArray)

これでは値が0になってしまいorz

配列自体に数値が入っているのは確認しました。
配列の配列 array_sum/二次元配列 array_sum/等
でググったんですけど分かりませんでした。ど
うやったらいいでしょうか?
よろしくおながいします。
PHP Version 4.3.9
585nobodyさん:2006/04/19(水) 20:28:17 ID:yEjSiGYT
サーバの文字コードっていうのはapachの文字コードってことですか?
レンタルサーバでも変更できますか?
586nobodyさん:2006/04/19(水) 20:40:02 ID:???
>>584

$myArray_sum = 0;
foreach($myArray as $a) $myArray_sum += array_sum($a);

かなぁ
もっと簡単な方法ってあるのかな。
587nobodyさん:2006/04/19(水) 20:45:19 ID:???
ほんとくだらんくてすみません。
掲示板のようなもので、データを書き込んだら
なぜか「ソ」のあとに\が付くんですが、なぜでしょう。
カタカナを確かめるとソ以外の後ろには付きません。

htmlspecialcharsと、str_replaceで、改行、キャリッジリターンを<br>で変換する処理をしたあと、
ログに書き込んでいます。ログに書き込まれた時点で\が付いてるので表示の問題ではないようです。
お願いします。
588nobodyさん:2006/04/19(水) 20:49:34 ID:???
>>582
あと、クライアントの許容コードな

>>583
それじゃ満足な携帯サイトは作りきれん
589587:2006/04/19(水) 20:51:57 ID:???
ごめんなさい、magic_quotes_gpcの影響のようです
590nobodyさん:2006/04/19(水) 20:55:12 ID:???
>>585
OS自体の文字コード。
WindowsはShift_JISで変更不可。
Fedora Core (Linux) なら UTF-8 が標準。(設定で変更可)

かんたんに言えばこんなかんじだ。
591nobodyさん:2006/04/19(水) 20:55:32 ID:???
>>583
ついでに携帯専用サイトの文字コードもUTF-8にしとけば?w
592nobodyさん:2006/04/19(水) 20:57:39 ID:???
>>591
ん、ケータイ用サイトの文字コードもUTF-8にしているよ。
auとtu-ka、WILLCOMは全機種UTF-8対応でしょ。
(ゲートウェイで変換されるから旧機種でも問題無い)
たしかDoCoMoもよっぽど古い機種じゃなけりゃ問題ないとおもう。

たぶんアクセス解析すりゃ98%以上がUTF-8対応じゃないの?

593nobodyさん:2006/04/19(水) 20:58:05 ID:???
>>574
> EUC-JPに比べてUTF-8を使うメリット
> ・最近のUnix/Linux系OSではUTF-8が標準であることが多い
「多い」ってことは全部じゃない?

> ・Windows/Macでも内部コードとして使われてきている
「きている」ってことはやっぱ全部じゃない?
594584:2006/04/19(水) 20:59:35 ID:lD0hd5jB
>>586
ありがとうございました。
数もそう多くないんで処理できれば問題なかったんで。
加算代入の存在忘れてました。
595nobodyさん:2006/04/19(水) 20:59:47 ID:???
> 「多い」ってことは全部じゃない?
全部では無い。
ただ、EUC-JPよりは利用率が圧倒的に高い。

> 「きている」ってことはやっぱ全部じゃない?
全部では無い。
WinはShift_JISの箇所が一番おおいしな。
EUCはUnix用のコードだからWinの内部コードではないっしょ。
596nobodyさん:2006/04/19(水) 21:01:08 ID:???
>>576
容量制限の問題はたしかにあるな。

> Winのメモ帳などでいじるとBOMがついて誤作動する
そもそも、EUCだとWinのメモ帳じゃ弄れないよね。
597nobodyさん:2006/04/19(水) 21:10:33 ID:???
>>596
そもそもスクリプトやらを弄るならエディタぐらい揃えろと
598580:2006/04/19(水) 21:19:24 ID:???
ごめ、最後のとこSJIS
599nobodyさん:2006/04/19(水) 21:58:37 ID:???
>>592
ドコモはFOMAだけ。
公式サイトはXHTMLでないなら審査通過しないよ。
600nobodyさん:2006/04/19(水) 22:23:19 ID:???
>>599
XHTMLと文字コードは関係無いわけだが。

あとMOVAでWeb巡回する人なんてそんないないだろ。
2円/1パケット=128バイト もぼったくられるでしょ。
1MBで2048円にもなる。
601nobodyさん:2006/04/19(水) 22:24:17 ID:???
パケ死対策としてUTF-8にしてMOVAは弾いた方が親切だなw
602nobodyさん:2006/04/19(水) 23:38:56 ID:???
>>600
公式嫁。
HTMLはSJIS、XHTMLはSJISかUTF8と書いてある。

つーか、わざわざイリーガルなことをせず素直に一般的な方法を選べよ。余計な事をして後悔したくなければな。
603nobodyさん:2006/04/20(木) 00:22:29 ID:???
>>602
公式の情報が正しいとは限らないわけだが。
特にDoCoMoの情報はいい加減。

[email protected] というメールアドレスが
RFC準拠だとも書いてあるぞw
604nobodyさん:2006/04/20(木) 00:44:56 ID:???
>>603
DoCoMoにもお前みたいのがいるんだろう
605nobodyさん:2006/04/20(木) 01:00:15 ID:???
俺は絶対メールアドレスの@より前の文字例にはドットを使わない。
いくら大丈夫だからって気持悪い。
606nobodyさん:2006/04/20(木) 03:59:38 ID:???
クラスの勉強中に書きのようなコードを書いたんですが。
Warning: Invalid argument supplied for foreach()  と怒られます。

--------------------------------------------------
<?php
include('mainmenu.inc');

$page = new mainmenu(HOME);
$array = array('HOME' => 'home.php','SERVICES' => 'service.php','PORTFOLIO' => 'portfolio.php','CONTACT' => 'contact.php');
$page->ex = $array;
$output = $page->mainmenu('HOME');

print $output;
?>
--------------------------------------------------

607606:2006/04/20(木) 04:01:33 ID:Rr5Gf5oo
mainmenu.inc
--------------------------------------------------
<?php
class mainmenu
{
function mainmenu($atpage)
{
$print .= '<table align="center" width="360" cellpadding="0" cellspacing="5">';
foreach($this->ex as $key => $val)
{
$print .= ahref("$val","$key","$atpage");
}
return $print;
}
}

function ahref($link,$name,$atpage)
{
if($name != $atpage)
{
return "<td><h2><center><a href=$link>$name</a></h2></td>";
}
else
{
return "<td><h2><center>$name</h2></td>";
}
}
?>
--------------------------------------------------
正直試行錯誤しながら適当に書いたのですが、エラーの理由が分かりません。
表示をちゃんと出来ているのでエラーを黙らせるだけでもいいのですが・・。
608nobodyさん:2006/04/20(木) 04:05:41 ID:???
>>607
class mainmenu の中に var $ex; って定義したらどう?
609606:2006/04/20(木) 04:09:36 ID:Rr5Gf5oo
>>608さん早速の返答ありがとうございます。

class mainmenu
{
var $ex;
function mainmenu($atpage)
{

といった感じで、他の変数も宣言してみましたが変わりませんでした・・。
610nobodyさん:2006/04/20(木) 04:40:15 ID:???
>>609
あーわかった。
new した時点でコンストラクタが実行されるのに、その時点ではまだ ex に値が入ってないからだね。
611nobodyさん:2006/04/20(木) 05:48:34 ID:5qR+ryMI
<?

$html = implode('', file('http://hoge.com/'));

print $html;

?>

これを、ローカルで実行すると「問題が発生したため、Apache HTTP Server
を終了します。 」とでるが、XREAにアップして実行するとエラーになりません。

ローカルでエラーにならない方法知ってる方、いらっしゃいますか?
612nobodyさん:2006/04/20(木) 05:56:37 ID:A22L6gzy
一定時間ごとに起動するスクリプトは
どのように書けばいいのでしょうか。
誰か教えてくれませんか。
613nobodyさん:2006/04/20(木) 06:18:02 ID:???
>>611
リモートファイルが使えるようになってる?phpinfo()で確認
http://jp.php.net/manual/ja/features.remote-files.php
>>612
「一定時間ごとに起動」はcronやat、タスクスケジューラなど
スクリプト起動しっぱなしなら永久ループでsleepとか
614nobodyさん:2006/04/20(木) 06:19:32 ID:???
>>612
意図がよくわからない。応答返さずに定期的にアクティブになるならsleepだけど、意味ないわな。
一定時間ごとに応答が欲しいなら、ブラウザにRefresh指定しなさいな。
615nobodyさん:2006/04/20(木) 06:42:41 ID:5qR+ryMI
>>613
php.ini の設定は次のようになっています。

; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = On

ちなみにOSはWindowsXPです。
616nobodyさん:2006/04/20(木) 07:15:59 ID:A22L6gzy
>613
cronとは初めて聞いたのですが、どのようなものなのですか。
書き方を知ろうと思いググってみたのですが、
どう書いたらよいのか分からなくて。
良かったら、教えていただけませんか。
617nobodyさん:2006/04/20(木) 07:37:21 ID:A22L6gzy
php.iniじゃなくって
phpinfo();で確認ってことじゃないの?
618nobodyさん:2006/04/20(木) 08:01:58 ID:???
>>615
ちなみにマニュアルは読んだ?
>>注意: PHP 4.3未満のWindows版PHPは次の関数については リモートファイルアクセスをサポートしてません: include(), include_once(), require(), require_once(),
>> そして参照LVIII, イメージ関数(image)拡張によるimagecreatefromXXX関数。
はどう?
確認するのはphpinfo()で表示されるRegistered PHP Streamsにhttpがあるかどうか。
#関係ないけど最初の implode('',file('...'))はfile_get_contentsのほうがいいかなっと

>>616
OS書いてないからわかんないけど、cronは定期的に自動実行するUNIX系のツール
phpのスクリプトを設定した時間がきたら動かすってことだな。
ぐぐればわんさか出てくる。WinならVectorでもいけばそういうツールあると思うけど。
619613:2006/04/20(木) 08:05:34 ID:???
>>616
べくたーにこんなんあったけど
http://www.vector.co.jp/soft/winnt/util/se232096.html
UNIXのcronみたいなの
620nobodyさん:2006/04/20(木) 09:58:55 ID:???
>>558
お前、>>536で提示されてるリンク先をよく読んだか??

読んでもまだ意味がよく分からないようなら相当ヤバイので、
エンコード云々に限らず、Webプログラム開発自体を止めたほうがいいよ。
621nobodyさん:2006/04/20(木) 10:40:57 ID:???
FedoraCore3/Apache1.3.33/PHP4.3.11をインストールしました。
Apacheは
./configure --prefix=/usr/local/apache --enable-module=so
PHPは
./configure --without-mysql --enable-mbstring --with-apxs=/usr/local/apache/bin/apxs --prefix=/usr/local/php4
でインストールしました。

Apacheを起動し、<?php phpinfo(); ?>を書いたファイルにアクセスしたところ、php.iniのパスは/usr/local/php4/libでした。

ところが、/usr/local/php4/lib/にphp.ini-recommended⇒php.iniとして配置し、Apacheを再起動しても設定が反映されません。

何か作業に見落としがあるのでしょうか?
622nobodyさん:2006/04/20(木) 10:55:22 ID:???
>>618
マニュアルは読みました。
PHP Version は 4.4.2 です。
Registered PHP Streams はphp, http, ftp, compress.zlib で
httpはあります。
623nobodyさん:2006/04/20(木) 11:47:09 ID:???
>>622
Win版のバグ。
使いたかったらdev版使うか4.4.1使え
624nobodyさん:2006/04/20(木) 12:15:50 ID:???
>>623
4.4.1使ったら解決しました。ありがとう!
625nobodyさん:2006/04/20(木) 13:16:23 ID:???
>>621
なぜ今さらFedoraCore3??
もう5まで出てるんだが、今さら3を使うメリットってあるのかな?
626nobodyさん:2006/04/20(木) 13:30:31 ID:X9ueaSfE
こんにちわ。phpのfile_get_contentsについてですが、
サーバーA には $_POST["id"]でidを受信
サーバーB には file_get_contetnsプログラムをおきます。

以下、全てサーバーBにプログラムをおきまして、サーバーAに対し
file_get_contents("http://www.hoge.com?id=3");
をする事により、引数の id 3 をデータベースに登録したいのです。

しかし、サーバーBのレンタルサーバーによっては
file_get_contents("http://www.hoge.com?id=3");
をしても id 3 がデータベースに登録されない場合があります。

どうすればどのサーバーBでも
file_get_contents("http://www.hoge.com?id=3");
をすれば登録することができるでしょうか。

ご存知の方いらっしゃいましたら、ご教授下さい。宜しくお願いします。
627606:2006/04/20(木) 13:33:55 ID:???
>>610
出来ました、ありがとうございます!
クラス名とコンストラクタ名を同じにしていたのが混乱の原因だったようです。

ちなみに「クラス名と」と書こうとすると、「クラスメイト」と変換されるのもオブジェクト指向だからこそだなと思いました。
628nobodyさん:2006/04/20(木) 13:38:17 ID:???
>>626
その登録されないサーバで、情報を得られてる事は確認した?
エラーは出てないの?
629nobodyさん:2006/04/20(木) 13:41:16 ID:X9ueaSfE
>>628]
レスありがとうございます。
ページ自体は表示されるのですが、
?id=3 の ?以降の文字列が全く無視されてしまいます。

引数を送りたいだけなので require や include で試しても
うまく取得してくれませんでした。
630621:2006/04/20(木) 13:45:26 ID:???
>>625
たまたま手元に3があったのと、問題発生時の情報が新しいOSに比べて多く見つかること。あとは3がさほど昔のOSだとは思っていないことですね。
631nobodyさん:2006/04/20(木) 14:03:11 ID:???
>>626
ちゃんとファイル名まで書け
file_get_contents("http://www.example.com/index.php?id=3");
632nobodyさん:2006/04/20(木) 14:06:09 ID:???
>>629
ところでPOSTとGETの違いは認識できてる?
633nobodyさん:2006/04/20(木) 14:30:38 ID:X9ueaSfE
>>631 >>632
すいません、自己解決できました。
ありがとうございました。
634nobodyさん:2006/04/20(木) 14:36:17 ID:???
自己解決しても結果を書いてくれるとみんな助かるしスッキリするんだけどなぁ・・
ファイル名まで書かないとダメだったんだろうか
635nobodyさん:2006/04/20(木) 15:55:39 ID:???
メールをmysqlに流し込もうとしてるんですが、
たまに次のようなエラーがでます。
Check the manual that corresponds to your MySQL server version for the right syntax to use near 'hogehoge hoge' <[email protected]>', 'RE: hogehoge
<>か'あたりをエスケープしなきゃいけない感じでしょうか?
ただ、できれば<>をそのままデータベースに入れたいなと思ってます。
636nobodyさん:2006/04/20(木) 15:59:35 ID:???
mysql_escape_string
通せばいいって話じゃなくて?
637nobodyさん:2006/04/20(木) 16:07:10 ID:???
まあそれだけの話。
名称・アドレス併記の際のクォートが引っかかってるんだろ。
638nobodyさん:2006/04/20(木) 17:42:56 ID:???
>>635の作ったスクリプトは脆弱性だらけだと見た。
639nobodyさん:2006/04/20(木) 18:39:16 ID:???
DB上のデータを元に、ある入力フォーム上のプルダウンメニューを作りたいのですが
フォーム自体は、あるボタンが押された時にjavascript(つまりはDHTML?)で表示させています
このjavascriptを外部の***.jsとした場合、HEAD部で***.jsのかわりに***.phpとする感じで
フォームの要素を動的にしたいんですが上手くいきません

行数が少なければhtml内部に書いて事なきを得るんですが・・・
どなたかヒントだけでいいのでお願いします(TT
640nobodyさん:2006/04/20(木) 18:42:31 ID:???
動的にしたいデータだけ、非同期で取得させる。
それがAjax
641nobodyさん:2006/04/20(木) 20:32:04 ID:???
>>639
なんか勘違いしてるみたいだけど、javascriptはブラウザで、phpはサーバで動作するものですよ。
642nobodyさん:2006/04/20(木) 20:36:46 ID:???
>>641
勘違いはお前だ
>>639をよく嫁
643nobodyさん:2006/04/20(木) 21:47:18 ID:???
>>639
<script src="PHPファイル"></script>
じゃなく
<?php require_once("PHPファイル"); ?>
にして、
外部PHPファイルで
<script>
JavaScriptコード
</script>
という内容にするのはダメ?
644nobodyさん:2006/04/20(木) 22:16:17 ID:ryIl/Q77
文字コードがらみで質問します。
MAMPというソフトを使ってローカル開発環境をつくりました。
MAMP付属のphpmyadminでdbを覗くと、
ちゃんと日本語表示できているんですが、
自前のスクリプトで呼び出すと文字化けします。
MAMPはutf8がいいみたいなんですけど、
自分のコードはeucです。
でもphpmyadminできちんと表示できたということは、
設定次第では自分のスクリプトでもちゃんと表示できるんでしょうか?
phpmyadminはlangageがutfで接続照会順序はujisでテーブルを作りました。
645nobodyさん:2006/04/20(木) 22:17:30 ID:???
>>634
単にホスト名と?との間に/が抜けてただけじゃない?
646nobodyさん:2006/04/20(木) 22:23:22 ID:???
>>644
php.iniで
mbstring.http_output = UTF-8
647644:2006/04/20(木) 22:34:03 ID:ryIl/Q77
>646
レスありがとうございます。
なんかだめっぽいです。
現状でもphpmyadminは文字化けしないので、
そういう設定ファイルの類ではないもので解決しそうなのですが
わからないです。
どうして同じブラウザから同じデータベースを読み込んで
片方は文字化けするんですかね?
phpmyadminのソースをみたらcharsetがutf8だったので
phpのスクリプトが書いてあるファイルのcharsetを
同じくutfにしたけどだめでした。
648nobodyさん:2006/04/20(木) 22:42:01 ID:???
>>647
ひょっとしてデータベースのデータ以外にも何か日本語を表示させているのか?
それがソース上でEUCで書かれているならUTF-8にコード変換して出力させないとダメだ。
phpmyadminは出力内容を全部UTF-8にしてるから文字化けしない。
お前のは恐らくHTMLの中にUTF-8とEUCが混在してるんだろう。

ちなみに
> phpのスクリプトが書いてあるファイルのcharsetを
> 同じくutfにしたけどだめでした。
これは具体的にどうやったのかを説明しろ。ちゃんとheader()を使ったのか?

> そういう設定ファイルの類ではないもので解決しそうなのですが
設定ファイルで解決した方が簡単だろうと思ってそっちを提示しただけ。
header()で解決するならそれでもいいよ。
649nobodyさん:2006/04/20(木) 22:46:59 ID:???
>>644
SQL発行の一番最初に
set names ujis
650644:2006/04/20(木) 23:02:21 ID:ryIl/Q77
>648
親切な回答ありがとうございます。

データベースのデータ以外にもphpのスクリプトと一緒にかかれた
html文と日本語を表示しています。
そのphpファイルはエディタでeucのファイルにして、
meta contentのcharsetもeucにしました。

phpmyadminの正しく日本語表示されてるページは
ブラウザのソースを見るってやったらmetaのcontentのcharsetがutfだったので、
自分のスクリプトもdbを読み込んでくるページで同じようにutf-8と書いたのですが
これは全然変換とかしてないんですよね?

その他文字コードを指定しなきゃいけないようなところは
みんなeucにしています。
自分のスクリプトは簡単な登録フォームみたいのですが、
最後にinsert intoというクエリを発行するところで
mysql_query($sql = set names ujis);
とやると、phpmyadminで見たときに文字化けしないで登録されます。
ぎゃくにこれをutf-8とかにすると、phpmyadmindでも文字化けします。
651nobodyさん:2006/04/20(木) 23:12:09 ID:???
>>650
スクリプトのコードは別にEUCでも構わないが、
出力はせめて統一しろよ…
ややこしいというならスクリプトも全部UTF-8にしる!
652nobodyさん:2006/04/20(木) 23:17:51 ID:???
>>650
> 自分のスクリプトもdbを読み込んでくるページで同じようにutf-8と書いたのですが
> これは全然変換とかしてないんですよね?
charsetの指定は「このページの文字コードはこれ」とブラウザに教えるものであって変換ではない。
HTMLの中身がEUCなのにUTF-8とか嘘ついたら化けるの当たり前だろう。

どうしてもソースをEUCにした上でソース中にHTMLも一緒に書きたいというなら
selectして取得してきたデータをmb_convert_encoding()でEUCに変換して出せ。
逆にソースコード中のHTML表示を1度変数に格納しといてUTF-8に変換する手もあるが面倒。

でも1番簡単な方法は、ソース中に直にHTMLを書くのをやめて、
UTF-8で書いたHTMLをrequireで読み込んで出力する方法だと思う。
653644:2006/04/20(木) 23:19:54 ID:ryIl/Q77
>649
どうもです。いま試してみます。

>651
わかってなくてスミマセン。
スクリプトのコードというのはエディタで指定するもので、
出力というのはcharset=utfとかそういうのですよね?

654nobodyさん:2006/04/20(木) 23:25:46 ID:6nVXOU85
RFC1738エンコードを実現したいのですが、URL以外の文字例をエンコードするのに
rawurlencode()は使わないほうが良いのでしょうか?
655644:2006/04/20(木) 23:26:51 ID:ryIl/Q77
>652
詳しい説明でたすかります。
自分のコードは簡単にいうとこうやって書いてます。

<head>
<meta http-equiv="content-type" content="text/html; charset=euc-jp">
<head>
<html>
<?php
$hoge = aaa;
?>
<p><?= $hoge ?></p>
</html>

もしくは表示したいhtml全体を$bodyとかに .= で詰め込んでって
最後にprint $bodyとかです。

これを書くときにエディタで設定(?)をeucにしてます。
656nobodyさん:2006/04/20(木) 23:31:18 ID:???
>>655
> <p><?= mb_convert_encoding($hoge, "EUC-JP", "UTF-8") ?></p>
とかやれば直らないか?
657nobodyさん:2006/04/20(木) 23:32:13 ID:???
>>653
> スクリプトのコードというのはエディタで指定するもので、
それはその通り。

> 出力というのはcharset=utfとかそういうのですよね?
違う。
658nobodyさん:2006/04/20(木) 23:59:41 ID:???
内部コードはutf-8、外部にはてきとーなのにしとけ
内部コードeucでやるやつは時代遅れの要らない子
659654:2006/04/21(金) 00:09:26 ID:2Wlm0Z2o
あのー…、>>654について・・・お願いします。
660nobodyさん:2006/04/21(金) 00:10:04 ID:xjsHzaEw
Parse error: parse error, unexpected '@' in
このエラーって、どういう意味?
661名無し募集中。。。:2006/04/21(金) 00:16:31 ID:IwWXiYO9
>>660
@が入ってるあたりの記述が間違ってる
662nobodyさん:2006/04/21(金) 00:19:16 ID:xjsHzaEw
>>661
@は、どこにもいれてないんだけど…
663nobodyさん:2006/04/21(金) 00:20:19 ID:???
全角空白の場合にも'@'が出る場合があるでよ。
おいらは普段は全角空白なんて使わないから出した事がないけど。
664nobodyさん:2006/04/21(金) 00:20:42 ID:???
>>660
じゃあ、全角空白がどっかに入ってる
665nobodyさん:2006/04/21(金) 00:24:11 ID:xjsHzaEw
>>663>>664
ありがとう、直ったよ。
666nobodyさん:2006/04/21(金) 00:25:42 ID:???
>>659>>654
文字例って何?
667654:2006/04/21(金) 00:28:40 ID:2Wlm0Z2o
>>666
rawurlencode ("あいうえお")

でもこれってURLをエンコードする関数ですよね?
668nobodyさん:2006/04/21(金) 00:31:00 ID:???
>>667
そもそもURL以外をURIエンコードしたいと思った理由はなに?その理由によるのでは。
目的が分からんのにダメとか言えんよ。
669nobodyさん:2006/04/21(金) 00:33:03 ID:???
phpで全角数字を半角数字に変換するマルチバイト関数は無いでしょうか?

3→3
2→2

こんな感じの処理です。
670nobodyさん:2006/04/21(金) 00:34:12 ID:???
>>669
mb_convert_kana()
671654:2006/04/21(金) 00:38:17 ID:2Wlm0Z2o
>>668

フォームに入力された文字をPHPで簡単にエンコードしたいのです。
今までは専用のソフトウェアをインストールして行っていたのですが…
672nobodyさん:2006/04/21(金) 00:43:03 ID:???
>>671
だったら別にrawurlencodeでも構わないのでは。
673nobodyさん:2006/04/21(金) 01:10:44 ID:???
100ページぐらいのwebサイトがあるんですけど、
全部のページでsession_start();してるんですけど、
サーバの負荷たかいですか?
674nobodyさん:2006/04/21(金) 01:12:33 ID:???
>>673
普通
675nobodyさん:2006/04/21(金) 01:51:43 ID:MBv/PjUM
メールサーバからメールの受信を確認して読み込むような
スクリプトの書き方を教えて下さい。
676644:2006/04/21(金) 02:41:38 ID:j0KwlCv2
みなさんレスありがとうございます。
>649
すごいです。set names ujisをdbから読んでくるページに書いたら
とりあえず全部ちゃんと表示されました。

>657
「出力」がやっぱりいまいちわかりません。
php.iniで設定するやつですか?

>658
色々調べたのですが、utf-8はもう実質標準ぽいですね。
ところで気になっていたのですが、
内部コードというのはどこで指定するのですか?
外部はcharset=Shift-jisとかいうやつですか?
677nobodyさん:2006/04/21(金) 03:02:51 ID:???
>>644
お前はまずブラウザの挙動から勉強しる。
完全に間違った思い込みで考えている部分がある。
678nobodyさん:2006/04/21(金) 03:07:34 ID:???
>>676
出力は設定するものじゃない。作るもの。
679nobodyさん:2006/04/21(金) 03:13:55 ID:???
PHPでこういうことは可能でしょうか?

http://***.com/hoge1/test.gif
http://***.com/hoge2/test.gif

別ディレクトリにある”test.gif”を、PHPのフォームからアップロードして一括更するような。
実験用にローカルで複数ディレクトリを作成しているのですが、1つを更新すると残りは
古いままのファイルが残り、常に最新状態に出来ないので、不便に感じています。

参考文献やサイトがあったら教えて下さい。(ググり方がわかりませんでした…
680675:2006/04/21(金) 03:18:35 ID:MBv/PjUM
ヒントでもいいのでお願いします。
プログラムの流れでもいいのでよろしくお願いします。
681nobodyさん:2006/04/21(金) 03:19:26 ID:???
>>677
思い込みというか、設定・指定さえしとけば何でも自動的に切り替わってくれるもの、
と勘違いしてる節がある。
682nobodyさん:2006/04/21(金) 03:20:57 ID:???
>>679
その複数のtest.gifってのは全部同じ内容?
だったらPHPプログラムでいちいち何とかするより、
サーバー側で全部シンボリックリンクしてやるのが早い
683679:2006/04/21(金) 03:28:34 ID:???
>>682
そうです。全く同じファイルです。ただ、内容が変わっていると言うだけで。
(タイトル画像を変更とか)

ジンボリックリンクですね。調べてみます。ありがとうございました。
684nobodyさん:2006/04/21(金) 03:29:10 ID:???
>>680
POP3サーバーに接続
USER、PASSを順に送信
LISTを送信して一覧取得
受信メールがあればRETRを送信して読み込み
QUITを送信して接続終了
685nobodyさん:2006/04/21(金) 03:41:54 ID:???
686nobodyさん:2006/04/21(金) 04:24:33 ID:???
>>681
>>644はエンコードについては思いっきり浅い知識しかないみたいだ。

っていうか、まず「バイナリとは何か・テキストとは何か」って辺りから
説明しないと根本的に理解してくれないんじゃない?
687644:2006/04/21(金) 11:31:57 ID:5+Hakngk
みなさん詳しいレスをつけてくれて本当にありがとうございます。
博識すぎて情けないです。
特に「出力は作るもの」という概念は目から鱗です。調べてみます。

いままでhtmlだけで何かを表示させていたときは、
とりあえず、meta content charset=を指定すれば文字化けしませんでした。
これを記述しなくても、IEなんかはかってにsjisにしていたようですし、
他のブラウザも文字判別(自動)みたいな設定があって、
特に意識する必要がなかったと思います。

phpを書くようになってから、ファイル自体にエディタで文字コードを
指定することがあると知って、何の為にやるのか??だったのですが
meta content charset=で指定したものと同じにしていました。
エディタによっては、これをバラバラにするとアラートが出ました。

問題はmysqlを絡めてからで、my.cnfやphp.ini、それから
phpmyadminなど、至るところに文字コードを指定してくれと言われて
正直目的が分からず閉口しています。

いろんなページをぐぐったのですが、
よく言及されているのはやはり「内部コード」「出力」です。
なにか体系的にまとめられているページなど
参考になりそうなものがあったら教えて頂きたいです。
まずはセオリー的に簡単に言っちゃえばここはこうするのがベターみたいな
ものがあるらな、併せて教えて頂けると助かります。
よろしくお願いします。


688nobodyさん:2006/04/21(金) 11:32:38 ID:5+Hakngk
×博識
○薄識
すいません
689nobodyさん:2006/04/21(金) 11:47:17 ID:???
まあ644は姿勢は謙虚だし、努力する気持ちもあるみたいだから
頑張れば伸びるよ。少し体系的に学ぶといいよ。
690nobodyさん:2006/04/21(金) 12:07:42 ID:???
>>689
>>687の最後の段落を読んでもそう言えるのかな?
691nobodyさん:2006/04/21(金) 12:09:11 ID:???
>>687
あのさ、キミ深く勘違いしてるから念のため繰り返し言うけどさ、
このエンコードの件は、別にPHPとかMySQLとか関係ないからね。
HTMLだけだってソースのエンコードと出力指定(charset)は合わせなきゃいけないし。

キミはメールソフトはアウトルック・エクスプレスか?
だったら、受信したメールを「表示」→「エンコード」で手動で別のエンコードにしてみてごらんよ。
あるいは、Yahooのページのソース(EUCで書かれてる)をWin付属のメモ帳(SJIS専用)で開いてごらんよ。
そしたらうっすら何か分かってくるだろう。

簡単な「まとめページ」みたいなので一発で楽して覚えようとしないで、コツコツ勉強したまえ。
692691:2006/04/21(金) 12:11:43 ID:???
>>691だけど、●補足説明●
>別にPHPとかMySQLとか関係ない
「関係ない」って書くとまた別の誤解をしそうなので、
「PHPとかMySQLとかのせいじゃない」に変更しようかな。
693nobodyさん:2006/04/21(金) 12:27:22 ID:???
PHPの質問とはあまり関係ないけれど、聞くとこが見つからなかったので、
ここの人ならわかると思うのでちょっと付き合ってください。
BlogとかでRSSがついてるのありますよね?
あれってBlogの記事ををRSSに格納して、RSSからBlogの文章を出力しているのですか?
それともBlogの記事をhtml(php,cgi etc)とRSSに同時に出力しているのでしょうか?
RSS(Atom)系のスレあったら教えてください。
694693:2006/04/21(金) 12:31:12 ID:???
ややこしくてすみません。
簡潔に言うと、RSSはリーダーでも読めるようにオマケでついているのか、
システム全体に影響与えるような重役を担っているのかのどちらだろう?
ということです。
695644:2006/04/21(金) 12:41:13 ID:5+Hakngk
>689
恐縮です。がんばります。

>691
具体的な指示、参考になります。ありがとうございます。
ダウンロードしたヤフーのソースファイルをいじってみたのですが、
確かにエディタの機能として指定できる文字コードとhead部分に書く
charsetをバラバラにすると化けます。
コードを記述したときの指定と、表示するときの指定(headのcharset)は
合わせないとまずいという事ですね。
この感じでいくと、dbに登録される(された)ときの文字コード(mysqlの中の文字コード?)と僕が書いた、dbの内容を引っ張ってきて表示したい
ページのcharsetが違う事がいけない気がしますが
この考え方はあっていますでしょうか?

あと、687さんは出力指定(charset)とかかれていますが、
657の人は出力はcharsetではないと書いていて、謎です。
696nobodyさん:2006/04/21(金) 12:41:28 ID:???
>>694
まずRSSが果たす役割を勉強した方がいいよ。
で、なぜブログにRSSが付いているのかを考える。
そこまでは完全にスレ違いなので、それ以降に考えが及んだときにまたお越し下さい。
697644:2006/04/21(金) 13:51:20 ID:5+Hakngk
あーやばいです。なんとなく分かっちゃいました。
レンタルサーバのmysql(sjisで入ってる)をエクスポート
したのを自分のローカル環境(utf)にインポートする作業をやったんですけど、
どこをどうするとどうなるみたいのが見えてきました。

エクスポートでダウンロードしたファイルをエディタで開いたら
当然のようにsjisだったのでutfにして保存し直して
mysqlにutfでインポートしました。phpmyadminの表示も正常。
それを文字セットutfでcharsetもutfの状態で表示させました。
このままでは化けるんですが、これは環境依存ぽいのです。
最後はやはりset names utf8のクエリを打ちました。

どうもこのset namesは最強っぽい気がします。
取り急ぎ報告します。いままでアドバイス下さったかた、
最後までつきあって下さった691さん、ほんとうにありがとう。
698nobodyさん:2006/04/21(金) 13:52:41 ID:???
>>695
だからブラウザの挙動を調べ(ry
699nobodyさん:2006/04/21(金) 14:01:13 ID:???
まあそれだけじゃ何の解決にもなってないんだが、1つずつ学ぶしかないな。

設定できる・しなきゃならないのは、

・Mysql上で設定する、格納データの文字コード。
・PHPスクリプトを編集するエディター上で設定する、PHPスクリプトの文字コード
・PHPエンジンに教えてあげる、スクリプト本体の文字コード(PHP.iniでもスクリプト内でも指定可)
・PHPスクリプト内で指定する、Mysqlにアクセスする際の文字コード
・PHPスクリプト内で指定する、HTTP出力の際の文字コード
・ブラウザー・Webサーバーに教えてあげる、HTTPヘッダーで指定するHTMLの文字コード
・ブラウザーに教えるために出力するHTML内で指定する、HTMLの文字コード

少なくともこれらの区別・統一をきちんと図ってそれぞれ指定しなきゃダメだよ。
わかんなきゃ全部UTF-8に統一しとけ。
700644:2006/04/21(金) 14:28:23 ID:5+Hakngk
>699
素晴らしいです。感謝します。

・Mysql上で設定する、格納データの文字コード。
これはmy.iniで設定するものでしょうか?
[mysqld] default_character_set=utf8 とか。
これに従ってmysqlに登録されたデータの文字コードが決まるんですよね?

・PHPスクリプトを編集するエディター上で設定する、PHPスクリプトの文字コード
これは分かります。スクリプト自体の文字コードですね。

・PHPエンジンに教えてあげる、スクリプト本体の文字コード(PHP.iniでもスクリプト内でも指定可)
これは、,mb_convert_stringsの類ですかね。php.iniにもmb_string系の指定が結構ありますよね。

・PHPスクリプト内で指定する、Mysqlにアクセスする際の文字コード
これは、select文を打つときというか、コネクトするときに指定?

・PHPスクリプト内で指定する、HTTP出力の際の文字コード
これはechoとかするときにphpエンジンが何の文字コードを吐くかってことかな?
このへんはかなり分からないです。

・ブラウザー・Webサーバーに教えてあげる、HTTPヘッダーで指定するHTMLの文字コード
・ブラウザーに教えるために出力するHTML内で指定する、HTMLの文字コード
これは別物なんですか?特に後者はhtml文を書いているだけでも関係してきそうですが、意識したことがありません。

自分の理解はまだまだこの程度です。情けないです。
推測の範囲で申し訳ないのですが、結構省略しちゃうことがあると
思うんですけど、特別に指定しなかった場合は最終的にどこに依存するの
でしょうか?


701nobodyさん:2006/04/21(金) 14:35:41 ID:???
だんだんとウザク感じてきたのは私だけでしょうか…
702nobodyさん:2006/04/21(金) 14:37:49 ID:???
ここはphp通信教育スレですか?
703644:2006/04/21(金) 14:52:20 ID:5+Hakngk
>701 702
すいません。自分ばっかりかいて申し訳ないっす。
なんか極論的にはset names = utf8があればOKだしなければだめ的な
雰囲気になってきました。
MAMPだからかな。
704639:2006/04/21(金) 16:02:39 ID:???
>>641-643
ををを・・・単純だけどこれで切り分け出来ますね、まったく思いつきませんでした(泣
これで逃げたいと思いますありがとうございました

ajaxも考えたんですが、この箇所だけにxml吐き出してブラウザ毎に接続アレコレしてっとなると・・・
ちょっと微妙な感じだったのでウダウダしてました。
いやその前に使ったことすら無いのですが
705nobodyさん:2006/04/21(金) 16:02:47 ID:???
>>675
imap_open じゃ駄目なん?
706nobodyさん:2006/04/21(金) 16:18:44 ID:???
>>704
別にXMLで吐き出さなくてもいいじゃんw
707675:2006/04/21(金) 16:54:47 ID:MBv/PjUM
>684
今少しずつ作っているのですが
POP3サーバに接続して、特定のメールアカウントの分だけ取得したい場合は
LISTにアカウントを書いておけば良いでしょうか?
708nobodyさん:2006/04/21(金) 17:07:05 ID:???
USER,PASSってアカウントの指定じゃないのか???
709675:2006/04/21(金) 17:27:25 ID:MBv/PjUM
>708
あ・・・
710nobodyさん:2006/04/21(金) 17:43:51 ID:???
>>709
とりあえずこの辺でも読むとか。
http://www.atmarkit.co.jp/fnetwork/rensai/netpro07/netpro01.html
711nobodyさん:2006/04/21(金) 17:57:10 ID:KwFOTHkh
PHPでユニコード文字を取得するにはどうやればいいんですか?

あ=> E3041

という結果が欲しいのですが
712nobodyさん:2006/04/21(金) 19:10:47 ID:???
>>711
文字列を取得したいのか数値を取得したいのか知らないけど、bin2hex、ord、sprintfから好きなのえらんで。
713nobodyさん:2006/04/21(金) 21:15:25 ID:???
yamada,521
aoki,32
takahashi,6013

…というような形式のファイルdata.txtがあり、
それをそれぞれの数値の部分でソートしたいのですが、どのような方法がありますでしょうか?

$lines = file('data.txt');
と配列にしましたが、その先が分かりません。
よろしくお願いします。
714nobodyさん:2006/04/21(金) 21:20:33 ID:q11WDkz8
メールサーバにある添付ファイルを取得するにはどうすればよいのでしょうか
715nobodyさん:2006/04/21(金) 21:25:04 ID:???
>>714
メール本文を読み込んでマルチパートを分解してデコードしてファイルに保存
716nobodyさん:2006/04/21(金) 21:28:56 ID:???
>>713
explode+array_multisort
717nobodyさん:2006/04/21(金) 21:30:20 ID:???
>>713

カレーを作りたいんです。
お鍋に水を入れましたが、その先が判りません。

と言っている様な物だ。
もう少し自分で頑張れ。

ヒント:つ「配列廻してさらに配列生成」
718nobodyさん:2006/04/21(金) 21:41:52 ID:???
>>716
>>717
ありがとうございます。
試行錯誤してみます。
719nobodyさん:2006/04/21(金) 21:46:46 ID:???
>>716
array_multisortは配列の1次元目でしか(配列の関係を崩さず)ソートできない。
この場合には、usort関数を使う必要があるだろう。
720nobodyさん:2006/04/21(金) 21:57:38 ID:???
>>714
無理。そんなのできたら携帯用あぷろだとか出来てる。
721nobodyさん:2006/04/21(金) 21:58:05 ID:???
>>719
…なんか釣られてる気がしないでもないが

foreach($lines as $line) {
list(, $key[]) = explode(",", $line);
}
array_multisort($key, $lines);
print_r($lines);

結果
Array
(
[0] => aoki,32
[1] => yamada,521
[2] => takahashi,6013
)
これでいいんだろ?あほですか?
722nobodyさん:2006/04/21(金) 22:05:06 ID:???
720 名前:nobodyさん[sage] 投稿日:2006/04/21(金) 21:57:38 ID:???
>>714
無理。そんなのできたら携帯用あぷろだとか出来てる。
723nobodyさん:2006/04/21(金) 22:16:31 ID:???
722:nobodyさん :2006/04/21(金) 22:05:06 ID:??? [sage]
720 名前:nobodyさん[sage] 投稿日:2006/04/21(金) 21:57:38 ID:???
>>714
無理。そんなのできたら携帯用あぷろだとか出来てる。
724nobodyさん:2006/04/21(金) 22:18:05 ID:???
723:nobodyさん :2006/04/21(金) 22:16:31 ID:??? [sage]
722:nobodyさん :2006/04/21(金) 22:05:06 ID:??? [sage]
720 名前:nobodyさん[sage] 投稿日:2006/04/21(金) 21:57:38 ID:???
>>714
無理。そんなのできたら携帯用あぷろだとか出来てる。
725nobodyさん:2006/04/21(金) 22:40:39 ID:???
次は>>719によるスマートなusort関数HowToの実演です
726nobodyさん:2006/04/21(金) 22:57:53 ID:q11WDkz8
>>720
あの・・・ありますけど・・・
727nobodyさん:2006/04/21(金) 23:03:54 ID:???
携帯でphp開発をするという試みで
試験的にセキュリティ無視でfwrite()とフォームを使ってスクリプトを書いたら***.phpで保存するといったプログラムを組んだのですが、
Warning: Unknown(): SAFE MODE Restriction in effect. The script whose gid is 1000 is not allowed to access
というエラーを吐いてくるのですが
どう対処したらよいでしょうか
728727:2006/04/21(金) 23:04:45 ID:???
>>727は完成してうpしたスクリプトにアクセスしたときに出るエラーです
729727:2006/04/21(金) 23:07:44 ID:???
検索したらどうやら所有者が apache となってアクセスできないみたいですね
対処は無理なのか・・・・
730nobodyさん:2006/04/21(金) 23:07:45 ID:xjsHzaEw
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /xxx/xxx/xxx on line 221
これって、どういうエラー?
ちなみに221行目は、$tag .= "<form action=\"$_SERVER['PHP_SELF']\" method=\"post\">";
なんだけど・・・
731nobodyさん:2006/04/21(金) 23:08:36 ID:???
せめてIDくらい変わるまで待つなり隠すなりしろよ
どっちにしろ無駄だけど
732nobodyさん:2006/04/21(金) 23:14:51 ID:???
>>729
セキュリティ的にやばすぎるから無理だろ
URL拾われただけでその鯖あぼーんやで
733nobodyさん:2006/04/22(土) 00:31:56 ID:???
XSS対策についてなんですが
具体的にはユーザー情報を格納したcookiesを発行なんかしちゃうと
ほかのサイトでも読み出しできてしまう
ということなんでしょうか?

でもそしたらどうやってログインして、複数のページを渡り歩けるようにすればいいんでしょうか・・・・
734nobodyさん:2006/04/22(土) 00:49:23 ID:???
>>733
まず、最近話題のCSSXSSとCSSは全くの別物なので勘違いしないように。

XSSはphpでの出力時に、危険性のある全ての変数(ユーザ入力の値など)を全てhtmlspecialcharsでエスケープすれば防げる。
以上。


735733:2006/04/22(土) 00:57:45 ID:???
>>734
ありがとうございます

クロスサイトスクリプティングに関しての質問でした
CSSとかくと混同するのでXSSと書くとか書かないとかまでググって来ました

タグを入れられるようにして拡張性をと考えていましたが、
便利の裏には様々な問題があるんですね・・・
736nobodyさん:2006/04/22(土) 01:36:52 ID:???
( ゚ Д゚)・・
737nobodyさん:2006/04/22(土) 08:27:24 ID:???
>>720
レッツPHPの写メールBBSが大昔からやってるよ
738nobodyさん:2006/04/22(土) 16:13:48 ID:8MNYgK3y
$a = 5 / 3; //計算式
があったとして、答えの二文字目までを表示させる事は可能でしょうか?
その場合どうすればよろしいでしょうか?

5/3の答えは1.666666・・・と続いていくので
2文字目、つまり 1.6まで表示させたいのです。
739nobodyさん:2006/04/22(土) 16:15:50 ID:???
>>738
substr()
740nobodyさん:2006/04/22(土) 16:41:10 ID:???
>>739
ありがとうございます。
741nobodyさん:2006/04/22(土) 17:19:10 ID:he2KK3wF
HTMLのEMBEDタグでtest.phpを読み出した場合に、
test.phpにPOSTでデータを渡せますか?
(すれ違いでしたらすみません。。)
742nobodyさん:2006/04/22(土) 17:20:36 ID:kQFmUDLJ
生年月日を分解して配列に代入したいです。例えば
$birth=2006年4月22日

というデータが入っているとします。これを
$birth1=2006
$birth2=4
$birth3=22

という風に分解して各変数に入れるにはどうしたらいいのでしょうか?
743nobodyさん:2006/04/22(土) 17:26:19 ID:3kTedSI2
rawurlencode ($_POST["data"])

これでエンコードしてみるものの、「"」「'」「\」といった記号をエンコードすると
それぞれ「%5c%22」(\")「%5c%27」(\')「%5c%5C」(\\)となってしまいます。

つまりエスケープされている訳ですが、こういった記号をエスケープさせないように
するにはどうしたら良いでしょうか?バックスラッシュ(\)までエンコードされて困っております。

宜しくお願いします。
744nobodyさん:2006/04/22(土) 18:07:05 ID:???
>>742

$birth = "2006年4月22日";
$birth1 = mb_substr( $birth, 0, 4 );
$birth2 = mb_substr( $birth, 6, 1 );
$birth3 = mb_substr( $birth, 8, 2 );
// これで目的は達成できるが、月が2桁だったりするとだめぽ

$birth = "2006年4月22日";
list( $birth1, $birth2 ) = explode( '年', $birth );
list( $birth2, $birth3 ) = explode( '月', $birth2 );
list( $birth3, $birth4 ) = explode( '日', $birth3 );
// これだ!
745742:2006/04/22(土) 18:24:54 ID:???
>>744
出来ました!こういう使い方があるんですね・・。
よくわかっていないので、関数を調べながら理解出来るようにします。
ありがとうございました。
746743:2006/04/22(土) 18:27:38 ID:3kTedSI2
自己解決、stripslashes()という関数があった('A')


>>741
POSTデータを渡そうと思えば出来るけど面倒だと思われ。
クエリでいいじゃん。。
747nobodyさん:2006/04/22(土) 18:32:48 ID:???
http://jp.php.net/images/php.gif
この画像って勝手に使っていいの?
748nobodyさん:2006/04/22(土) 18:35:16 ID:???
>>742
今更だけど
$birth = '2006年4月22日';
preg_match('/^(\d+)年(\d+)月(\d+)日$/',$birth,$matches);
list($birth1,$birth2,$birth3) = array($matches[1],$matches[2],$matches[3]);
ってのもあり
749nobodyさん:2006/04/22(土) 18:56:05 ID:???
>>747
うん
750741:2006/04/22(土) 19:05:13 ID:he2KK3wF
>>746
> POSTデータを渡そうと思えば出来るけど面倒だと思われ。
POSTで渡す方法を教えていただけないでしょうか?

#GETも考えたのですが、渡すデータが大きく無理でした。。

> クエリでいいじゃん。。
すみません、この場合のクエリがわかりません。。。
(データベースのクエリ?じゃないですよね。。)
751nobodyさん:2006/04/22(土) 19:13:13 ID:UThkpkc+
<form>
752nobodyさん:2006/04/22(土) 19:40:49 ID:1mp5s2wD
rawurlencode()、rawurldecode()において「あいうえお」をエンコードしたのですが、

Shift_JIS → %82%a0%82%a2%82%a4%82%a6%82%a8
EUC-JP → %a4%a2%a4%a4%a4%a6%a4%a8%a4%aa
UTF-8 → %e3%81%82%e3%81%84%e3%81%86%e3%81%88%e3%81%8a

これらのように、文字コードによって違いますよね?
この文字コードを指定してエンコーディングする方法は無いでしょうか?
753nobodyさん:2006/04/22(土) 19:45:40 ID:???
特定のアカウント以外からのメールは拒否したいと思います。
送信者のメールアドレスは$fromの中に格納されます。
$write = false;で書き込みが中断されます。

//このアカウントからのみ受信
$carrier = array('docomo.ne.jp','ezweb.ne.jp','pdx.ne.jp');

//キャリア限定処理 追記部分
if(!in_array('$from',$carrier){
$write = false;
}

これだと駄目ぽみたいです。ご意見ください。
754nobodyさん:2006/04/22(土) 20:05:35 ID:???
だめじゃない
755nobodyさん:2006/04/22(土) 20:42:50 ID:???
>>752
何がやりたくて何ができないの?
特に問題ないようだけど。

>>753
$host = substr(strstr($from, '@'), 1);
if(!in_array($host, $carrier){
・・・ってこと?
756nobodyさん:2006/04/22(土) 20:43:17 ID:???
>>753
@より前も含んでるんでしょ?
757753:2006/04/22(土) 20:55:44 ID:???
画面が真っ白になっちゃうんです。
記載ミスによるものかと何度も見ましたが違うようです。

あきらめて寝ます。おやすみなさい。
758753:2006/04/22(土) 21:37:57 ID:???
やっぱり思いっきり記載ミスでした。
一人でバカ騒ぎしてもうしわけないです。
759752:2006/04/22(土) 22:02:27 ID:1mp5s2wD
>>755
じゃあ例えば、変数$strに $_POST["data"]の値を代入。
エンドユーザはそれぞれ「Shift_JIS」、「EUC-JP」、「UTF-8」といった文字コードを選択し、エンコードすることが出来ます。

出力結果はこれらの文字コードによって違います↓
Shift_JIS → %82%a0%82%a2%82%a4%82%a6%82%a8
EUC-JP → %a4%a2%a4%a4%a4%a6%a4%a8%a4%aa
UTF-8 → %e3%81%82%e3%81%84%e3%81%86%e3%81%88%e3%81%8a

mb_convert_encoding()で$_POST["data"]をエンコードするのかなー…?orz
何か良い方法を知っていたら教えてください。
760752:2006/04/22(土) 22:08:05 ID:1mp5s2wD
良い例が見つかりました。

これです http://www.tagindex.com/tool/url.html
このように文字コードを選択リストから選択できるようになっているのですが、一体どのような仕組みなんでしょうか?
761nobodyさん:2006/04/22(土) 23:16:50 ID:???
>>760

1.ます普通にPOSTやらなんやらで入力されてデータを受け取る(このときに文字コードは何でエンコードするかも!)
2.で受け取った値をエンコードする
3.エンコードしたデータを表示する

こうじゃない?
762752:2006/04/22(土) 23:40:44 ID:1mp5s2wD
>>761
…うーん、(1)で文字コードを変換するための関数は一応調べはみたんだけど
mb_convert_encoding()でいいのかなぁ?
でもなんかちょっと違う気ガス。
763nobodyさん:2006/04/23(日) 00:43:41 ID:???
>>762
死ね
764761:2006/04/23(日) 02:17:22 ID:???
>>762
何で違うと思ったんだ?理由があるのか?
そもそもお前自分で俺の出した提案でコーディングしてみたのか?
答えだけ教えてもらおうと思うな馬鹿

ちなみにmb_convert_encoding()でOKだクソ野郎
デフォルトでは使えないようになってるけどな
そこまで教えられんよググレカレー
765752:2006/04/23(日) 07:13:43 ID:B54Vaitl
すみません、実はこの質問をする前にmb_convert_encoding()でコーディングしてみたのですが、

(rawurlencode(mb_convert_encoding($_POST["data"], "Shift_JIS"))
とやっても「あいうえお」が「%3F%3F%3F%81%91%3F%3F%3F%3F%3F%81N」のようになってしまいます(「???¢?????¨」に文字化けする)

mb_convert_encoding()の使い方が間違ってるんだろうか
766nobodyさん:2006/04/23(日) 07:35:05 ID:???
>>765
>「あいうえお」が「%3F%3F%3F%81%91%3F%3F%3F%3F%3F%81N」のようになってしまいます(「???¢?????¨」に文字化けする)

よく分からん。どっちになってるんだ?
767nobodyさん:2006/04/23(日) 07:44:52 ID:???
>>765
まるごと書いてやるから、よく読めよ。
(サンプルなのでセキュリティは全く意識していないので注意)
<?php
header('Content-type: text/html; charset=Shift_JIS');
$encList = array('sjis', 'euc-jp', 'utf-8');
if ($_POST) {
 $data = @$_POST['data']; // sjisで書いてあると想定
 $enc = (int) @$_POST['enc'];
 if (!isset($encList[$enc])) throw "(・∀・)";
 echo rawurlencode(mb_convert_encoding($data, $encList[$enc], 'sjis'));
 die();
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
<textarea name="data"></textarea>
<select name="enc">
<?php foreach ($encList as $enc => $encName) { ?>
<option value="<?php echo $enc ?>"><?php echo $encName ?>
<?php } ?>
</select>
</form>
768767:2006/04/23(日) 07:50:14 ID:???
submitわすれてた
<input type="submit" />
769nobodyさん:2006/04/23(日) 07:51:00 ID:???
お前の優しさに乾杯
770nobodyさん:2006/04/23(日) 07:51:46 ID:???
ただ・・・ただ俺なら変数名には大文字は使わないぜ(・∀・)
771767:2006/04/23(日) 07:54:35 ID:???
>>770
スマソ。不慣れだったので間違えた。
$enc_listとか$enc_nameって名前にするほうがpear標準だったっけ
772nobodyさん:2006/04/23(日) 07:58:24 ID:???
いや、変数名には基本的に大文字は使わないものじゃないか?
知らない奴も居るだろうからまとめてみよう。勘違いがあったら教えてちょうだい

変数名:全て小文字。単語の区切りは「_」 例[ hoge_hoge ]
定数名:全て大文字 例[ HOGE ]
関数名:基本的に小文字だが、単語の区切りは大文字 例[ hogeHoge ]
773nobodyさん:2006/04/23(日) 08:21:12 ID:???
Javaのコーディング規約では変数名も関数名(というかメソッド名)と同じで単語の区切りは大文字だから、その癖でそのままやってしまった。
pearのコーディング標準では変数名の単語の区切り方に関しては触れてないっぽいね。それ以外は>>772の通りだけど。
pearの他にもphpのコーディング規約みたいなのあったっけ?
774nobodyさん:2006/04/23(日) 08:38:39 ID:???
932:仕様書無しさん :2006/04/22(土) 23:07:48 [sage]
クライスラージャパン中古車検索結果
http://www.chrysler.co.jp/servlet/chrysler.UCarSearchServlet?SV_ACTION=PAGE_CHANGE&PAGENO=1&SQL=WHERE@CLASSID@in@(@'PT'@)@AND@DELFLAG@=@'0'@&ORDER=3


WHERE CLASSID in ('PT') AND DELFLAG = '0'& ORDER = 3
(^ω^;)・・・
775nobodyさん:2006/04/23(日) 08:55:52 ID:???
コーディング規約って言うか、プログラマとしてのデファクトスタンダードじゃね?>>772
776nobodyさん:2006/04/23(日) 09:25:42 ID:???
>>775
そうなの?ソースキボンヌ。
ちなみに「プログラマとしての」と名打つならJavaの反例出すけど、この変数名の規約はどうとらえられてるの?デファクトスタンダード的には。
http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html#367

CとかRubyとか関数名/メソッド名はアンダースコアで区切ることのほうが多いようだけど。
C++みたいにSTLの命名に従うかJava風にするかどっちつかずなのもあるし。
PHPの場合は標準関数の命名が割と無茶苦茶な前提の上だからどうしても規約みたいなのは必要でしょ。
一応公式に公開されてるのがpear標準くらいしかないから、それに従っておくのが妥当ってのはよく聞くけど。
777nobodyさん:2006/04/23(日) 10:14:08 ID:???
>>774
ヤバいって それ…
778nobodyさん:2006/04/23(日) 12:10:28 ID:???
>>774
ちゃんとSELECTしかできない権限とかにしてあるのかなぁ
これかなりヤバイ香りが漂ってるが。

おい>>774、七氏だろ お前SQLインジェクションやってみて報告しる!
779nobodyさん:2006/04/23(日) 14:06:26 ID:???
隠しテーブルとか出てきそうw
780752:2006/04/23(日) 14:56:53 ID:B54Vaitl
>>767
とってもありがとう。
書き方とか参考にします。
781nobodyさん:2006/04/23(日) 15:05:20 ID:???
最近PHPに取り組み始めた超初心者です。理解できない演算子があるので教えてください
“->”なんですけど
これって
$A=1+2
$B=$A
この場合
$B=$A->1+2
こんな感じ?
782nobodyさん:2006/04/23(日) 15:10:14 ID:???
>>781
-> はクラスを使った時に、クラスの変数や関数を使うためのもの。
クラスって何?って場合は、マニュアルを参照のこと。
783nobodyさん:2006/04/23(日) 15:39:22 ID:???
>>782
ありがとうございます。
->なんですけど、これはPHP5〜から使えるのでしょうか?
それともPHP4の最新バージョンでも標準で使えるのでしょうか?
784nobodyさん:2006/04/23(日) 16:22:55 ID:???
4でも使える
$this->testとかね
785nobodyさん:2006/04/23(日) 16:36:04 ID:???
>>784
ありがとうございました。

精進します。
786nobodyさん:2006/04/23(日) 17:30:05 ID:???
赤マンモスで勉強してんだけど、宴会サーバーの所が読みにくいので、
さっさと読むだけにして、青マンモスに進んでも良いでしょうか?
787nobodyさん:2006/04/23(日) 17:44:42 ID:???
こういうのって出来るのでしょうか?
特定のディレクトリ/hogeから画像(.jpg)の名称を取得して、指定サイズで
一覧表示するという。

登録しているファイル名を出力するのはわかるのですが、画像のファイル名自体を
取得して〜というのは可能なのか?っと疑問に思いまして。(単に出来ないのですが・・・
788nobodyさん:2006/04/23(日) 17:46:37 ID:???
glob('*.jpg')
789nobodyさん:2006/04/23(日) 18:12:30 ID:???
文字コード、日本に限っていえば
Shift_JIS(sjis-win)
EUC-JP(eucjp-win)
iso-2022-jp(jis…だけど厳格にはすこしちがう)
utf-8
について、徹底的に学びましょう
790787:2006/04/23(日) 18:18:13 ID:???
>>788
凄い!!出来ました!!所持リファレンスにも載っていない関数でしたが、
以下のようなソースで思い通りに出来ました。

<?php
$img_list=glob('./photo/*.jpg');
$count=count($img_list);
for($i=0;$i<$count;$i++){
print"<img src=\"$img_list[$i]\" width=100 height=80>";
}
?>

ありがとうございました。
791nobodyさん:2006/04/23(日) 18:29:39 ID:???
>>790
その場合ならforeach使っとけ
792nobodyさん:2006/04/23(日) 18:36:08 ID:???
foreach最強
793nobodyさん:2006/04/23(日) 18:37:13 ID:T/zlG2dE
794nobodyさん:2006/04/23(日) 18:46:06 ID:m0Rs4MP5
strlen(file_get_contents('URI'));
795nobodyさん:2006/04/23(日) 18:50:57 ID:???
ありがとうございますできました
796nobodyさん:2006/04/23(日) 19:30:53 ID:???
phpでお金持ちになりたいんですけどどうすればいいですか
797nobodyさん:2006/04/23(日) 19:33:58 ID:???
>>794
URIって何の略??
798nobodyさん:2006/04/23(日) 19:35:00 ID:???
>>796
ヒント:for
799nobodyさん:2006/04/23(日) 19:45:34 ID:???
800nobodyさん:2006/04/23(日) 20:01:24 ID:???
レッツPHPにあったあぷろだを
以下のアドレスに示した自鯖においたのですが
http://no2.no-ip.info/up/upload.php
Undefined variable: 変数名
などがでまくってしまいます
http://no2.no-ip.info/up/1.txt
設置したあぷろだのソース
http://no2.no-ip.info/phpinfo.php
鯖のPHPの情報

エラーで検索したら
http://wonder.bms.ms/tower/bin/sugoiuploader/upload.php
気にせず使っている方もいるようです
翻訳したら未定義の変数だそうですが
$act=="envset"これはダメってことですか?
どうすれば動くようになるでしょうか
801nobodyさん:2006/04/23(日) 20:06:08 ID:???
$actって変数がどこにも定義されてもないし、スーパグローバル変数でもないから
そんな変数ありませんよって言われてるだけじゃないの?
ってか、値が無いのに何で比較してるんだろ?
802nobodyさん:2006/04/23(日) 20:14:46 ID:???
$act = "envset";
803nobodyさん:2006/04/23(日) 20:25:14 ID:???
>>800
レッツPHPは過去の遺物だ。
今は参考にするべきではない
804nobodyさん:2006/04/23(日) 20:25:22 ID:???
レッツのスクリプトは$_GET['hoge']を使わずにextract($_GET)して$hogeとして使う方向だから
該当個所は多そう。
805nobodyさん:2006/04/23(日) 20:38:32 ID:???
perlのガン細胞 KENT
PHPのガン細胞 レッツ
806nobodyさん:2006/04/23(日) 20:55:44 ID:???
extractの使い方がいまいち分からない俺は負け組み
807nobodyさん:2006/04/23(日) 21:48:10 ID:???
>>772
変数名は間違い。
区切りに_は使わない。

例: anApple

定数名の区切りは「_」

詳しくはPearコーディングルール見ろ

あと関数名の最初は大文字
808807:2006/04/23(日) 21:50:22 ID:???
http://peardoc.xole.net/standards.naming.html
変数名はコーディングルールになかったみたいだ
すまそ
809nobodyさん:2006/04/23(日) 22:43:05 ID:WZpCLvOA
new DOMDocument("1.0","EUC_JP");
したオブジェクトに要素をappendし、
saveXML
しても、何も取得できません。
DOMDocumentでは
euc-jpを使えないのでしょうか?
810nobodyさん:2006/04/23(日) 23:54:16 ID:???
メールを受信したら、
受信メールの取得と、こちらで用意したメッセージをそのアドレス宛に送信
これを自動化するのを実現したいのですが
ROMっていたら、同じような例が載っていたので読んでいましたが
その際にサーバの負荷は高くなってしまうのでしょうか?
CRONで一定時間で起動させる方法も良いかとは思いますが
スクリプトだけで実行するのは出来ないものでしょうか?

また、受信したメールアドレスをエンコードして
送信メールの本文にURLとして、hoge.com/test%40fuga.jpのように載せてみたいのですが
mb_encode_mimeheader()を使って良いしょうか。
良い方法をご存知の方、ご教授お願いします
811nobodyさん:2006/04/24(月) 00:10:51 ID:???
>>810
環境によって方法はさまざまなわけで、
自分の環境さらさなきゃ明快な回答は得られまい。

mb_encode_mimeheader()はmimeheaderをencodeするのだ。判るかな?
812810:2006/04/24(月) 00:12:18 ID:???
>>811
もうちょっとわかりやすく説明してください。
813nobodyさん:2006/04/24(月) 00:15:40 ID:???
>812
勝手に人を名乗って書き込みするな
814nobodyさん:2006/04/24(月) 00:18:23 ID:MxIb/Ds6
使い始めて二日目厨です(;´д`)
MySQL + PHP つかってます。
商品マスタと商品データの2つのテーブルがあって、双方にレコードを追加します。
$sql1='insert into 商品マスタ......';
mysql_query($sql1);
$sql2='insert into 商品データ....';
mysql_query($sql1);
としたいのですが、商品データに、追加したばかりの商品マスタのpkyをセットしたいのですが、
どうすればいいでしょう??双方のテーブルのpkyはauto increment です。
追加したばかりのレコードを取得して変数に入れるようなものや、
pkyだけ先に知るとか…そんなんあれば良いんですが
アドバイスもらえるとありがたいです。

815nobodyさん:2006/04/24(月) 00:23:55 ID:???
二日目でgoogleも使わずここか
816nobodyさん:2006/04/24(月) 00:26:02 ID:???
>>813
煽られるのが嫌なら適当なトリップを付けるか、メール欄を空白にしてIDを表示して
書き込むようにしなさい。
817nobodyさん:2006/04/24(月) 00:27:48 ID:???
>>814
mysql_insert_id
818nobodyさん:2006/04/24(月) 00:33:46 ID:MxIb/Ds6
>>817
助かったよ、ありがとう〜(;´д`)
819nobodyさん:2006/04/24(月) 00:41:53 ID:???
>>814
お前は
http://pc8.2ch.net/test/read.cgi/db/1140154701/601
じゃ無いんだよな?無いんだよな?ん?無いよな?
820nobodyさん:2006/04/24(月) 00:46:40 ID:MxIb/Ds6
ちがいますが…orz

とりあえずBカップです
821nobodyさん:2006/04/24(月) 01:03:19 ID:???
Bカップ??
822nobodyさん:2006/04/24(月) 01:23:12 ID:???
池沼だろ
823nobodyさん:2006/04/24(月) 02:14:46 ID:???
すっげぇ下らない質問なんだけど

質問1.
Windows上(apache)でPHP動かしたい場合は
あるいはプロバイダの鯖上でPHPを埋め込みたい場合、
Windows Binariesってのをダウソすればいいんですかね?

質問2.
Perlのが優れてる点って何?
824nobodyさん:2006/04/24(月) 04:10:24 ID:???
>>823
質問1
・Windows上(apache)でPHP動かしたい場合
・プロバイダの鯖上でPHPを埋め込みたい場合
この2つを並列にしている時点で意味が分からない。帰れ。

質問2
Perl VS PHP
http://pc8.2ch.net/test/read.cgi/php/982591467/
825nobodyさん:2006/04/24(月) 06:30:33 ID:???
requireとincludeの違いって、何なのでしょうか。
マニュアルを読んだのですが何度読んでもよく理解できませんでした。
誰か分かりやすく解説してもらえませんか。
826nobodyさん:2006/04/24(月) 06:50:12 ID:???
すみません、早朝から質問なのですが
AAA.php
BBB.php
というファイルがあって

AAA.phpの処理後にBBB.phpをそのまま起動させたいときは
どう命令したらいいですか?
827nobodyさん:2006/04/24(月) 07:47:25 ID:???
>>825
読み込めなかったら中止にするか読み込めなくてもそのまま。
828nobodyさん:2006/04/24(月) 08:29:46 ID:???
>>748
俺ならこうする
$birth = '2006年4月22日';
list($birth1,$birth2,$birth3) = sscanf($birth, "%d年%d月%d日");
829nobodyさん:2006/04/24(月) 08:39:10 ID:???
>>826
include or Location
830nobodyさん:2006/04/24(月) 08:41:05 ID:???
sscanf()なんてあったんだね
831nobodyさん:2006/04/24(月) 11:36:16 ID:???
サーバーにPHPがインストールされているのか、
されていないのか、って
どうやって調べるんですか?
832nobodyさん:2006/04/24(月) 11:47:50 ID:???
>>831
俺はコマンドラインでphp -vって叩いて確認してる。
833nobodyさん:2006/04/24(月) 11:55:33 ID:???
>>831
管理者に聞く
834nobodyさん:2006/04/24(月) 14:59:43 ID:???
会員式のログイン・ログアウトサイトを作っています。
SESSIONを使ってログインし、ログアウトする時はunset($_SESSION['name']);
などとしているのですが、たまにログアウトしきれない時があります。(ページが残る)

完全にセッションの内容を消去するには、どのように書けばいいのでしょうか?
835nobodyさん:2006/04/24(月) 15:02:44 ID:???
836nobodyさん:2006/04/24(月) 15:13:23 ID:???
>>831
phpinfoを使うってのはアリじゃない?
837nobodyさん:2006/04/24(月) 15:17:53 ID:???
Webページ丸ごと読込んでデータとして扱う方法ないですか?
838nobodyさん:2006/04/24(月) 16:08:50 ID:???
>>837
方法あるよ
右クリック→ソースの表示→全て選択→コピー
をしてPHPの変数(引数)に代入してファイル保存してFTPアップロード。

リアルタイムにどこかのサイトを読み込み表示したいのなら
上記の作業を素早くやり続ければOK

コツとしては、全て選択は[Ctrl+A]、コピー[Ctrl+C]、貼り付け[Ctrl+V] を駆使する
839nobodyさん:2006/04/24(月) 16:50:25 ID:???
バッククオートの中に変数を入れるためにはどう記述すればいいでしょうか?

例 $hoge = `ls -l $dir`;
840nobodyさん:2006/04/24(月) 17:08:20 ID:???
>>839
バッククォートで括らない


ってか、何故バッククォート?
841nobodyさん:2006/04/24(月) 17:19:22 ID:???
>>839
普通に出来たよー?
シェルの環境変数ってこと?

>>840
実行演算子
842837:2006/04/24(月) 18:15:36 ID:???
>>838
ありがとうございました!(,;:´゚;∀;゚, )
843nobodyさん:2006/04/24(月) 18:41:32 ID:???
アクセスした日によって違うページに飛ばせたいと思っています。

2006/04/24にアクセスしたら
<a href="http://hogehoge.com/20060424">本日の予定</a>
2006/04/25にアクセスしたら
<a href="http://hogehoge.com/20060425">本日の予定</a>
となるようにしたいのです。

どのように記述すればいいですか?
ちなみに鯖のPHPは4.3.2で動いています。
844nobodyさん:2006/04/24(月) 18:53:53 ID:???
>>843
俺だったら、date()の結果をif()で比較演算子を用いて比較し、header()でLocationを
生成して飛ばすかな。
845nobodyさん:2006/04/24(月) 18:56:52 ID:???
>>843
<a href="http://example.com/<?php echo date("Ymd") ?>">本日の予定</a>
846nobodyさん:2006/04/24(月) 18:57:45 ID:???
ぬを
>>843
<a href="http://example.com/<?php echo date("Ymd") ?>">本日の予定</a>
847844:2006/04/24(月) 18:58:33 ID:???
飛ばすって…リンクは飛びませんけど?
それはユーザエージェントの動作を言ってるんじゃん…

それならdate()の結果をそのまま出力すればよかと。
848nobodyさん:2006/04/24(月) 19:25:42 ID:???
いくつかパターンはあるものの
phpスクリプトの書き始めに<?phpで始まり?>で書き終わるものだと思っていましたが
最近見たスクリプトで、<?phpでの書き出しはあったのに
?>が無いものがありました。

私には理解ができなかったのですが、正常に動作していましたし、
以上も発見されませんでした。

これは、どういうことなのでしょうか?
必ずしも<?phpで始まったものが、?>で終わる必要はないということなのでしょうか?
849nobodyさん:2006/04/24(月) 19:26:35 ID:???
いくつかパターンはあるものの
phpスクリプトの書き始めに<?phpで始まり?>で書き終わるものだと思っていましたが
最近見たスクリプトで、<?phpでの書き出しはあったのに
?>が無いものがありました。

私には理解ができなかったのですが、正常に動作していましたし、
以上も発見されませんでした。

これは、どういうことなのでしょうか?
必ずしも<?phpで始まったものが、?>で終わる必要はないということなのでしょうか?
850nobodyさん:2006/04/24(月) 19:34:21 ID:???
>>849
マニュアルによると、
「ファイル終端におけるPHPブロックの終了タグはオプション(任意)です」ってことだ。
851nobodyさん:2006/04/24(月) 19:45:00 ID:???
でも気持悪いな。
852nobodyさん:2006/04/24(月) 20:38:52 ID:???
漏れは、

#!/usr/local/bin/php

header("Content-Type: text/html");

print <<<EOF
<!DOCTYPE 〜>
<html lang="ja">

EOF;

exit;

こう書くけどな。
853nobodyさん:2006/04/24(月) 20:45:24 ID:???
>>852
それはそれでOKなんじゃないかなと思いますよ。
ただ、
<?php


で終わっていて、何だかすっきりしないし
これでいいのか?!って思ったので聞いてみました。
854nobodyさん:2006/04/24(月) 20:46:55 ID:???
>850
そうなんですね!
親切に調べてくれてありがとうございました。
855nobodyさん:2006/04/24(月) 23:38:00 ID:UzNg/65t
ブログの静的ページを作ろうと思いPHPを勉強してるんですが、わからない事がでてきました。
PHPで出てきた結果をHTMLとして出力できないでしょうか?
例えば

<?PHP $x=100; ?>
静的ブログが<?PHP echo $x ?>回ぐらいつくりたいよ〜<br>

みたいなPHPがあって、それを実行したら
HTMLファイルにそのまま

静的ブログが100回ぐらいつくりたいよ〜<br>

と出力したいのですが、むりでしょうか?
856nobodyさん:2006/04/24(月) 23:44:10 ID:???
>>855
意味がわからん。
「<br>」をそのまま出力したいってこと?
857nobodyさん:2006/04/24(月) 23:58:28 ID:???
「HTMLとして(ブラウザに)出力」なのか、「HTMLファイルに(書き出す)」なのか良く分からんが、
htmlファイルに書き込みたいのなら、
「出力制御関数」と「出力制御関数」あたりを使えば楽なんじゃないかな。

<?php ob_start(); ?>
<?PHP $x=100; ?>
静的ブログが<?PHP echo $x ?>回ぐらいつくりたいよ〜<br>
<?php
$a = ob_get_contents();
$fp = fopen("a.html","a");
fwrite($fp,$a);
fclose($fp);
?>
858nobodyさん:2006/04/24(月) 23:59:47 ID:UzNg/65t
>>856
<br>に限ったことではないのですが
例えば「make.php」が

<?PHP $x=100; ?>
静的ブログが<?PHP echo $x ?>回ぐらいつくりたいよ〜<br>


「index.html」に出力を出して、内容が

静的ブログが100回ぐらいつくりたいよ〜<br>

見たいな感じにならないかなぁ〜って思って。
動的PHPから静的HTMLを作ってほしいんです。
859nobodyさん:2006/04/25(火) 00:05:14 ID:???
>>858
だったら>>857の方法でいいと思うけど。
860nobodyさん:2006/04/25(火) 00:08:36 ID:33LQjSvo
>>857
ありがとうございます!!
解決しました!!
861nobodyさん:2006/04/25(火) 00:48:38 ID:???
PHPスクリプトで携帯宛にメールを送る時の
エンコーディング(文字コード?)の種類を教えてもらえませんか?
862nobodyさん:2006/04/25(火) 00:54:16 ID:???
キャリアごとに違うのでは?
たしか、EUCではなかった様な気がするゾナもし
863nobodyさん:2006/04/25(火) 01:28:14 ID:???
メールなんだからjisでいいんじゃまいか?
だめだったの?
864nobodyさん:2006/04/25(火) 01:32:56 ID:???
配列に数字が入っています。
array(1, 2, 3, 4);

それらを一つずつ足していきたいのですが、方法が分かりません。

やりたいことは1+2+3+4ということです。

どういう関数を使えばいいか教えて下さい。
865nobodyさん:2006/04/25(火) 01:49:30 ID:???
>>864
お前・・・それは関数どうの以前の問題ジャマイカ・・・?

とりあえず配列の要素数(上の例では4つだな)を何とか取得する。
で、配列の一番左、もしくは右から順に足していくんだ!
866nobodyさん:2006/04/25(火) 02:23:53 ID:???
$array = array(1, 2, 3, 4);
$sum = 0;
foreach ($array as $num) $sum += $num;
867nobodyさん:2006/04/25(火) 03:54:07 ID:???
$array = array(1, 2, 3, 4);
$sum = array_sum($array);
868nobodyさん:2006/04/25(火) 07:32:45 ID:???
>>865
お前PHPをなめてるな
869nobodyさん:2006/04/25(火) 07:47:48 ID:???
RSSが更新されたらメール送信するようなスクリプトって作れますか?
870nobodyさん:2006/04/25(火) 08:50:24 ID:???
>>869
「一定時間毎にRSSの更新をチェックして
 更新されていたらメール送信する」
であれば可能。
871nobodyさん:2006/04/25(火) 15:34:44 ID:???
>>869
「RSSを更新する際にメールを送信する」
でも可能。
872nobodyさん:2006/04/25(火) 15:43:13 ID:???
レスありがとうございます。
>>870
どのような関数でどんな流れでするのでしょうか?
>>871
受信側なので、それはちょっと…
873nobodyさん:2006/04/25(火) 15:45:37 ID:???
>>872
pearつかってRSSのURL GETして、XMLパースして、
時間チェックして、前回のチェック時時より新しければ
必要に応じたメールを送信。
874nobodyさん:2006/04/25(火) 15:52:13 ID:???
>>872
http://pear.php.net/manual/ja/package.xml.xml-rss.php
http://pear.php.net/manual/ja/package.mail.mail.php

前回チェック時の更新時刻の保存は
DBなりファイルに保存するなり、決めうちでチェック間隔以内
にするなりすきにしれ。
875nobodyさん:2006/04/25(火) 19:46:57 ID:???
Last-Modified吐いてくれたらいいのにね。
876nobodyさん:2006/04/25(火) 20:11:19 ID:YuLHBMcs
→   全空白

を置換したく、

$file = str_replace(" ","", $file);

でやってみたのですがうまくいきません、
ほかに方法ありませんか?
877nobodyさん:2006/04/25(火) 20:20:02 ID:???
>>876
&andheart;
878nobodyさん:2006/04/25(火) 20:27:12 ID:???
&heart;
879nobodyさん:2006/04/25(火) 20:29:08 ID:???
DBからデータ持ってくるときに、いちいち
tryするのか?もまえらは

ちなみにphp4のひとは無視してくだちい。
880nobodyさん:2006/04/25(火) 21:31:28 ID:???
>>879
死ねゴミ
881nobodyさん:2006/04/25(火) 22:19:05 ID:???
>>870
これってページにアクセスしなくてもできるの?どうやって?
882あぼーん:あぼーん
あぼーん
883ぬる:2006/04/25(火) 22:37:49 ID:???
http://example.com/test.php/foo.bar
とアクセスしたとき、
http://example.com/ に相当する部分の文字列を取得したいけど
どうしたらいい?

PHP_SELF や REQUEST_URI や SCRIPT_NAME だと
そこが丸々削られてて、途方にくれた
884nobodyさん:2006/04/25(火) 22:38:25 ID:S1Of8zqn
885nobodyさん:2006/04/25(火) 22:50:19 ID:1JYLmc+t
host
886nobodyさん:2006/04/25(火) 22:52:58 ID:???
$_SERVER[HTTP_HOST]
ぐらいしかひとまず思いつかん
887nobodyさん:2006/04/26(水) 00:07:22 ID:???
>>873-874
ありがとうございます。とりあえず更新しているかどうかのチェックと、XML_RSSの使い方はわかったんですが、
いちいちページにアクセスしないでスクリプトを開始させる方法はありませんかね?
毎回アクセスするならあまり意味が…
888nobodyさん:2006/04/26(水) 00:51:31 ID:???
php cliで書くとか
前はcron で wgetするなんて事もしていたな・・
889nobodyさん:2006/04/26(水) 00:56:20 ID:???
>>887
cronで一定時間ごとに実行
890nobodyさん:2006/04/26(水) 01:44:28 ID:???
PHPの正規表現で
「検索: 17件中1〜10件を表示」
の「17」だけを取りたいんですが何てかけばおkなの?
891nobodyさん:2006/04/26(水) 01:50:59 ID:???
>>890
正規表現スレで聞いてきなさい
892nobodyさん:2006/04/26(水) 01:58:58 ID:???
cronでphpを起動ってよく聞くけど具体的な書き方が載ってるサイトがない
893nobodyさん:2006/04/26(水) 02:58:36 ID:???
cronで
wget http://example.com/hoge.php
とか
php hoge.php
って事でしょ
894nobodyさん:2006/04/26(水) 03:39:46 ID:???
>>892
そりゃcronって時間指定の他はコマンドラインでプログラム実行するのと
そのまま同じに書くだけだもの。
そんなのに具体的解説を求めるのは
「先生!マウスでクリックって何のことか分かりません!」
と言うのと同じくらい厨な話かと。
895nobodyさん:2006/04/26(水) 03:58:34 ID:???
まさかcronの使い方教えろって言ってるわけじゃないよな・・
896612:2006/04/26(水) 04:07:26 ID:gSi6TGNs
前回の質問の続きなのですが、
例えば
<?php
phpinfo();
?>
というスクリプトがあるとして、このスクリプトに直接手を加えて1分ごとに1回起動させるためには
どう手を加えたら良いのでしょうか?
897nobodyさん:2006/04/26(水) 04:32:18 ID:???
sleep

cron等を使ったほうがいいと思う
スクリプト動きっぱなしは負荷高そうじゃない?
898nobodyさん:2006/04/26(水) 07:26:07 ID:???
>>897
sleepだとmax_execution_time で終了(デフォは30秒)
899nobodyさん:2006/04/26(水) 09:54:52 ID:???
>>887
定期実行の方法くらい学べよ。
スクリプト系言語の基本だろ。
900nobodyさん:2006/04/26(水) 09:56:46 ID:???
なんだcron厨ばかりか。
お前らWindows環境でタスクスケジューラでもつかったらどうだ。
901nobodyさん:2006/04/26(水) 10:03:53 ID:???
>>900
タスクスケジューラが移植されてから考える。
つかWindowsでもatはあるよな。
902nobodyさん:2006/04/26(水) 10:04:48 ID:???
いや確かに普段使ってるけど
903nobodyさん:2006/04/26(水) 10:24:51 ID:???
>>896
つ[ */1 * * * * php phpinfo.php ]
904nobodyさん:2006/04/26(水) 11:29:30 ID:???
$hogeにある文字列が入っていたら、○○を出力

っていうのがしたいのですが、IFで出来ると思うのですが、どうもうまくいきません・・。
文字の比較?かなにかだと思うのですが・・。アドバイス願います。
905nobodyさん:2006/04/26(水) 11:38:04 ID:???
>>904
>>347-
906nobodyさん:2006/04/26(水) 11:39:07 ID:???
ちょっとちがうか。ま、strposと組み合わせてうまいことやれ。
907904:2006/04/26(水) 11:54:02 ID:???
>>906
これで出来ました!ありがとうございました。
<?
if(strpos($hoge,"test")){
echo"これはテストです";
}else{
echo"これはテストではありません";
}
?>
908nobodyさん:2006/04/26(水) 11:58:28 ID:???
>>904
if(strstr($hoge, 'ある文字列')) echo '○○';
909nobodyさん:2006/04/26(水) 12:22:14 ID:???
>>907
それだと$hogeがtestで始まる場合に動かない
910nobodyさん:2006/04/26(水) 12:47:45 ID:???
>>908
注意: もし特定の haystack に needle があるかどうかを調べるだけの場合、 より早く少ないメモリを使用する strpos() を代わりに使用してください。
>>907
if(strpos($hoge,"test") !== false)
911nobodyさん:2006/04/26(水) 13:30:05 ID:???
だから>>304-を参考にしろというのに…w
912nobodyさん:2006/04/26(水) 13:30:21 ID:???
>>347か orz
913nobodyさん:2006/04/26(水) 16:46:41 ID:???
文字列が含まれているか確認するだけなら
if(strpos($hoge,"test") !== false)をつかったほうがよさそうだな
正規表現なくてもpreg_match使ってた
914nobodyさん:2006/04/26(水) 17:02:23 ID:???
いや基本ですよ
915nobodyさん:2006/04/26(水) 17:15:00 ID:???
>>914 すみません
916nobodyさん:2006/04/26(水) 18:48:39 ID:???
連想配列で、

$a["nurupo"]=4;

とする場合は分かったんですが

$b="nurupo";
$a[$b]=4;

とするとエラーになるんですが、どうやったら使えますか?
ほんとにしょうもない質問ですが、連想配列でぐぐっても、答えになるサイトが見つからなかったんで
よろしくおねがいします。
917nobodyさん:2006/04/26(水) 19:00:35 ID:gSi6TGNs
test.txtから先頭の1行のみを読み込むには

$handle = @fopen("test.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle);
echo $buffer;
}
fclose($handle);

をどうすれば良いですか?
918nobodyさん:2006/04/26(水) 19:07:38 ID:???
あの、>>882が気になるんですけど。。
919nobodyさん:2006/04/26(水) 19:54:43 ID:gSi6TGNs
それは
あぼーん
ですよ
920nobodyさん:2006/04/26(水) 19:57:49 ID:???
スクリプトの一番最後の ?> がエラーになることってあるんですか。
実際にエラーになってるんですが、何ですかコレ。
921nobodyさん:2006/04/26(水) 20:00:57 ID:???
構文的に見てまだ後に何かが続く筈なのに ?> で終わらされた場合には、PHPの中の人も怒るってもんだ。
922nobodyさん:2006/04/26(水) 20:13:02 ID:???
>>920
サンプル
<?php
$a = "aaaa;
echo $a;
exit;
?>
923nobodyさん:2006/04/26(水) 20:14:51 ID:???
>>917
$handle = @fopen("test.txt", "r");
if ($handle) {
//while (!feof($handle)) {
$buffer = fgets($handle);
echo $buffer;
//}
fclose($handle);
}
924nobodyさん:2006/04/26(水) 20:57:08 ID:???
ファイルの中身を0にする(消す)には普通にwで読み込めば0バイトになりますか?
925nobodyさん:2006/04/26(水) 20:58:59 ID:gSi6TGNs
>>923
ありがとうございました。やってみます!
926nobodyさん:2006/04/26(水) 21:08:58 ID:???
>>924
fopenした時点で0になるので読み込めない。
927nobodyさん:2006/04/26(水) 21:33:56 ID:???
/home/hoge/test.phpで、
<? include=("/home/hoge/hoge.php"); ?>
としたとき、hoge.php内で
[/home/hoge/test.php]
もしくは、test.phpのアドレスを
取得するにはどうすれば良いでしょうか。
よろしくお願いします。
928nobodyさん:2006/04/26(水) 21:58:41 ID:???
何してるかしらんけど、文句言ってこないか?
929nobodyさん:2006/04/26(水) 22:21:13 ID:???
>>927
前に調べたときにはわからなかったけどdebug_backtrace()に入ってた。
930nobodyさん:2006/04/26(水) 22:52:57 ID:bUyltefP
fsockopenとかで送信するHTTPリクエストについて詳しく解説してるサイトご存知ですか?
931nobodyさん:2006/04/26(水) 23:30:55 ID:???
ttp:www.tohoho-web.com/ex/http.htm
俺はよく見るけど参考になるかな
932nobodyさん:2006/04/26(水) 23:34:46 ID:???
filemtimeって同じサーバーのものしか取得できない
933nobodyさん:2006/04/26(水) 23:44:42 ID:???
Last-Modifiedとかで相手鯖のヘッダみるとか
934nobodyさん:2006/04/26(水) 23:44:56 ID:???
ミスった・・・
filemtimeってローカルのファイルのものしか取得できないんですか?URLをぶち込んでもエラーになるんですが・・・
935nobodyさん:2006/04/26(水) 23:48:40 ID:???
ローカルしか取得できないよ
936nobodyさん:2006/04/26(水) 23:59:40 ID:???
初めて聞いた
937nobodyさん:2006/04/27(木) 00:01:33 ID:???
>>931
d!
938nobodyさん:2006/04/27(木) 01:03:12 ID:???
>>927
$_SERVER['SCRIPT_NAME'] か $_SERVER['PHP_SELF'] 辺り?
939nobodyさん:2006/04/27(木) 01:06:10 ID:???
>>914
そのままコピペして実行してみたがエラーにはならんかったよ。
どんなエラーが出たって言うのさ。
940nobodyさん:2006/04/27(木) 01:36:21 ID:???
$aa[] = "http;//******";
$aa[] = "http;//*****";
$aa[] = "http;//****";
ってな感じで配列に組み込まれたサイトが更新したかどうかを次々確認するにはどうすればいいでしょうか?
このスレ読んでcron使って定期的に走らせる方法はわかりましたが、
配列をまだよく理解できてないせいかスクリプト自体がうまくいきません。
データベースは無しの方向で・・・
941nobodyさん:2006/04/27(木) 01:41:09 ID:???
>>938
そんな知識レベルで外部アクセスするプログラムは書いちゃダメ。
十中八九、その更新をチェックされるサイトに迷惑がかかる。
(実際、あちこちでその手の素人作成ロボットが多大な迷惑をかけてる)

その種のWindowsアプリはWWWCとか色々あるんだからそれ使いなさい。
みんな、相手先に迷惑をかけないように色々考えて作ってるんだから。
素人が気軽に考えてそんなツール作っちゃダメ。
942nobodyさん:2006/04/27(木) 03:24:22 ID:???
>>941
ウニ系はどうするの?
あったら教えて
943nobodyさん:2006/04/27(木) 06:07:58 ID:???
>>940
まずは、何をもって「サイトが更新」されているかを判断するか
考えてる?それによってどうすべきかが変わると思うけどね。
944nobodyさん:2006/04/27(木) 08:22:25 ID:???
HTTPヘッダのIf-Modified-Sinceで前回の更新日送って
304が帰ってきたら更新なし、それい以外だと更新あり
だから相手鯖のヘッダだけで更新したかしてないかわかるから
データまでは取得しなくていい

といってもPHPでheader関数使ってるとこじゃ使えなさそうだけど
945nobodyさん:2006/04/27(木) 09:35:09 ID:???
940ではないけど
>>944
「前回の更新時間」は複数サイトチェックするならデータベース使うしかない?
ファイルをそれぞれ作るわけにもいかないし
946nobodyさん:2006/04/27(木) 10:23:10 ID:???
>>945
cronが1時間周期なら、1時間(5分)以内に更新したサイト
というやり方もあり。信頼性はかわるが実用レベルでは
何とでもなるだろ。
947nobodyさん:2006/04/27(木) 11:20:27 ID:???
>>944
画像だけ更新ってのは?
948944:2006/04/27(木) 12:37:30 ID:???
>>945
946がいってるように一定周期ならその間に更新があるか判定すればいいけど
不定期ならDBとかに保存しないと駄目と思う

>>947
画像だけを更新チェックってこと?
なら>>944のIf-Modified-Sinceでできるよ
949944:2006/04/27(木) 12:39:46 ID:???
あぁページ内の画像が更新ってことか
すべてのページ内リンクを解析してチェックしないとできないと思う
950nobodyさん:2006/04/27(木) 14:54:14 ID:???
>>944
WWWCとか見てみれば分かるが、
HEADで更新日時を確認するのと、
ページのサイズ変化を確認するのと、
GETでページ全体を比較するのと、
HTMLタグを除去した状態で内容を比較するのと、
正規表現で特定の範囲だけ比較するのと、
という感じで色々サイトごとに設定できるようになってて
それだけ手を考えないとちゃんと更新をチェックできない場合があるね。

広告挿入の処理に引っかかって軒並み更新にされちゃうサイトとかあったり。
951nobodyさん:2006/04/27(木) 14:55:35 ID:???
>>945
ファイルをそれぞれ作れば?
952nobodyさん:2006/04/27(木) 15:43:39 ID:???
HTMLから内包する画像から何から一切合財を一括で取得して
tarで固めてMD5ハッシュ値比較保存
ってのはどうだ?
HTMLの構文解析やらアドタグの排除やら面倒な事山積みだけど。
953nobodyさん:2006/04/27(木) 15:52:56 ID:???
>>952
1サイトのチェックだけで10分とかかかりそうだw
そこを短時間で一気に行くとサイト側が負荷かかりすぎで死ぬし。
こういう処理で、平気で10とか並列でアクセスかけるバカが多くて困る。
954nobodyさん:2006/04/27(木) 16:01:46 ID:???
$last = getlastmod;
if(今の時間>$last>今の時間-3600)
じゃだめなの?
955nobodyさん:2006/04/27(木) 16:14:50 ID:???
>>954
流れを読まない奴
956nobodyさん:2006/04/27(木) 16:43:29 ID:???
$name = $_POST['name'];
setcookie("namecookie", $name, time()+3600*24*30);
とし、
html側は<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" size="10" value="<?php echo $_COOKIE["namecookie"]; ?>">
<input type="submit" value="test">
</form>
といった感じにして、cookieの挙動を見てみたのですが、
1.名前を入れて送信→名前はセットされない→2.別の名前を入れて送信→
1回目の名前がセットされる→3.そのまま(1回目の名前がセットされているので)送信→
2回目の名前がセットされる→4.そのまま(2回目の名前がセットされているので)送信→
1回目の名前がセットされる・・・以後ループ。
といった感じになります。
cookieを使うのははじめてなのですが、これは正常な動作なのでしょうか?
1回目を送信した時点で、1回目の名前がセットされている状態がいいのですが、
何か方法はありませんでしょうか?
957956:2006/04/27(木) 16:44:38 ID:???
すみません。ちょっと訂正です。
<input type="text" size="10" value="<?php echo $_COOKIE["namecookie"]; ?>">

<input type="text" size="10" name="name" value="<?php echo $_COOKIE["namecookie"]; ?>">
958nobodyさん:2006/04/27(木) 17:17:56 ID:???
>>956
$name = $_POST['name'];
if (empty($_COOKIE['namecookie'])) {
$_COOKIE['namecookie'] = $name;
}
959nobodyさん:2006/04/27(木) 17:33:32 ID:???
>>956
それで正常。
1回目を入れたい場合は、「クッキーがあればそれを表示。無ければPOSTの内容を表示」
という風に条件をつけて表示させるか、PHPで表示せずにJavaScriptで表示させる。
960nobodyさん:2006/04/27(木) 17:39:09 ID:???
>>956
そりゃサーバがクッキー受け取るのは、アクセス時だし、
ブラウザーがクッキー保存するのはアクセスした後なんだから当たり前。
961956:2006/04/27(木) 17:57:14 ID:???
>>958-960
皆さんレスどうもありがとうございました。
自分の書きかたが悪いのかな?と思いまして。
正常ということなら一安心です。
さっそく958さんのコードを使用させていただきます。
962nobodyさん:2006/04/27(木) 19:42:55 ID:???
ログの書き込みについて質問なんですが、
fopen("log", "a");だと最新ログが下にきてしまいます。
PHPマニュアルのfopen()で使用可能な modeのリストを見ましたが、
a以外にログに簡単に書き込めそうなのはありませんでした。
aとwを足して2でわったような、
書き出し用のみでオープン。ファイルポインタをファイルの先頭に置く。
ファイルサイズは0にしない。
といったことはできませんか?
rsortを使えば、表示の時には最新のが上にきましたが、
ログに書き込む時点で、最新のをファイルの先頭に書き込むようなことがしたいです。
どうかアドバイスお願いします。
963nobodyさん:2006/04/27(木) 19:50:13 ID:???
普通にr+では?
964nobodyさん:2006/04/27(木) 19:57:43 ID:???
>>962
ファイルを逆にするという手もある。
array_reverse
965962:2006/04/27(木) 20:00:22 ID:???
>>963
r+でやってみたんですが、なぜか90バイトぐらいしかログが残らなくて・・・
自分で関数作るのがベストなんでしょうがそんな力もなくorz
966nobodyさん:2006/04/27(木) 20:02:44 ID:???
ファイルの書き込みはファイルポインタの位置からデータを書いていくだけなので、
以前のデータは破壊されますがなにか?
967nobodyさん:2006/04/27(木) 20:12:57 ID:???
なんで前に書き込みたいのかが分からん。
968nobodyさん:2006/04/27(木) 20:32:05 ID:???
>>962
$data = file_get_contents("ファイル名");
$data = "書き込みたい文字\n".$data;
$fp = fopen("ファイル名", 'w');
fwrite($fp, $data);
fclose($fp);

こんなんじゃだめ?
969962:2006/04/27(木) 20:42:29 ID:???
>>964
調べてやってみましたが、ログが全部Arrayに…
やり方が悪かったんでしょうか。
>>966
そうですよね…
>>967
チャットのサンプルをいじってまして、
表示部分がJavaScriptで行われているようで、
JavaScript側でソートすればいいのでしょうが、
触ったことがなく、PHP側でどうにかしようと思った次第です。
>>968
試してみたところ、見事最新ログが上にきました。
どうもありがとうございます。
しかし仕組みがわからない…もっと勉強してまいります。
970nobodyさん:2006/04/27(木) 20:46:07 ID:???
そもそもファイルの内容を読み込まずに
ファイルの先頭に追記(挿入)する事は不可能
それを踏まえてアルゴリズムを考えるべし
>>964に1票

>>968
一応flockも考慮していただけると・・・
971nobodyさん:2006/04/27(木) 20:47:17 ID:???
$log = file($logfile);
$log = array_reverse($log);

これだけでファイルが逆さに表示できる。
972962:2006/04/27(木) 20:58:29 ID:???
>>970-971
勉強になります。どうもありがとうございます。
勉強不足なのは痛感しました。
アルゴリズムの勉強もしたいと思います。
973nobodyさん:2006/04/27(木) 21:14:29 ID:???
ここ回答者も初心者しかいないな
974nobodyさん:2006/04/27(木) 21:16:51 ID:???
<?_?>
975nobodyさん:2006/04/27(木) 21:17:42 ID:???
ページの**行目を読み込む、みたいなことができる関数ってありますか?
976nobodyさん:2006/04/27(木) 21:20:47 ID:???
>>975
>>917-
977975:2006/04/27(木) 21:26:30 ID:???
というか例えば
12345
abcdef
klmnop
と記述されたテキストファイルがあったとして、それぞれの値をひっぱってくるにはどうしたらいいんでしょうか?
978nobodyさん:2006/04/27(木) 21:34:15 ID:???
>>977
$data = file('テキストファイル');
print $data[0]; //12345
print $data[1]; //abcdef
print $data[2]; //klmnop
979nobodyさん:2006/04/27(木) 21:34:27 ID:???
rssって更新されたら確実にサイズ変わるだろ
広告とかもないし、サイズ比較だけでいい気がするけど
980nobodyさん:2006/04/27(木) 21:55:11 ID:???
>>979
誤爆なのか、勘違い亀なのか…
981nobodyさん:2006/04/27(木) 21:55:12 ID:???
RSSの話だったの?
982nobodyさん:2006/04/27(木) 21:57:04 ID:???
>>979
俺はそうしてるよ
983nobodyさん:2006/04/27(木) 22:04:57 ID:???
普通はそうするだろ
984nobodyさん:2006/04/27(木) 22:22:29 ID:???
確実なの?
985nobodyさん:2006/04/27(木) 22:32:07 ID:+MA+gFEM
mcrypt暗号化関数での質問なのですが
マニュアルに
「これらの定数は、この拡張モジュールで定義されており、この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロードされるかのどちらかの場合のみ使用可能です。」
と書いてあったのですが、これを実行時に動的に使うには、どのような設定が必要なのでしょうか?
例えば、同じディレクトリにphp.iniファイルを作って、その中で動作指定をするのですか?
全く分からなくてテンパってます。どうか教えてください!!
986nobodyさん:2006/04/27(木) 22:46:52 ID:???
>>985
dl()
987nobodyさん:2006/04/27(木) 23:25:16 ID:???
>>985
php.iniでextension
988nobodyさん:2006/04/28(金) 00:23:21 ID:K94bFNHB
くだらない質問なのですが、
僕の書いたphpのシステムのurlで、たとえば
hogehoge.com/list.php?id=3
みたいのがあるんですけど、
故意に?以降の部分を消して表示させると、
エラーコードがいっぱい吐き出されます。
同じように世の中の有名なサイトで同じようにパラメータの部分を
消して表示させた場合は、エラーコードとかは出ません。
こういう状況を回避するための一般的な対策としては
どのようなものがあるのでしょうか?
989nobodyさん:2006/04/28(金) 00:26:20 ID:???
isset()
990nobodyさん:2006/04/28(金) 01:07:09 ID:???
>>988
if($_SERVER['HTTP_QUERY_STRING'] == '') exit("<html>OK</html>");
991nobodyさん:2006/04/28(金) 01:28:29 ID:Na6jyHe3
>986
>987
ありがとうございました!
自分なりに調べて使えるようになりたいと思います。

あと、.htaccessのように任意のディレクトリにファイルとして配置できて
CRONのような定期実行の命令をしたいのですが、
何か方法をご存知ではありませんか?
出来るだけ人に頼らず自分で調べて作りたいのですが、
マニュアルを見ても、ググっても分からなかったので、ヒントだけ貰えませんでしょうか?
お願いします!
992nobodyさん:2006/04/28(金) 01:38:45 ID:???
>>991
>あと、.htaccessのように任意のディレクトリにファイルとして配置できて
>CRONのような定期実行の命令をしたいのですが、
何をしたいのかさっぱり
993nobodyさん:2006/04/28(金) 03:00:51 ID:???
cronではダメな理由を書いたほうが分かりやすそう
994nobodyさん:2006/04/28(金) 04:01:08 ID:Na6jyHe3
>992
CRONを使いたいのですが、レンサバの仕様で使えないのです。
定期実行をしたいのですが、もともと無いのなら、作れないだろうか。
というのが、思い立った理由です。
分かりにくいですかね?

>993
本当は、CRONを使いたいのです。
ただ前述の通りの理由により、CRONが使えないので、
CRONのような制御が出来るものを.htaccessのようにディレクトリに配置するような形で
使えたらいいなと思い、ここに書き込みました。

何か、方法を知ってある方がいらっしゃったら、ご教授願いたいです。
995nobodyさん:2006/04/28(金) 04:06:21 ID:???
.htaccess「のようなもの」をディレクトリに置くだけでcron代わりになるんだったら
鯖選びでcronが使えるかどうかなんて見ない。

cronが使える安鯖か自分のPCにあるブツ(cronでもタスクスケジューラでも)から
wgetでも叩かせれば、定期的にスクリプトが走るよ。
996nobodyさん:2006/04/28(金) 04:14:55 ID:ICV8N6RN
次スレ。

【PHP】下らねぇ質問はここに書き込みやがれpart20
http://pc8.2ch.net/test/read.cgi/php/1146165153/
997nobodyさん:2006/04/28(金) 05:14:10 ID:???
>>996
1乙
998nobodyさん:2006/04/28(金) 05:15:35 ID:???
>>994
ちょっとお金出して良いレン鯖にするか、自宅鯖でも建てたほうがいいような・・
999nobodyさん:2006/04/28(金) 05:16:55 ID:???
そして・・
1000nobodyさん:2006/04/28(金) 05:18:35 ID:???
1000だったら立派なphpプログラマになれる!!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。