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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2006/04/09(日) 01:31:18ID:???
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あたり
0002nobodyさん2006/04/09(日) 01:31:41ID:???
・過去スレ
【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/
0003nobodyさん2006/04/09(日) 01:32:15ID:???
【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/
0004nobodyさん2006/04/09(日) 01:32:54ID:???
・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するのは楽だと思いますけど。
0005nobodyさん2006/04/09(日) 01:35:05ID:???
0006nobodyさん2006/04/09(日) 01:35:33ID:???
前スレ1000、舐めてるなw
0007nobodyさん2006/04/09(日) 01:36:36ID:???
SQLインジェクションとは

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

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

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

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

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

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

最近PHPばっかりだよ。もうintとか型を忘れそうだ・・・
0021nobodyさん2006/04/09(日) 02:43:15ID:???
RSSが更新されたらメールで知らせてくれるスクリプト公開してる
ところありませんかあ?
0022nobodyさん2006/04/09(日) 02:43:40ID:???
>>21
スクリプト探しはスレ違い
0023nobodyさん2006/04/09(日) 02:48:40ID:???
>>22
ごめんなさいです><
0024nobodyさん2006/04/09(日) 03:21:20ID:???
>>9はどう見ても釣りだろ。お前ら簡単に釣られ過ぎ。
プログラマとかオタクは本当に世間知らずが多いな。
3年くらい営業の仕事でもやってこいって感じだ。
0025nobodyさん2006/04/09(日) 03:27:07ID:???
>>24
> 3年くらい営業の仕事でもやってこいって感じだ。
> 3年くらい営業の仕事でもやってこいって感じだ。
> 3年くらい営業の仕事でもやってこいって感じだ。
コーディングが出来ないから営業に回されちゃったんですか^^;
かわいそうですね(´・ω・`)
002692006/04/09(日) 03:43:23ID:???
>>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関係はだいぶコスト(人件費)がかかったよ。
0027nobodyさん2006/04/09(日) 03:55:54ID:???
出力部分をまとめとけばいいじゃない
0028nobodyさん2006/04/09(日) 04:02:53ID:???
個人でやっているならそれもありだろうけど、そのコストに
1000円や1500円の代価しかつかない、付けられないってもなんだ
かなぁ。
0029nobodyさん2006/04/09(日) 04:12:05ID:???
>>27
例えば、$error という変数にはプログラム側でのエラーメッセージ(タグ含む)が入ってるかも知れんし、
全ての変数をエスケープ処理していいわけはない。
そして、前の段階でチェックをすれば、チェック漏れが生じる可能性があるため、
「出力前」の時点でエスケープ処理をするのが一番確実かと。
0030nobodyさん2006/04/09(日) 04:19:18ID:???
print "名前: $name<br />年齢: $age"; の例だと、

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

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

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


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

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

とかける。

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

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

ちなみにおれは、画面表示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>
<? } ?>
0038nobodyさん2006/04/09(日) 09:05:07ID:???
SmartyとかMojaviで、PHPファイル名に「class」という文字列を
挟むのを良く見るのですが、どんな意味があるのでしょうか?
(例えば、Smarty.class.phpとかController.class.phpとか)
そんな命名規約ってありましたっけ?
0039nobodyさん2006/04/09(日) 09:18:09ID:???
SmartyやMojaviを作った人の趣味じゃねーの?
0040nobodyさん2006/04/09(日) 10:52:26ID:???
php覚えれば2chみたいな掲示板作れますか?
0041nobodyさん2006/04/09(日) 11:11:04ID:???
はい
0042nobodyさん2006/04/09(日) 11:41:43ID:2atGm5L3
セッションの為の文字列を生成しようと思っているのですが、
一般的にハッシュが使われるのはなぜでしょうか?
mt_randを使おうと思っているのですが、何か問題があるのでしょうか?
0043nobodyさん2006/04/09(日) 12:14:58ID:???
推測が不可能(に近い)って意味じゃ対して変わらんかも知れんが、
mt_randの方は RAND_MAXの制限を受けるし、
セッションの方は md5(128bits)かSHA-1(160bits)になるから、
まぁ強度が違うって感じかと。
0044nobodyさん2006/04/09(日) 13:16:37ID:???
>>42
セッションのための文字列?? セッションIDのこと?
それはPHPが勝手に発行してくれるんでは・・・
0045nobodyさん2006/04/09(日) 13:49:02ID:???
[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です。
0046nobodyさん2006/04/09(日) 14:52:11ID:LktfeTrO
ファイルのアップローダを作っているのですが
POSTで受け渡し
print $_FILES["file"]["tmp_name"];
にてjpegならimage/pjpegと表示されるのですが
bmpだけ何故か空になってしまいます。
apache2を使っているのですが、設定によるものなのでしょうか?
0047nobodyさん2006/04/09(日) 15:19:01ID:???
>>46
まず
$_FILES["file"]["tmp_name"]
ではなく
$_FILES["file"]["type"];
じゃないのか?
それはそうとMIME型なんてブラウザが吐くあいまいなものと
オレは認識しているのだが…ちがうのかな?
0048nobodyさん2006/04/09(日) 15:30:37ID:???
>>46
ブラウザが送ってくるContent-Typeを代入しているだけ。
bmpの時に送られてないだけじゃねーの?
当然詐称される可能性があるので、mime_content_type() (こいつは中身(つーか先頭部分だけ)を調べる)か、
getimagesize()なんかで、それが正しいかどうかチェックした方がよい。
0049462006/04/09(日) 15:45:47ID:???
>>46>>47
すいません。print $_FILES["file"]["tmp_name"]; は書き間違いです^^;
なるほど、理解できました!
ありがとうございました!
0050nobodyさん2006/04/09(日) 17:16:32ID:???
>>45
PHPかApacheかどっちかは不明だけど、メモリアクセス違反とかメモリリークとか
そういった内部的な致命的エラーが発生してる確率が高い。
それ、全然くだらん質問じゃないと思う。

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

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

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

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

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

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

これならうまくいくんですが。
0057nobodyさん2006/04/09(日) 19:03:12ID:???
>>56
ムリ
0058nobodyさん2006/04/09(日) 19:16:40ID:???
"0xFFFFF"という形式のストリングを
実際に16進数の0xFFFFFFという値に変換するにはどうやればよいのでしょうか。
宜しくお願いします。
0059nobodyさん2006/04/09(日) 19:22:51ID:???
>>58
hexdec()
マニュアルくらい常備したら?
0060nobodyさん2006/04/09(日) 19:32:15ID:???
>>59
ありがとうございます。
型の変換パートと、文字列パートばっかり探してました。
mathにあるなんて思いもしませんでした。
0061nobodyさん2006/04/09(日) 19:36:06ID:???
「進数変換」って言葉知ってる?
0062nobodyさん2006/04/09(日) 19:40:47ID:yKOq7PT+
>>61
恥ずかしながら今知りました。
0063nobodyさん2006/04/09(日) 19:59:17ID:???
MySQLなどとの連携にすぐれているといわれてますが
これがあると具体的にどのように役にたつのでしょうか?
phpだけでは掲示板とか作れませんか?
0064nobodyさん2006/04/09(日) 20:02:58ID:???
データベースが無くてもつくれます。
0065nobodyさん2006/04/09(日) 20:07:33ID:???
>>63
より大規模で高性能なものを作るときに、高速で安定したものが作れます。
個人サイトのちっこい掲示板くらいなら別に無くてもいいです。
0066nobodyさん2006/04/09(日) 20:13:34ID:???
>>64
>>65
ありがとうございます
0067422006/04/09(日) 21:18:39ID: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ではハッシュを使ってるみたいですね。
0068nobodyさん2006/04/09(日) 21:42:15ID:???
>>45
Warningエラーの行はない?Noticeだけでは落ちないと思うのだが
0069nobodyさん2006/04/09(日) 21:59:29ID:???
Warningじゃねーか。Errorか。

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

いま調べたら「Status: Active」だったYO。
01481082006/04/10(月) 20:56:32ID:qYnFdAMk
131さん ありがとうございます。
色々ググったりして、近い処理など見つけたのですが、
とりあえず自分のjavascriptの知識が足り無さ過ぎですね。
ttp://www.game.gr.jp/about/log/board_whole_javascript.abc_seq_605.htm
↑などは近いですが(DBが絡んでない)苦戦してそうですし、
結構長いスクリプトを書かないとダメみたいですね。
やろうとしてること自体、結構難易度が高いんでしょうか?
0149nobodyさん2006/04/10(月) 21:27:59ID:???
>>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 の中身は自分で考えてみて
0150nobodyさん2006/04/10(月) 21:29:34ID:ZFW0IoNM
質問です。
作成中のサイトはhttp://domain.jp/のようにアクセスすることでトップページへ飛びます。
その飛び先のデフォルトとして.htaccess内でDirectoryIndex index.phpとして
phpがコールされるようにしています。
念のためダミーでindex.htmlを作ってありますが、METAタグのrefreshで
http://domain.jp/をコールするようにしています。
ここで問題なのですが、サーバの解析ログをみたところ
http://domain.jp/を1度だけアクセスしたはずなのに
index.phpが連続して呼び出されているログが残っています。
最後にサーバ側から強制的にプロセスをシャットされているようなログも記録されています。
どのような原因が考えられますか?
01511492006/04/10(月) 21:45:45ID:???
× <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] をごにょごにょ
 }
}

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

で、ログがあるなら、そのログをコピペしてみれ。
01531082006/04/10(月) 22:49:43ID:qYnFdAMk
149さん
なんて親切なんだ!泣きそうなくらい感謝します。
ちょっと検証します。結果は明日また書きます。
ありがとうございました。
0154nobodyさん2006/04/10(月) 22:54:41ID:???
なんだかんだでお前ら優しいな。
惚れたぜ
01551502006/04/10(月) 23:59:28ID: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度だけです。
この場合どのような原因が考えられますか?
0156nobodyさん2006/04/11(火) 00:17:56ID:???
っていうかPHPと関係無いんじゃねぇの?
0157nobodyさん2006/04/11(火) 00:48:25ID:???
>>155
index.phpの中でindex.phpにLocationしてるとか、
実は403になってて、かつ403の飛び先がまたhttp://example.com/になってるとか。
0158nobodyさん2006/04/11(火) 01:45:57ID:Vmfip3pd
すいません質問です
magic_quotes on
sjisで書いてます。

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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



// 偏差値の算出
// $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;
}
0207nobodyさん2006/04/11(火) 16:11:25ID:???
>>206
標準偏差求めるループの中の pow は掛け算に置き換えるとたいてい速くなるよ。

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

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

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

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

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

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

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

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

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

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

一部のブログは、両方まぜてpingといったりトラックバックといったりしてるからね。
02362342006/04/12(水) 10:13:25ID:???
下記な感じでできました。
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;
}
-------------------------------------
0237nobodyさん2006/04/12(水) 14:01:54ID:???
fileやfile_get_contentsでwebページ内容もって来れるのは
わかったんですが、ヘッダを読む方法はありますか?

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

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

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

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

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

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


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

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

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

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

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

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

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

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

0259nobodyさん2006/04/12(水) 18:37:43ID:???
さぁ、益々下らなくなってまいりました。
0260nobodyさん2006/04/12(水) 18:42:12ID:???
なんだってー!
すごいなPHP&Perl
0261nobodyさん2006/04/12(水) 18:48:49ID:???
普段だったら気にならない個所なのに、こういう流れだから
メール転送を任されて戸惑ってるMTUやRWINの図が浮かぶ。
0262nobodyさん2006/04/12(水) 18:57:56ID:???
fopenの時に、ファイルが存在しなければ
ファイルを作成したいのですが
そういう場合はどうしたらいいですか?
0263nobodyさん2006/04/12(水) 19:09:40ID:???
空気が読めない奴って当然の如く去り際も心得て無いよな
0264nobodyさん2006/04/12(水) 19:09:42ID:???
>>262
'w'ならデフォルトで新規作成される。
'r'でファイルが存在しなかった場合に新規作成したいならtouch($file);とか書けばいい。
0265nobodyさん2006/04/12(水) 19:22:21ID:???
>>258
というか、ここはPHPで書くための質問スレなんだけど。
PHPで書かないための質問は他所で。
0266nobodyさん2006/04/12(水) 19:32:24ID:???
典型的な初心者にワラタ
0267nobodyさん2006/04/12(水) 20:24:31ID:fK671VOd
227はイタイな
答えられないのに文句だけ言う奴もウザイけど
0268nobodyさん2006/04/12(水) 20:37:47ID: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
というエラーが出てしまいます。
この関数やエラーについて調べてみたのですが、手がかりがつかめませんでした。
これはどうなっているのでしょうか?
0269nobodyさん2006/04/12(水) 20:43:40ID:???
>>268
input_filterて関数が無いってメッセージ出てるやん。

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

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

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

よろしくお願いします。
0281nobodyさん2006/04/12(水) 22:39:25ID:???
>>280
ブラウザ依存の機能につき無理
0282nobodyさん2006/04/12(水) 22:46:27ID:???
>>280
標準のダイアログにID文字列を勝手に入れるのは無理じゃないかな。
やるなら、HTMLのFORMでIDとパスを受け付けるようにするとか
JavaScriptのダイアログで受け付けるようにするとかにしないと。
0283nobodyさん2006/04/12(水) 23:38:10ID:???
くっそおおおおおおおおおお
俺のソースは汚いぞおおおおおおおおおおおおお
0284nobodyさん2006/04/13(木) 01:42:46ID:???
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に変えるとエラーを吐かなくなりますが配列で置換できないようで要求をみたせませんでした。
何かアドバイスくださいまし
0285nobodyさん2006/04/13(木) 02:01:28ID:???
>>284
$word が正規表現として解釈されることを前提に、適切にエスケープしたり書式を整えたりしてる?
$word の中身をここにコピペしてみたら?
0286nobodyさん2006/04/13(木) 02:07:48ID:???
一行のコードを複数行に分けて書きたい場合はどうしたらいいのでしょうか?
解像度が低いPCで書いているのですが、どうしてもよみづらくて・・。
0287nobodyさん2006/04/13(木) 02:13:11ID:???
>>284
$word[] = "/ABC/sUi";
$word[] = "/DEF/sUi";
$replacement[] = "えーびーしー";
$replacement[] = "でぃーえふ自慰";
$main_text = preg_replace($word,$replacement,$main_text);

ってこんな風に使うんじゃなかったっけ
0288nobodyさん2006/04/13(木) 02:21:23ID:???
>>286
「ここ、スペースあってもなくてもいいよね?」と感じる個所で改行
02892842006/04/13(木) 02:22:12ID:???
レスありがとうございます
とりあえずprint_rの結果をば
Array
(
[0] => テスト
[1] => テスト2
)
Array
(
[0] => http://www.exsample.jp/1
[1] => http://www.exsample.jp/2
)
ファイルは全てEUCです。
ブラウザのエンコードをeuc以外にしたら化けたので文字コードはおk、
エンコーディングが必要な文字列は(今はテストデータだからですが)無いようでした。
>>287
ごめんなさい、提示していただいたサンプルとの違いが読み取れなかったのですが…。添字も数字になりますから一緒ですか?
0290nobodyさん2006/04/13(木) 02:23:11ID:???
>>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も配列にせんと。
0291nobodyさん2006/04/13(木) 02:24:29ID:???
>>289
$replacementもprint_rしとけ
02922872006/04/13(木) 02:32:32ID:???
>>289
ガ━━(゚Д゚;)━━ン!
02932842006/04/13(木) 02:32:34ID:???
>>291

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

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

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

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

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

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

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

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

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

>>325
了解しました。

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

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

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

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

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

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

高木浩光流のセキュリティ対策ブログでも読んでみたらどうかな
03373262006/04/14(金) 16:25:00ID:???
>>333
ご指摘の通りですね。
盲点でした。
htmlspecialcharsは通すようにします。
03383262006/04/14(金) 16:32:28ID:???
>>336
ついでなので以下のようにしておきました。
// HTMLタグの無効化
function h($value) {
return trim(htmlspecialchars($value));
}
0339nobodyです2006/04/14(金) 17:25:47ID:NgSqFnSx
if(error){
die(require_once('error.html'));
}
これは、何か問題が出てきますか?
0340nobodyさん2006/04/14(金) 18:25:52ID:???
>>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文の方が早いと思われる。
03413402006/04/14(金) 18:28:11ID:???
みすった。

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

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

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

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

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

関数の中でも、0 と false どっちも返す可能性があるものがあるから、そういう判定の時にも気をつけて。
ex) strpos
0349nobodyさん2006/04/14(金) 23:25:17ID:dko7defd
>>344
俺も串作るときこれがわからなくて断念した
どうやるんだ
0350nobodyさん2006/04/14(金) 23:30:25ID:???
>>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データの入力有無など文字列の存在チェックにはこれを用いる。
03513472006/04/15(土) 00:44:06ID:mBWU3p7T
>348 350
すばらしい回答ありがとうございます。
人間リファレンスのようですね。
else条件のバリエーションをみるとなんとなく分かってきますね。
自分はなんとなくな理由でissetを多用してる気がします。
逆にstrlenはあまり使ってませんでした。
いずれもしっかりとした根拠なく使っていたので、これからは
意味合いをよく考えて適材適所な感じでいきたいです。
ありがとうございまいsた。
03523472006/04/15(土) 00:49:45ID:???
sage忘れたorz
>348 350
もう一度言いますがすばらしい回答ありがとうございます。
人間リファレンスのようですね。
else条件のバリエーションをみるとなんとなく分かってきますね。
自分はなんとなくな理由でissetを多用してる気がします。
逆にstrlenはあまり使ってませんでした。
いずれもしっかりとした根拠なく使っていたので、これからは
意味合いをよく考えて適材適所な感じでいきたいです。
ありがとうございまいsた。
03532872006/04/15(土) 00:59:45ID:???
>>352
そのレスの意味がわからない。
何故2回も。
もしかして未だに「sage」って書けば下がるとでも思ってるのか?
0354nobodyさん2006/04/15(土) 01:13:32ID:???
age
03553392006/04/15(土) 01:15:29ID:???
>>340-341
いろいろ問題があったようですね。
コーディングルール今度読み漁って見ます

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

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

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


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

考えてたらぱにくってきました・・・おいらはあふぉです orz
0370nobodyさん2006/04/15(土) 15:44:03ID:???
>>369
基本はエンコーディングしてからエスケープ。
でないと無関係な部分(漢字の後ろ1バイトに含まれる正規表現文字など)まで
エスケープされてまともに比較できなくなる場合がある。
0371nobodyさん2006/04/15(土) 16:03:51ID:???
file_get_contentsでUser-Agent等のヘッダを送ることはできないものか
0372nobodyさん2006/04/15(土) 16:06:05ID:FisXV/Qr
rawurlencode()で、スラッシュ(/)はエンコードしたくないのですが、そのような指定は
できるのでしょうか?
0373nobodyさん2006/04/15(土) 16:19:24ID:???
>>371
fsockopen使え
0374nobodyさん2006/04/15(土) 16:39:27ID:???
まだ初めて二週間
ヘルプでキーワード検索すれば大概の場合自分のやりたい事が実現可能かどうかわかるので、アルゴリズムの基礎を学んだ方が効率良い事に気がつきますた
プログラムっておもすろいですね
0375nobodyさん2006/04/15(土) 16:42:31ID:???
quotemeta()の逆の関数ないですかね
03763722006/04/15(土) 16:44:33ID:FisXV/Qr
自己解決しました。
str_replace()で'%2F'を'/'に置換したんです。ありがとうございました。
03773752006/04/15(土) 16:52:52ID:???
レスおせーなあ
おまえら素人が必死に考えてる間にyahooで自己解決。
0378nobodyさん2006/04/15(土) 17:00:41ID:???
>>375
んなもん探さなくても5秒で自分で作れるだろうが
0379nobodyさん2006/04/15(土) 17:03:07ID:FisXV/Qr
ワラタ
0380nobodyさん2006/04/15(土) 17:04:15ID:???
ID ヲ ダシテシマッタ...
0381nobodyさん2006/04/15(土) 17:10:20ID:???
>>371
できる。
0382nobodyさん2006/04/15(土) 17:39:13ID: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の中に全角カタカナを入れています。
0383nobodyさん2006/04/15(土) 17:48:21ID:???
google初心者か
0384nobodyさん2006/04/15(土) 17:57:37ID:1qLGoaV/
mbstringのせいかなと思いphpinfoをだしてみたのですが、こんなかんじです。

mbstring
Multibyte Support enabled
Multibyte string engine libmbfl
Multibyte (japanese) regex support enabled
Multibyte regex (oniguruma) version 3.7.1
0385nobodyさん2006/04/15(土) 17:58:16ID: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
0386nobodyさん2006/04/15(土) 22:12:07ID:269HnUWO
$a に入っている数値が15だとして、
$a に入ってる数値が 18未満だったら・・・というif文を作りたいのですが

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

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

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

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

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

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


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

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

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

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

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

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

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

>396
その本は気になっていて、ちょっと読んだのですが、
難しそうで自分にはまだ早いかなと思ってしまいました。
もう一回読んでみます。
0428nobodyさん2006/04/16(日) 22:20:45ID:???
>>425
ヒントは配列だ
04294252006/04/16(日) 22:24:23ID:U9is4hyD
>426
var_dampって初めて知りました。print_fとは違うんですか?
配列に格納されていたとしても、入っているもの(チェックされたもの)だけを
判別して、取り出すにはどうすればいいですかね?
0430nobodyさん2006/04/16(日) 22:35:23ID:???
>>427
ああ、アップロード以外に文字列データもあるってことね >htmlspecialchars
それなら分かる。
しかし、普通はhtmlspecialcharsはHTML出力時に使うものであってDBに入れるときに使うもんじゃないぞ。
DBに入れるときはmysql_escape_stringしとかなきゃダメだろ。
拡張子はいくらでも嘘を書けるから、むしろ1度削除して自前で判定した拡張子を付加してやった方がいい。
0431nobodyさん2006/04/16(日) 22:36:50ID:???
>>429
元々チェックボックスってチェックされたものしか送信されないような…。
後はそれぞれのvalueの内容を見て振り分けてるんじゃないの。
0432nobodyさん2006/04/16(日) 22:53:40ID: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
0433nobodyさん2006/04/16(日) 22:55:23ID:???
> echoさえ動きません。。。orz
もっとくやしく
0434nobodyさん2006/04/16(日) 23:12:53ID:ifz+1Zn4
PHP&MySQLの携帯対応のノーマル掲示板の(・∀・)イイ!スクリプトない?
0435nobodyさん2006/04/16(日) 23:25:10ID:???
>>432
そんなんありえるのか?
phpinfo()を確認したときのソースとechoを確認したときのソース見してみ
0436nobodyさん2006/04/16(日) 23:26:25ID:???
>>434
スクリプト探しはスレ違い
0437nobodyさん2006/04/16(日) 23:31:14ID:???
>>432
動かないって何も表示されないのか?それともエラー吐かれるのか?
そこんトコ白黒ハッキリさせようぜ兄弟!!
0438nobodyさん2006/04/17(月) 00:28:08ID:ivoWdWE5
>>436
どこに行けばいい?
0439nobodyさん2006/04/17(月) 00:53:31ID:qfnqXSjS
>>435
>>437
すいません
解決しました。
PHP.iniの設定をmbstring.internal_encoding = SJISにしたら直りました。

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

誰か、該当者やちゃってくれない?
0442nobodyさん2006/04/17(月) 08:52:22ID:???
今更だけど
>>418は、単にスクリプトの一部分を一括でコメントアウトしたかっただけではないのだろうか?
0443nobodyさん2006/04/17(月) 10:36:03ID:???
>>442
そうなんじゃないの?だから何?
0444nobodyさん2006/04/17(月) 12:48:59ID:Z/1jQgco
/* 〜 */
でいいだろ。ってことでしょ。
0445nobodyさん2006/04/17(月) 13:10:32ID:???
442のどこを解釈するとそうなるのかわからんw
0446nobodyさん2006/04/17(月) 13:59:46ID: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のオプション指定方法やライブラリのバージョン等を教えていただけないでしょうか?
0447nobodyさん2006/04/17(月) 13:59:47ID:???
>>405
また他人を騙るアホが出てきたな

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

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

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

--------------解決-----------------------------------
>>466さん他の方、質疑応答どうぞ。
0470nobodyです2006/04/17(月) 18:14:21ID: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);
}
?>
0471nobodyです2006/04/17(月) 18:15:24ID: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環境で読み込む良い方法はありませんでしょうか?
0472nobodyさん2006/04/17(月) 18:17:35ID:???
fgetcsvの代わりに手でごりごり書きましょう。
04734702006/04/17(月) 18:23:32ID:AOutErUa
>>472
やっぱそれしかないのかな・・・

0474nobodyさん2006/04/17(月) 19:02:12ID:???
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) {
}
04754742006/04/17(月) 19:04:56ID:qA+rYU42
途中で送信してしまいました。

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

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

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

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

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

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

前に「需要があるのなら私家版を公開しましょうか」という人がいたが
余り要望がなかったせいか、今のところそういう動きはない(と思った)
0488nobodyさん2006/04/18(火) 01:53:16ID:ufbV+k46
PATH_INFOの中に%2Fが入っていると404になるんですけど、
どうしてでしょうか?
0489nobodyさん2006/04/18(火) 07:24:42ID:???
>>488
urldecodeされるから
%252Fにしろ
0490nobodyさん2006/04/18(火) 10:43:26ID: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); // なぜかトリムが必要・・・
}

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

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



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

みたいな感じで
0493nobodyさん2006/04/18(火) 11:18:33ID:???
さらにIEのXML表示のように、制御構文単位で折りたためるEditorキボン
0494nobodyさん2006/04/18(火) 12:03:27ID:???
>>490
PHPというより、入力FORMでのHTMLの書き方に問題があると思うけどね。
04954902006/04/18(火) 12:50:33ID:???
>>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>';
}
(原因を削除してしまうのを回避するために、関数部分まるごとコピペしました)

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

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

あ。

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

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

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

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

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

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

ファイルのアップロードをPHPで実現しようとscriptを組みましたがファイル名によっては正常にアップロードされない場合があります。
アップロード前に適当な長い文字にリネームすると正常に動作するのですが、これは私の綴りに誤りがあるからなのでしょうか。
web上でphp scriptを配布されている方のscriptも走らせて見たのですが全く同じ現象で、どこが悪いのかさっぱりです。
何かバグや仕様などあるのでしょうか?
0502nobodyさん2006/04/18(火) 15:14:13ID:???
>>501
うpできないファイル名の例を挙げてみたら?
05035012006/04/18(火) 15:19:11ID: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];
0504nobodyさん2006/04/18(火) 15:21:28ID:ksf2FOYQ
アップロード処理の一部はこんな感じで書きました。
原因があるとしたら、ファイル名処理が怪しいですかね。
ケツから三行目にechoとか入ってますが、なんちゃってデバッグでちゃんと取得できているか試してた名残です(汗
0505nobodyさん2006/04/18(火) 16:04:58ID:???
>>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>
0506nobodyさん2006/04/18(火) 16:12:20ID:???
>>504
FILE_003.jpgのファイルサイズがやたらに大きいとかじゃないのか?
0507nobodyさん2006/04/18(火) 16:15:06ID:???
ファイルサイズ制限かタイムアウトだろうな。
05085012006/04/18(火) 16:39:57ID:???
たくさんのレス有難う御座います。
仰るとおりファイルサイズ制限によるものでした。
PHPマニュアルから関数を調べてサンプルコードをコピペした際、隠し要素のMAX_FILE_SIZEをそのままにしていたのが原因でした。
初歩的なミスで申し訳ないです。
テンパってると簡単なミスにも気づかないものですね........
0509nobodyさん2006/04/18(火) 16:53:20ID:???
>>490
$imageの後ろにゴミが付くのなら分かるが(これだと改行コードが付くだろう)
$catの方に付くってのはわからんなー
05104902006/04/18(火) 16:59:31ID:???
>>509
レスありがとうございます。
当面は「ゴミ付データをrtrimする」という場当たり対処で乗り切りますです。


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

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

0511nobodyさん2006/04/18(火) 18:30:12ID:???
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']; } ?>

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

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

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

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

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

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

文字コード「EUC」の改行コード「LF」に変換してからしか使えないし
何か、良い方法無いかな・・・
0519nobodyさん2006/04/19(水) 00:16:42ID: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 . "アップロードしました。");
}
0520nobodyさん2006/04/19(水) 00:43:16ID:???
例外を使おうと思ってんだけど、どういった場合に使うか迷う。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

$myArray_sum = array_sum($myArray)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hoge.@hogehoge.foo というメールアドレスが
RFC準拠だとも書いてあるぞw
0604nobodyさん2006/04/20(木) 00:44:56ID:???
>>603
DoCoMoにもお前みたいのがいるんだろう
0605nobodyさん2006/04/20(木) 01:00:15ID:???
俺は絶対メールアドレスの@より前の文字例にはドットを使わない。
いくら大丈夫だからって気持悪い。
0606nobodyさん2006/04/20(木) 03:59:38ID:???
クラスの勉強中に書きのようなコードを書いたんですが。
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;
?>
--------------------------------------------------

06076062006/04/20(木) 04:01:33ID: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>";
}
}
?>
--------------------------------------------------
正直試行錯誤しながら適当に書いたのですが、エラーの理由が分かりません。
表示をちゃんと出来ているのでエラーを黙らせるだけでもいいのですが・・。
0608nobodyさん2006/04/20(木) 04:05:41ID:???
>>607
class mainmenu の中に var $ex; って定義したらどう?
06096062006/04/20(木) 04:09:36ID:Rr5Gf5oo
>>608さん早速の返答ありがとうございます。

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

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

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

print $html;

?>

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

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

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

ちなみにOSはWindowsXPです。
0616nobodyさん2006/04/20(木) 07:15:59ID:A22L6gzy
>613
cronとは初めて聞いたのですが、どのようなものなのですか。
書き方を知ろうと思いググってみたのですが、
どう書いたらよいのか分からなくて。
良かったら、教えていただけませんか。
0617nobodyさん2006/04/20(木) 07:37:21ID:A22L6gzy
php.iniじゃなくって
phpinfo();で確認ってことじゃないの?
0618nobodyさん2006/04/20(木) 08:01:58ID:???
>>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でもいけばそういうツールあると思うけど。
06196132006/04/20(木) 08:05:34ID:???
>>616
べくたーにこんなんあったけど
http://www.vector.co.jp/soft/winnt/util/se232096.html
UNIXのcronみたいなの
0620nobodyさん2006/04/20(木) 09:58:55ID:???
>>558
お前、>>536で提示されてるリンク先をよく読んだか??

読んでもまだ意味がよく分からないようなら相当ヤバイので、
エンコード云々に限らず、Webプログラム開発自体を止めたほうがいいよ。
0621nobodyさん2006/04/20(木) 10:40:57ID:???
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を再起動しても設定が反映されません。

何か作業に見落としがあるのでしょうか?
0622nobodyさん2006/04/20(木) 10:55:22ID:???
>>618
マニュアルは読みました。
PHP Version は 4.4.2 です。
Registered PHP Streams はphp, http, ftp, compress.zlib で
httpはあります。
0623nobodyさん2006/04/20(木) 11:47:09ID:???
>>622
Win版のバグ。
使いたかったらdev版使うか4.4.1使え
0624nobodyさん2006/04/20(木) 12:15:50ID:???
>>623
4.4.1使ったら解決しました。ありがとう!
0625nobodyさん2006/04/20(木) 13:16:23ID:???
>>621
なぜ今さらFedoraCore3??
もう5まで出てるんだが、今さら3を使うメリットってあるのかな?
0626nobodyさん2006/04/20(木) 13:30:31ID: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");
をすれば登録することができるでしょうか。

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

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

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

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

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

> そういう設定ファイルの類ではないもので解決しそうなのですが
設定ファイルで解決した方が簡単だろうと思ってそっちを提示しただけ。
header()で解決するならそれでもいいよ。
0649nobodyさん2006/04/20(木) 22:46:59ID:???
>>644
SQL発行の一番最初に
set names ujis
06506442006/04/20(木) 23:02:21ID: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でも文字化けします。
0651nobodyさん2006/04/20(木) 23:12:09ID:???
>>650
スクリプトのコードは別にEUCでも構わないが、
出力はせめて統一しろよ…
ややこしいというならスクリプトも全部UTF-8にしる!
0652nobodyさん2006/04/20(木) 23:17:51ID:???
>>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で読み込んで出力する方法だと思う。
06536442006/04/20(木) 23:19:54ID:ryIl/Q77
>649
どうもです。いま試してみます。

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

0654nobodyさん2006/04/20(木) 23:25:46ID:6nVXOU85
RFC1738エンコードを実現したいのですが、URL以外の文字例をエンコードするのに
rawurlencode()は使わないほうが良いのでしょうか?
06556442006/04/20(木) 23:26:51ID: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にしてます。
0656nobodyさん2006/04/20(木) 23:31:18ID:???
>>655
> <p><?= mb_convert_encoding($hoge, "EUC-JP", "UTF-8") ?></p>
とかやれば直らないか?
0657nobodyさん2006/04/20(木) 23:32:13ID:???
>>653
> スクリプトのコードというのはエディタで指定するもので、
それはその通り。

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

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

3→3
2→2

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

少なくともこれらの区別・統一をきちんと図ってそれぞれ指定しなきゃダメだよ。
わかんなきゃ全部UTF-8に統一しとけ。
07006442006/04/21(金) 14:28:23ID: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文を書いているだけでも関係してきそうですが、意識したことがありません。

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


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

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

あ=> E3041

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

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

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

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

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

ヒント:つ「配列廻してさらに配列生成」
0718nobodyさん2006/04/21(金) 21:41:52ID:???
>>716
>>717
ありがとうございます。
試行錯誤してみます。
0719nobodyさん2006/04/21(金) 21:46:46ID:???
>>716
array_multisortは配列の1次元目でしか(配列の関係を崩さず)ソートできない。
この場合には、usort関数を使う必要があるだろう。
0720nobodyさん2006/04/21(金) 21:57:38ID:???
>>714
無理。そんなのできたら携帯用あぷろだとか出来てる。
0721nobodyさん2006/04/21(金) 21:58:05ID:???
>>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
)
これでいいんだろ?あほですか?
0722nobodyさん2006/04/21(金) 22:05:06ID:???
720 名前:nobodyさん[sage] 投稿日:2006/04/21(金) 21:57:38 ID:???
>>714
無理。そんなのできたら携帯用あぷろだとか出来てる。
0723nobodyさん2006/04/21(金) 22:16:31ID:???
722:nobodyさん :2006/04/21(金) 22:05:06 ID:??? [sage]
720 名前:nobodyさん[sage] 投稿日:2006/04/21(金) 21:57:38 ID:???
>>714
無理。そんなのできたら携帯用あぷろだとか出来てる。
0724nobodyさん2006/04/21(金) 22:18:05ID:???
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
無理。そんなのできたら携帯用あぷろだとか出来てる。
0725nobodyさん2006/04/21(金) 22:40:39ID:???
次は>>719によるスマートなusort関数HowToの実演です
0726nobodyさん2006/04/21(金) 22:57:53ID:q11WDkz8
>>720
あの・・・ありますけど・・・
0727nobodyさん2006/04/21(金) 23:03:54ID:???
携帯でphp開発をするという試みで
試験的にセキュリティ無視でfwrite()とフォームを使ってスクリプトを書いたら***.phpで保存するといったプログラムを組んだのですが、
Warning: Unknown(): SAFE MODE Restriction in effect. The script whose gid is 1000 is not allowed to access
というエラーを吐いてくるのですが
どう対処したらよいでしょうか
07287272006/04/21(金) 23:04:45ID:???
>>727は完成してうpしたスクリプトにアクセスしたときに出るエラーです
07297272006/04/21(金) 23:07:44ID:???
検索したらどうやら所有者が apache となってアクセスできないみたいですね
対処は無理なのか・・・・
0730nobodyさん2006/04/21(金) 23:07:45ID: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\">";
なんだけど・・・
0731nobodyさん2006/04/21(金) 23:08:36ID:???
せめてIDくらい変わるまで待つなり隠すなりしろよ
どっちにしろ無駄だけど
0732nobodyさん2006/04/21(金) 23:14:51ID:???
>>729
セキュリティ的にやばすぎるから無理だろ
URL拾われただけでその鯖あぼーんやで
0733nobodyさん2006/04/22(土) 00:31:56ID:???
XSS対策についてなんですが
具体的にはユーザー情報を格納したcookiesを発行なんかしちゃうと
ほかのサイトでも読み出しできてしまう
ということなんでしょうか?

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

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


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

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

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

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

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

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

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

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

宜しくお願いします。
0744nobodyさん2006/04/22(土) 18:07:05ID:???
>>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 );
// これだ!
07457422006/04/22(土) 18:24:54ID:???
>>744
出来ました!こういう使い方があるんですね・・。
よくわかっていないので、関数を調べながら理解出来るようにします。
ありがとうございました。
07467432006/04/22(土) 18:27:38ID:3kTedSI2
自己解決、stripslashes()という関数があった('A')


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

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

> クエリでいいじゃん。。
すみません、この場合のクエリがわかりません。。。
(データベースのクエリ?じゃないですよね。。)
0751nobodyさん2006/04/22(土) 19:13:13ID:UThkpkc+
<form>
0752nobodyさん2006/04/22(土) 19:40:49ID: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

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

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

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

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

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

あきらめて寝ます。おやすみなさい。
07587532006/04/22(土) 21:37:57ID:???
やっぱり思いっきり記載ミスでした。
一人でバカ騒ぎしてもうしわけないです。
07597522006/04/22(土) 22:02:27ID: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
何か良い方法を知っていたら教えてください。
07607522006/04/22(土) 22:08:05ID:1mp5s2wD
良い例が見つかりました。

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

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

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

ちなみにmb_convert_encoding()でOKだクソ野郎
デフォルトでは使えないようになってるけどな
そこまで教えられんよググレカレー
07657522006/04/23(日) 07:13:43ID: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()の使い方が間違ってるんだろうか
0766nobodyさん2006/04/23(日) 07:35:05ID:???
>>765
>「あいうえお」が「%3F%3F%3F%81%91%3F%3F%3F%3F%3F%81N」のようになってしまいます(「???¢?????¨」に文字化けする)

よく分からん。どっちになってるんだ?
0767nobodyさん2006/04/23(日) 07:44:52ID:???
>>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>
07687672006/04/23(日) 07:50:14ID:???
submitわすれてた
<input type="submit" />
0769nobodyさん2006/04/23(日) 07:51:00ID:???
お前の優しさに乾杯
0770nobodyさん2006/04/23(日) 07:51:46ID:???
ただ・・・ただ俺なら変数名には大文字は使わないぜ(・∀・)
07717672006/04/23(日) 07:54:35ID:???
>>770
スマソ。不慣れだったので間違えた。
$enc_listとか$enc_nameって名前にするほうがpear標準だったっけ
0772nobodyさん2006/04/23(日) 07:58:24ID:???
いや、変数名には基本的に大文字は使わないものじゃないか?
知らない奴も居るだろうからまとめてみよう。勘違いがあったら教えてちょうだい

変数名:全て小文字。単語の区切りは「_」 例[ hoge_hoge ]
定数名:全て大文字 例[ HOGE ]
関数名:基本的に小文字だが、単語の区切りは大文字 例[ hogeHoge ]
0773nobodyさん2006/04/23(日) 08:21:12ID:???
Javaのコーディング規約では変数名も関数名(というかメソッド名)と同じで単語の区切りは大文字だから、その癖でそのままやってしまった。
pearのコーディング標準では変数名の単語の区切り方に関しては触れてないっぽいね。それ以外は>>772の通りだけど。
pearの他にもphpのコーディング規約みたいなのあったっけ?
0774nobodyさん2006/04/23(日) 08:38:39ID:???
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
(^ω^;)・・・
0775nobodyさん2006/04/23(日) 08:55:52ID:???
コーディング規約って言うか、プログラマとしてのデファクトスタンダードじゃね?>>772
0776nobodyさん2006/04/23(日) 09:25:42ID:???
>>775
そうなの?ソースキボンヌ。
ちなみに「プログラマとしての」と名打つならJavaの反例出すけど、この変数名の規約はどうとらえられてるの?デファクトスタンダード的には。
http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html#367

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

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

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

登録しているファイル名を出力するのはわかるのですが、画像のファイル名自体を
取得して〜というのは可能なのか?っと疑問に思いまして。(単に出来ないのですが・・・
0788nobodyさん2006/04/23(日) 17:46:37ID:???
glob('*.jpg')
0789nobodyさん2006/04/23(日) 18:12:30ID:???
文字コード、日本に限っていえば
Shift_JIS(sjis-win)
EUC-JP(eucjp-win)
iso-2022-jp(jis…だけど厳格にはすこしちがう)
utf-8
について、徹底的に学びましょう
07907872006/04/23(日) 18:18:13ID:???
>>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>";
}
?>

ありがとうございました。
0791nobodyさん2006/04/23(日) 18:29:39ID:???
>>790
その場合ならforeach使っとけ
0792nobodyさん2006/04/23(日) 18:36:08ID:???
foreach最強
0793nobodyさん2006/04/23(日) 18:37:13ID:T/zlG2dE
http://から始まる画像ファイルのサイズを取得したいのですがどうやったらいいですか?
0794nobodyさん2006/04/23(日) 18:46:06ID:m0Rs4MP5
strlen(file_get_contents('URI'));
0795nobodyさん2006/04/23(日) 18:50:57ID:???
ありがとうございますできました
0796nobodyさん2006/04/23(日) 19:30:53ID:???
phpでお金持ちになりたいんですけどどうすればいいですか
0797nobodyさん2006/04/23(日) 19:33:58ID:???
>>794
URIって何の略??
0798nobodyさん2006/04/23(日) 19:35:00ID:???
>>796
ヒント:for
0799nobodyさん2006/04/23(日) 19:45:34ID:???
>>797
http://www.kanzaki.com/docs/html/htminfo-uri.html#uri
0800nobodyさん2006/04/23(日) 20:01:24ID:???
レッツ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"これはダメってことですか?
どうすれば動くようになるでしょうか
0801nobodyさん2006/04/23(日) 20:06:08ID:???
$actって変数がどこにも定義されてもないし、スーパグローバル変数でもないから
そんな変数ありませんよって言われてるだけじゃないの?
ってか、値が無いのに何で比較してるんだろ?
0802nobodyさん2006/04/23(日) 20:14:46ID:???
$act = "envset";
0803nobodyさん2006/04/23(日) 20:25:14ID:???
>>800
レッツPHPは過去の遺物だ。
今は参考にするべきではない
0804nobodyさん2006/04/23(日) 20:25:22ID:???
レッツのスクリプトは$_GET['hoge']を使わずにextract($_GET)して$hogeとして使う方向だから
該当個所は多そう。
0805nobodyさん2006/04/23(日) 20:38:32ID:???
perlのガン細胞 KENT
PHPのガン細胞 レッツ
0806nobodyさん2006/04/23(日) 20:55:44ID:???
extractの使い方がいまいち分からない俺は負け組み
0807nobodyさん2006/04/23(日) 21:48:10ID:???
>>772
変数名は間違い。
区切りに_は使わない。

例: anApple

定数名の区切りは「_」

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

#!/usr/local/bin/php

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

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

EOF;

exit;

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


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

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

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

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

と出力したいのですが、むりでしょうか?
0856nobodyさん2006/04/24(月) 23:44:10ID:???
>>855
意味がわからん。
「<br>」をそのまま出力したいってこと?
0857nobodyさん2006/04/24(月) 23:58:28ID:???
「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);
?>
0858nobodyさん2006/04/24(月) 23:59:47ID:UzNg/65t
>>856
<br>に限ったことではないのですが
例えば「make.php」が

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


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

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

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

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

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

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

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

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

を置換したく、

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

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

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

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

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

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

$a["nurupo"]=4;

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

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

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

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

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

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

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

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

広告挿入の処理に引っかかって軒並み更新にされちゃうサイトとかあったり。
0951nobodyさん2006/04/27(木) 14:55:35ID:???
>>945
ファイルをそれぞれ作れば?
0952nobodyさん2006/04/27(木) 15:43:39ID:???
HTMLから内包する画像から何から一切合財を一括で取得して
tarで固めてMD5ハッシュ値比較保存
ってのはどうだ?
HTMLの構文解析やらアドタグの排除やら面倒な事山積みだけど。
0953nobodyさん2006/04/27(木) 15:52:56ID:???
>>952
1サイトのチェックだけで10分とかかかりそうだw
そこを短時間で一気に行くとサイト側が負荷かかりすぎで死ぬし。
こういう処理で、平気で10とか並列でアクセスかけるバカが多くて困る。
0954nobodyさん2006/04/27(木) 16:01:46ID:???
$last = getlastmod;
if(今の時間>$last>今の時間-3600)
じゃだめなの?
0955nobodyさん2006/04/27(木) 16:14:50ID:???
>>954
流れを読まない奴
0956nobodyさん2006/04/27(木) 16:43:29ID:???
$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回目の名前がセットされている状態がいいのですが、
何か方法はありませんでしょうか?
09579562006/04/27(木) 16:44:38ID:???
すみません。ちょっと訂正です。
<input type="text" size="10" value="<?php echo $_COOKIE["namecookie"]; ?>">

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

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

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

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

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

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

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

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

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