【PHP】下らねぇ質問はここに書き込みやがれ 55
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2007/09/29(土) 18:35:56ID:YlkpEUW6PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 54
http://pc11.2ch.net/test/read.cgi/php/1189309377/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0002nobodyさん
2007/09/29(土) 18:37:31ID:YlkpEUW6【PHP】下らねぇ質問はここに書き込みやがれ 53
http://pc11.2ch.net/test/read.cgi/php/1188047468/
【PHP】下らねぇ質問はここに書き込みやがれ 52
http://pc11.2ch.net/test/read.cgi/php/1186794483/
【PHP】下らねぇ質問はここに書き込みやがれ 51
http://pc11.2ch.net/test/read.cgi/php/1185521566/
【PHP】下らねぇ質問はここに書き込みやがれ 50
http://pc11.2ch.net/test/read.cgi/php/1184143801/
【PHP】下らねぇ質問はここに書き込みやがれ 49
http://pc11.2ch.net/test/read.cgi/php/1182794620/
【PHP】下らねぇ質問はここに書き込みやがれ 45 (※実質48)
http://pc11.2ch.net/test/read.cgi/php/1180181033/
【PHP】下らねぇ質問はここに書き込みやがれ 47
http://pc11.2ch.net/test/read.cgi/php/1180181033/
【PHP】下らねぇ質問はここに書き込みやがれ 46
http://pc11.2ch.net/test/read.cgi/php/1178955837/
【PHP】下らねぇ質問はここに書き込みやがれ 45
http://pc11.2ch.net/test/read.cgi/php/1178955768/
【PHP】下らねぇ質問はここに書き込みやがれ 45
http://pc11.2ch.net/test/read.cgi/php/1177635762/
【PHP】下らねぇ質問はここに書き込みやがれ 44
http://pc11.2ch.net/test/read.cgi/php/1176364487/
【PHP】下らねぇ質問はここに書き込みやがれ 43
http://pc11.2ch.net/test/read.cgi/php/1175368910/
【PHP】下らねぇ質問はここに書き込みやがれ 42
http://pc11.2ch.net/test/read.cgi/php/1174217841/
【PHP】下らねぇ質問はここに書き込みやがれ 41
http://pc11.2ch.net/test/read.cgi/php/1173163186/
0003nobodyさん
2007/09/29(土) 18:38:21ID:YlkpEUW6■本家マニュアル http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル http://pear.php.net/manual/ja/
■メーリングリスト http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル http://framework.zend.com/manual/ja/
(以下英語)
■Smarty http://smarty.php.net/
■Zend本家 http://www.zend.com/
■Zend Framework http://framework.zend.com/
■php | architect http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん
2007/09/29(土) 18:38:55ID:YlkpEUW61.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→ http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
0005nobodyさん
2007/09/29(土) 18:39:41ID:YlkpEUW6→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
0006nobodyさん
2007/09/29(土) 18:51:13ID:???/: /: : : /: / : : : : :://://: :∧ : : : :|: : : : | 〉
l: |: : : |: /: : : : :/ /" /: :/ \: : :.|: : : : | /
|: :ハ: : : |: |二ニ==ェニフ´ /, へ、____>':「: |: : : レ'
ヽ:|∧: : |: |く/フこ^ヽ\ / / _ェ‐‐、=、`|: : |: : l: :|
∧ヘ: : |/ |r^{:::}゚ | " |^{;:::}r^} 〉 |: :/: : l: :|
/: : |\: |ヽ >ー‐' ヾ_こ_ソ /:/: : :/ /|
/ : : {. \ヽ ::::::: ヽ `ー―' /イ: :/ /: |
./: : : ∧ ト > , へ、___ :::::/ /: ///: l: |
: : : i^ヽ *\ / /´ :::::ヽ // ノ/: : l: | 下らねぇ質問はここに書き込みやがれ
: : /レ⌒ヽ、. ヽ、 ヽ、_ :::ノ , イァー‐く`¬ : l::| って言ってるですぅ。
: / / / ,へ. l| ` 、  ̄ ̄ ̄, ' rーく \. |` ト、:.l::l
::/ .| ' / /ヽ| >= ァ  ̄ /^ヽ ` ヽ. | 〈 ヽ::|
: / | / | /⌒/L「\. | ./ / | |
0007nobodyさん
2007/09/29(土) 22:12:08ID:m/9bviMMdat.txtにaというテキストが入っていたとしてこれを取得してaと同じならば
等しい、それ以外ならば等しくないと表示させたいのですがうまく行きません。
何か良い方法はありますか?
$fp=@fopen("dat.txt","r") or die("ファイル読み込みオープンエラー");
while(!feof($fp)){
$line=fgets($fp);
print $line."<br>";
if("a"==$line){
$error="等しいです";
}else{
$error="等しくありません";
}
}
fclose($fp);
0009nobodyさん
2007/09/29(土) 22:39:46ID:m/9bviMMアドバイスありがとうございます。
早々アドバイス通り比較の部分にも改行コードなどを付加する等の処理を施しましたが、上手くいきませんでした。
ウインドウズ環境なので改行コードは\r\nにしました
if("a"."\r\n"==$line){
$error="等しいです";
}else{
$error="等しくありません";
}
0010nobodyさん
2007/09/29(土) 22:41:00ID:???0011nobodyさん
2007/09/29(土) 22:41:37ID:???<?php echo '等し'.(@file_get_contents('dat.txt')=='a'?'いです':'くありません');
0013nobodyさん
2007/09/29(土) 22:50:34ID:???echo bin2hex($line);
を見てみ。
ファイルを読み込むのは、file_get_contents() でもできるよ。
文字列比較は、strcmp() を使う方がいいかな。
0014nobodyさん
2007/09/29(土) 22:55:14ID:vw2Lts3b$errorの中身を表示するコードが書かれていないからです。
0015nobodyさん
2007/09/29(土) 22:56:39ID:vw2Lts3b0016nobodyさん
2007/09/29(土) 22:57:44ID:m/9bviMMprint $error;が抜けておりました。しかし、これを付け加えても
等しくありませんとなってしまいます。
file_get_contents()で検索してみたのですが、これはファイル内容を
全て読み込む関数でよろしいですか?
その場合、テキストに改行して書いてあった場合その通りに表示するには
またこれ用の関数があるのでしょうか。。。
0017nobodyさん
2007/09/29(土) 23:00:29ID:vw2Lts3b> 文字列比較は、strcmp() を使う方がいいかな。
なぜですか。
0018nobodyさん
2007/09/29(土) 23:01:13ID:YnYts4Cn・まずファイルの中身を読み取って出力させる
・次に1行ずつ文字列と比較して真偽を見る
とか順序だててやらないとウンコ漏らすことになる
0019nobodyさん
2007/09/29(土) 23:03:03ID:m/9bviMMdat.txtにa一文字だけ書いて比較すると正常に等しいとなるのですが、
a
b
c
d
e
としてdat.txtに書き込んだ場合、aがあるにも関わらず等しくないとなるのです。
0020nobodyさん
2007/09/29(土) 23:05:14ID:???0021nobodyさん
2007/09/29(土) 23:05:41ID:YnYts4Cnforeach ($logs as $log) {
$log = rtrim($log);
if ($log == 'a') {
$print = '等しい';
} else {
$print = '等しいわけない';
}
}
print $print;
でやってみて
0022nobodyさん
2007/09/29(土) 23:07:00ID:m/9bviMMそれも試してみましたが、うまくうごきませんでした。
printでも改行コードまでは表示されないので、どう比較していいか悩んでいます
0023nobodyさん
2007/09/29(土) 23:08:02ID:m/9bviMM丁寧なアドバイスありがとうございます。
早々試してみます。
0024nobodyさん
2007/09/29(土) 23:08:19ID:???echo bin2hex($line);
を見たら改行コードが入ってるのが分かるんだけどな。
'0a' とかみたいに16進数で表示されるから。
0026nobodyさん
2007/09/29(土) 23:13:05ID:m/9bviMMありがとうございます。無知ゆえ、改行コードが16進数で表示されるとはわかりませんでした。
そちらも視野に入れて色々じっけんしてみます。
0027nobodyさん
2007/09/29(土) 23:16:24ID:m/9bviMM改行コードは見えたのですが、行数によってコードが違うので比較できそうにないのですが、
これは比較の方法があるのですか?
0028nobodyさん
2007/09/29(土) 23:18:17ID:m/9bviMMためしてみましたが、やはり19と同じ模様です。
一行だけaが記述されていると等しくなるのですが、
a
b
c
とかってして読み込んで比較すると等しくなりませんでした
0029nobodyさん
2007/09/29(土) 23:18:25ID:???0030nobodyさん
2007/09/29(土) 23:18:43ID:???今回の場合だといいかもしれないけど、PHPだと、
if ('2a' == 2)
が真になってしまうから。
=== を使うか strcmp() を使う癖を付けないと危険。
0031nobodyさん
2007/09/29(土) 23:19:55ID:???> が真になってしまうから。
なにこの糞言語www
0032nobodyさん
2007/09/29(土) 23:20:11ID:vw2Lts3b$printの中身を表示するコードがforeachループに外にあるのは間違いでしょう。
0033nobodyさん
2007/09/29(土) 23:24:10ID:???以下の記事に詳しく書いてある。
ttp://d.hatena.ne.jp/gallu/20061108/p1
0034nobodyさん
2007/09/29(土) 23:24:53ID:m/9bviMM21のアドバイスでも32のアドバイスもよいと思いますが、私は等しくないと何度も付加したくないので
(foreachの中にプリント入れると全ての処理に対して等しくないをつけてしまう)21のアドバイス
で納得しました
0035nobodyさん
2007/09/29(土) 23:28:38ID:m/9bviMMへぇーこれは驚きですね。今までならってきたifの概念からすると比較できそう
にないとおもってしまいますが、こういう事実もあるのですね。
0036nobodyさん
2007/09/29(土) 23:28:57ID:vw2Lts3bそうですね。
1つ気を付けることは、 ===演算子で比較した場合は、 同値の時にTRUEを返すのに対し、
strcmp()関数を使った場合は、 同値の時にFALSEと評価される0を返すということです。
同値かどうかを判断するなら、 ===演算子の方が分かりやすいでしょう。
0037nobodyさん
2007/09/29(土) 23:31:02ID:YnYts4Cnスタックしてた
脳内で
吊って来る
0038nobodyさん
2007/09/29(土) 23:35:00ID:vw2Lts3b$printの中身を表示させるコードをforeachループの外に書いてしまうと、
最後の行が "a" と等しいか等しくないかしか分かりませんよ。
>>21の言いたいことは、 trimを使って改行を削除せよということでしょう。
0039nobodyさん
2007/09/29(土) 23:35:39ID:m/9bviMM例えばパスワード登録フォームってありますよね。他の人と同じパスワードを登録
しようとすると、現在そのパスワードは使用中ですとかって出ますよね。
そういうようなプログラムを実現したいのですが、素人目の判断ではなく実際の現場では
どのように記述されているのでしょうか
0040nobodyさん
2007/09/29(土) 23:37:03ID:m/9bviMMどうやら私の解釈がまちがっていたようです。失礼いたしました
0041nobodyさん
2007/09/29(土) 23:40:58ID:m/9bviMM0042nobodyさん
2007/09/29(土) 23:41:47ID:???> 実際の現場では
実際の現場?
パスワードを入力されたらそれをMD5などでハッシュ化しデータベースに保存。
チェック時は入力されたパスワードを再度ハッシュ化しデータベースを検索。
0043nobodyさん
2007/09/29(土) 23:43:11ID:m/9bviMMやっぱりパスワードとか扱う場合はテキストファイルじゃなくてデータベース使うんですね。
自分はMySQL入れています
0044nobodyさん
2007/09/29(土) 23:45:09ID:???ほとんどの場合データベースを使う。
テキストファイルはログ吐くぐらいにしかつかわない。
0045nobodyさん
2007/09/29(土) 23:47:40ID:???if(strstr($line, "a") === false){
print "等しくない";
} else {
print "等しい!";
}
今回は一文字だけど特定の単語が含まれるかどうかの判定もできる
0046nobodyさん
2007/09/29(土) 23:49:28ID:m/9bviMMみなさんありがとうございます。今日はもう休みますが、明日また続きを
やりたいとおもいます。
0047nobodyさん
2007/09/29(土) 23:55:23ID:???0049nobodyさん
2007/09/30(日) 01:22:21ID:???>>19
実はprint $error;をループの外に置いてて
ファイルの最後の行の結果で上書きされてた
ってオチじゃないの
0050nobodyさん
2007/09/30(日) 01:35:44ID:vTnMvhRC1スレッド1ファイルにするのと、1ファイルに全部まとめるのは
どちらがいいでしょうか?
ファイルが大量にあると鯖の動作にも影響でそうな気もしますし、
ログを1つのファイルにまとめると読み込むときに負荷が気になります。
0051nobodyさん
2007/09/30(日) 01:55:03ID:???0053nobodyさん
2007/09/30(日) 02:56:59ID:???一般的な個人のページだと、
スレッド式にしたところで年間に書き込まれる数なんて合計100レスいくかいかないだろ?
だからあんまこだわらなくてもいいんじゃないかね。
とはいえやっぱファイルを分けたほうが管理しやすいだろう。
保守性を考えた組み方をしたほうがいいよ。
まぁDBを使えないとか特殊な環境以外ではDBでやったほうがいいけど。
0054nobodyさん
2007/09/30(日) 03:25:14ID:???そのスレッドって各スレをageたりsageたりできるの?
1ファイルでやるとスレの順番の入れ替え表示は手間になるよ。
ログファイルを丸ごと配列に読み込める程度の量なら簡単だけど、
かなり分量が増えることを想定してるんでしょ?
あと、レスデータってスレごとにまとめるの?それとも行の頭にスレNo.でもつけて
単純にファイル末尾に付け足して表示のときにスレごとに集めるの?
レスの書き込みはやっぱ末尾にappendでやった方が簡単だし
出力時間が短くなる分、ファイルのクラッシュ率も低くなるけど、
スレのデータがファイル中に分散してると表示に手間食うよ。
0055nobodyさん
2007/09/30(日) 15:38:25ID:aR8s0UFr$ ./hoge.php
hello
Abort trap (core dumped)
hoge.phpの中身は以下のとおりです。
#!/usr/local/bin/php
<?php
echo "hello\n";
?>
"Abort trap (core dumped)"が出ないようにするためにはどうすればよいのでしょうか?
OSは、
$ uname -r
5.4-RELEASE-p6
です。
よろしくごきょうじゅ願います。
0056>>55
2007/09/30(日) 15:53:22ID:aR8s0UFrFreeBSD
となります。
0057nobodyさん
2007/09/30(日) 16:04:23ID:hOfwjY6s皆さん昨日はありがとうございます。今日も挑戦したいとおもいます。
$logs = file("dat.txt");
foreach ($logs as $log) {
$log = rtrim($log);
print $log;
if ($log == 'd') {
$print = '等しい';
} else {
$print = '等しいわけない';
}
}
print $print;
rtrimが入っているので前後の改行・空白は取り除けているはずなのですが、
比較するとどうも等しくないと出力されてしまう症状は変わりませんでした。
引き続きアドバイスをよろしくお願いいたします。
rtrimでは取り除けない改行文字が存在するということなのでしょうか?
0058nobodyさん
2007/09/30(日) 16:10:01ID:???0059nobodyさん
2007/09/30(日) 16:11:10ID:???rtrimって後ろの空白文字だけ削除でしょ。文頭に空白文字入ってるとか。
print "[".$log."]\n";
で$logの中身見れば?
もしくは$logの中身が'd'じゃなかったりw
0060nobodyさん
2007/09/30(日) 16:14:30ID:hOfwjY6sはい。いまちょっと進展があって理由はわからないのですが、なぜかこうすると正常に判断されます。
if(isset($_POST["md5"])){
$passwd=crypt($_POST["md5"]);
$input=htmlspecialchars($_POST["md5"]);
}else{
$_POST["md5"]="";
$input="";
$passwd="";
}
$error="";
print $input."<br>";
print $passwd."<br><br>";
$dat=$input."\r\n";
$file_handle = fopen("dat.txt", "r");
while (!feof($file_handle)) {
$line = fgets($file_handle);
echo $line."<br>";
if($line==$input){
$error="error";
}
}
fclose($file_handle);
if(!$error){
$file=@fopen("dat.txt","a") or die ("ファイル書き込みオープンエラー");
flock($file,LOCK_EX);
fwrite($file,$dat);
flock($file,LOCK_UN);
fclose($file);
}else{
print "使用中のパスワードです";
}
0061nobodyさん
2007/09/30(日) 16:15:48ID:hOfwjY6s失礼しました。両方の空白はtrimでした。
0062nobodyさん
2007/09/30(日) 16:18:08ID:hOfwjY6sdat.txtとひかくして等しくなければ書き込み処理を行うとすると正常に動作します。
0063nobodyさん
2007/09/30(日) 16:56:33ID:hOfwjY6s私の書いたものは動き的には21と大差ないとおもうのですが、なぜ21の文法で動かないのか理解出来ませんでしたが。こうしたら等しいと出ました。
dat.txtに改行して
a
b
c
d
e
f
g
と入れます。そしてcを比較すると等しいですと出ました。
$dat="";
$fp = fopen("dat.txt", "r");
while($str = fgets($fp)) {
// 文字列比較
$str = trim($str);
if ( $str == "c" ) {
$dat="等しいです<br>";
}
}
fclose($fp);
print $dat;
0064nobodyさん
2007/09/30(日) 17:00:01ID:hOfwjY6shttp://ml.php.gr.jp/pipermail/php-users/2004-April/021654.html
fileで一行ずつ取得しようが、fgetsで取得しようが動きは同じだと考えていたのですが
取得したときになにかあったのでしょう。(それが何かはわかりませんでしたが)
0065nobodyさん
2007/09/30(日) 17:35:07ID:Uem6Q7XY例で言うなら
<?php define("NAME","test") ?>
<html>
<body>
${NAME}
</body>
</html>
みたいな感じで。
0066nobodyさん
2007/09/30(日) 17:35:09ID:???>>21の、rtrimをtrimに、上書き防止用にelse文以下を削除、してもダメだった?
$msg="";
$logs = file(ファイルへのパス);
foreach ($logs as $log) {
$log = trim($log);
if ($log == 'a') {
$msg = '等しい';
}
}
print "[".$msg."]<br>\n";
>>18氏の書いてるように段階的にとにかく出力させて確認した方がいい気がする
0067nobodyさん
2007/09/30(日) 17:40:48ID:???つまりスペースを使ったパスワードに問題になる
0068nobodyさん
2007/09/30(日) 17:45:27ID:hOfwjY6sはい。66の通り試してみたのですがうまく動作しませんでした。
とりあえず、動いたので今度は暗号化したものをテキストファイルに書き込んで
パスワードの妥当性チェックに挑戦したいと思います。
0070nobodyさん
2007/09/30(日) 17:53:27ID:hOfwjY6sこれでパスワードをmd5ハッシュで暗号化してテキストファイルにかきこみ、これを比較することで使用中のパスワードか比較することができました。*まだサニタイズ等してないので当然このままのスクリプトでアップすることはできませんが。。。
//pass.phpから比較対象のパスワードを取得
//もしこのファイルが直接読み出された場合に$_POST["md5"]はなにもはいってないので初期化
if(isset($_POST["md5"])){
$pass=$_POST["md5"];
}else{
$_POST["md5"]="";
$pass="";
}
//変数の初期化
$error="";
//テキストファイルからデータを一行ずつ読み込み
$fp = @fopen("dat.txt", "r") or die("読み込みファイルオープンエラー");
while($str = fgets($fp)) {
// 文字列比較(trimで空白を削除)
$str = trim($str);
if ( crypt($pass,$str) == $str ) {
$error="error";
}
}
fclose($fp);
//もし$errorにerrorが入っていればそのパスワードは使用中。それ以外ならば使えるパスワード
if($error){
print "現在使用中のパスワードです<br><a href=\"pass.php\">戻る</a>";
}else{
//if条件を満たしていればファイルにパスワードを書き込み
$fp=@fopen("dat.txt","a") or die("追加書き込みオープンエラー");
fputs($fp,crypt($pass)."\r\n");
fclose($fp);
print "パスワードが登録されました<br><a href=\"pass.php\">戻る</a>";
}
0071nobodyさん
2007/09/30(日) 18:05:02ID:???$_POSTの$pass代入時にtrimしないと$str = trim($str)と整合取れない可能性あり。
$pass=trim($_POST["md5"]);
それと$_POST に代入させるのは止めた方がいい。
以後使用するなら移した$passで。
あと多分判ってるだろうけどパス未設定ならメッセージ出力して終了
0072nobodyさん
2007/09/30(日) 18:23:20ID:hOfwjY6sおおっと、ナイスアドバイスありがとうございます。
$_POSTの$pass代入時にtrimしないと$str = trim($str)と整合取れない可能性あり。
$pass=trim($_POST["md5"]);
の件については知りませんでしたので助かりました。
0073nobodyさん
2007/09/30(日) 19:03:56ID:hOfwjY6s勿論このままだと空白もパスワードとして登録されてしまいすので、空白は入らないように
しますよ。
0074nobodyさん
2007/09/30(日) 19:05:07ID:???その程度のスクリプトでcoreを吐くようじゃ環境に依存しているんで
自分で原因を追究するしかないんじゃないの?
#つか、これだけでわかる奴いるのかよ…
0075nobodyさん
2007/09/30(日) 19:18:44ID:???動作を把握できてなさ具合といい、プログラミングの基礎を固めるところから
やらないと後々苦労するんじゃないかと他人事ながら心配になる
0076nobodyさん
2007/09/30(日) 19:41:18ID:a9TKVxASphpでcURLというのが使えないんです。
どうやってインストールするのでしょうか?
0077nobodyさん
2007/09/30(日) 19:51:53ID:???>>1にも書いてあるけどマニュアルをまず読め
該当するページを読め
http://www.php.net/manual/ja/ref.curl.php
0078nobodyさん
2007/09/30(日) 20:56:19ID:a9TKVxASxamppでインストールされたのでphpのコンパイルって
どうやってやるんだろ?みたいな。
0079nobodyさん
2007/09/30(日) 21:36:10ID:4K+ZGFPDGDでは出来ませんでした。
imagemagickはレンタル鯖なので使えません。
教えてください。お願いします。
008179
2007/09/30(日) 21:43:46ID:4K+ZGFPDすみません。もうできねえやってあきらめて試したスクリプト消してしまいました・・・
せめてどの関数使うかだけでも教えていただけないでしょうか?
0082nobodyさん
2007/09/30(日) 21:52:06ID:???0083nobodyさん
2007/09/30(日) 21:52:32ID:???内容まったく見てないけど、こんなんでてきた
ttp://www.dabun-doumei.com/topix/imageConvertSource.php
008479
2007/09/30(日) 22:16:32ID:4K+ZGFPD0085nobodyさん
2007/09/30(日) 23:28:06ID:???http://www.php.net/manual/ja/ref.curl.phpから抜粋
Win32 ユーザへの注意: このモジュールを Windows 環境で使用可能とするには、
libeay32.dll および ssleay32.dll が PATH の通った場所に存在する必要があります。
これが理解出来ない頭の構造ってのを見てみたい
PHP本家のwindows用配布物に両dllは含まれているのに何故コンパイル?
xamppには含まれないならそんな物に頼るな
0086nobodyさん
2007/10/01(月) 10:43:50ID:nNJ7ChTVfopen("php://stdin", "r")
で、メールの内容を解析できますが、これは一体何なんでしょ?
メール送信しなくただ単にスクリプトを実行させただけでは、
中身が空っぽです。
ただ単にHTTPリクエストを受けたときに、その受けた内容を一時的に保存しているのでしょうか。
(それだと、普通にアクセスしても情報が残りそうですが・・・。)
0087nobodyさん
2007/10/01(月) 10:50:10ID:i+Hfwjq6それは標準入力取得。
スクリプトをSSHとかからコマンドで引数に何か与えて実行してみればわかる
php ./test.php "aiueo"
とかやれば"aiueo"が渡される
0088nobodyさん
2007/10/01(月) 10:52:51ID:nNJ7ChTVって書いたらPHPが動かなくなったorz
0090nobodyさん
2007/10/01(月) 12:16:45ID:???0092nobodyさん
2007/10/01(月) 12:53:17ID:???情報が欲しいログインするタイプのサイトへ
phpで自動化しようと思ったんですけど…
返ってきたHTTPレスポンスが
------------------------------
…サインインするには JavaScript が必要です
このブラウザでは JavaScript をサポートしていないか
現在スクリプトの使用が禁止されています。…
--------------------------------
と
これはもしかしてphpでは無理ですか?
0094nobodyさん
2007/10/01(月) 13:03:59ID:???0100nobodyさん
2007/10/01(月) 14:40:06ID:MMTKck5hphpinfoや設定ファイルを目視する以外にやり方ございませんか?
0101nobodyさん
2007/10/01(月) 14:42:47ID:???0102nobodyさん
2007/10/01(月) 14:43:33ID:???0106nobodyさん
2007/10/01(月) 15:51:28ID:???どこがちがうの?
>>1のテンプレに入ってるのにわけわかんね
だいたい質問以前の基本的なことができてないのに相手してもらえるわきゃないわな
0108nobodyさん
2007/10/01(月) 15:59:45ID:???おまえ頭固いな〜
こいつら全員基本的なことができてないだろーがよ
「おまえらまとめて>>1の基本的なことやってから質問しろ」って意味じゃねーの?
もうちょっと自分で考えてみろよ
0113nobodyさん
2007/10/01(月) 16:29:50ID:???勘違いしてるかもしれんが
俺の質問は答えてもらってるわけだが
ID見えないのに特定しちゃったフリですかwww
0116nobodyさん
2007/10/01(月) 16:42:22ID:???0118nobodyさん
2007/10/01(月) 17:06:53ID:???0119nobodyさん
2007/10/01(月) 17:07:01ID:???0122nobodyさん
2007/10/01(月) 19:28:37ID:???0125nobodyさん
2007/10/01(月) 20:34:46ID:J4jr6C1B情報が欲しいログインするタイプのサイトへ
phpで自動化しようと思ったんですけど…
返ってきたHTTPレスポンスが
------------------------------
…サインインするには JavaScript が必要です
このブラウザでは JavaScript をサポートしていないか
現在スクリプトの使用が禁止されています。…
--------------------------------
と、これはもしかしてphpでは無理ですか?
>>ログイン画面のJavaScriptで何やってるか解析すれば
まず有効無効のチェックに対して
phpではクッキーを持つぐらいしかできる事がありませんよね?
0126nobodyさん
2007/10/01(月) 20:49:04ID:???0127nobodyさん
2007/10/01(月) 21:22:39ID:???PHPなりRubyなり好きな言語でエミュレートしてやればいいが
JavaScriptで生成されるデータが多かったり、
セキュリティ上の制約に引っかかったりしたら難しいだろうな。
0128nobodyさん
2007/10/01(月) 22:23:27ID:???とりあえずJavaScriptが何をしてるのかを確認すべき。
普通、JavaScriptでログイン処理なんてやらない・できないので、
それは単にユーザI/Fを構築してるに過ぎないはずなのよ。
なので、最終的なログイン方法を見つけてそれをPHPで
処理してやれば、ちゃんとログインできるはず。
0129nobodyさん
2007/10/01(月) 22:42:17ID:???>JavaScriptでログイン処理なんてやらない・できないので
やらないのは確かだが一応できるよ
ただ非効率だしパスワードなんかもソース見れば丸見えだし
ユーザの追加やパスワードの追加は手作業で行うことになるし
(手作業でやらない場合PHP等を通すことになるのでJavaScriptでやる意味がない)
普通は誰もやらない
5年ぐらい前ならたまに見かけたけどね
>…サインインするには JavaScript が必要です
>このブラウザでは JavaScript をサポートしていないか
>現在スクリプトの使用が禁止されています。…
考えられるのはJavaScriptで取得したいなんらかの情報があるか
ログイン後の操作や処理にJavaScriptが必要だったりするからログイン前に警告出してるか
だと思う
0130nobodyさん
2007/10/01(月) 22:48:33ID:???ログイン後のアクセスは結局JavaScriptが必要である可能性が高いよな。
0131nobodyさん
2007/10/01(月) 23:00:27ID:???0133nobodyさん
2007/10/01(月) 23:30:45ID:6BDl/Ympあのさ、県名で絞込みってのをフォームのプルダウンでやろうと思うんだけど、
valueの値を“北海道”と日本語にするのと“1”って数値にするのは
どう使い分けたらいいの?
DBが安定して日本語対応してたら日本語でいいのかな?
みんなはどうしてるの?
0134nobodyさん
2007/10/01(月) 23:42:42ID:???郵便局にあったCSVをDBにつっこんでつかってるけど日本語でやってる。
何から何までUTF-8に統一して設定してるからかもしれんけど特に問題はないよ
phpはEUC、DBはUTF8とかばらばらだったらPKつけてやった方が無難かもしれない
0135nobodyさん
2007/10/01(月) 23:43:41ID:UmsoE0s2「蝦夷」 から 「北海道」 に変わったように、 「北海道」 から別の名称に変わるかもしれませんので、
数値にすべきでしょう。
0136nobodyさん
2007/10/02(火) 00:02:18ID:???>やらないのは確かだが一応できるよ
>ただ非効率だしパスワードなんかもソース見れば丸見えだし
(・д・)ぽか〜ん
パスワード丸見えなのにログイン処理が「一応できる」と思ってるなんて凄いな。尊敬するよ。
0138nobodyさん
2007/10/02(火) 00:20:34ID:???技術的にどうかという問題なわけでセキュア云々ではない
セキュアだとやらないというだけで技術的にできることには変わりはない
気休めだが一応暗号化もできるしな
PHPでSQLインジェクション抱えてるようなサイトとたいしてかわらんだろw
0139nobodyさん
2007/10/02(火) 00:24:01ID:???0140nobodyさん
2007/10/02(火) 01:05:03ID:ykBGND+D大阪府大阪市中央区いいい2丁目3-4 202号室
こういう住所があるとして、「○○○号室」だけを取り出すには
どのように正規表現のコードを書けばいいのでしょうか?
0141nobodyさん
2007/10/02(火) 01:14:12ID:???0142nobodyさん
2007/10/02(火) 01:22:06ID:???0143nobodyさん
2007/10/02(火) 01:48:53ID:???正規表現道場
http://pc11.2ch.net/test/read.cgi/php/1168450843/
0144nobodyさん
2007/10/02(火) 01:51:57ID:???0145nobodyさん
2007/10/02(火) 01:53:07ID:???0147nobodyさん
2007/10/02(火) 10:31:53ID:???0148nobodyさん
2007/10/02(火) 10:55:06ID:???0149nobodyさん
2007/10/02(火) 10:58:26ID:???0150phpでJSありのサイトへログイン
2007/10/02(火) 11:05:23ID:NjRsQqKRとりあえずJSの解読からはじめます。
0151148
2007/10/02(火) 11:10:47ID:???もし良ければ、その方法を教えていただけませんでしょうか。
PHPのマニュアルを探しましたが、それらしき記述は見つけられませんでした。
0152nobodyさん
2007/10/02(火) 12:17:34ID:???OSはFreeBSD 6.1-RELEASE
phpはPHP 5.2.0です。
この環境に限らずここら辺みろやっていうあたりでも教えていただけると幸いです。
0153nobodyさん
2007/10/02(火) 12:42:31ID:???マニュアルに書いてあるよ!
ttp://www.php.net/manual/ja/internals2.php
...けどmysqlとかのエクステンションを読んだ方が早いかもね。
0156nobodyさん
2007/10/02(火) 13:08:56ID:sEvSh0XVありがとうございます。<(_ _)>
ちょっと読んでみます。
0157nobodyさん
2007/10/02(火) 13:11:34ID:vuWCHJUh0159nobodyさん
2007/10/02(火) 14:36:45ID:NjRsQqKRそれは…挫折してからにします。
0160nobodyさん
2007/10/02(火) 16:13:41ID:vuWCHJUhUTF-8から変換すると??になるんだが・・・
0162nobodyさん
2007/10/02(火) 16:17:23ID:vuWCHJUh携帯で半角カナが使えないというのはこういうことか・・・
0163nobodyさん
2007/10/02(火) 16:35:12ID:???ISO-2022-JP=7ビットコード体系
使用可能=ASCII, JISX0201, JISX0208-1978, JISX0208-1983
除外=JISX0201(片仮名)
0164nobodyさん
2007/10/02(火) 16:41:05ID:???0165nobodyさん
2007/10/02(火) 16:41:05ID:???固体識別情報にezwebを吐く携帯が文字化けを引き起こしてる
mb_convert_encodingでEUC-JPにするも全くダメ
自分がその携帯を持ってないのでなんともむず痒い
0169nobodyさん
2007/10/02(火) 16:57:14ID:???一応ここ2年以内に発売されたぐらいの携帯だときちんと見れるよ?
自分が持ってるdocomoでも見れるし投稿処理もきちんとできるよ
友人のvodaphoneでもいけてるしね
0171nobodyさん
2007/10/02(火) 17:05:40ID:???UTF-8、Shift_JIS、EUC-JPとやってみたんだけど、
Shift_JISは障害が多すぎて自分では手に負えなかった
んでUTF-8にしてみたんだけど原因は忘れたけど、これも問題出たからやめたはず
それに表示がEUC-JPやShift_JISに比べてなんか違和感あった
んでEUC-JPでやってみたらezwebの問題以外すべてクリアだったんでEUC-JP使ってる
なんで真剣にアホスなのか意味がわかんないので教えて
EUC-JPでいまんところそれ以外に問題なくて使えてるのにどこがいけないのかサパーリ
0173nobodyさん
2007/10/02(火) 17:11:06ID:???別にinternalはEUC-JPで全然かまわないから
せめて出力は変換しとけ。
全機種対応してない文字コードで携帯サイトとかバカか。
0174nobodyさん
2007/10/02(火) 17:12:07ID:???0175nobodyさん
2007/10/02(火) 17:12:58ID:???0176nobodyさん
2007/10/02(火) 17:13:56ID:???1日に50万アクセスぐらいあるけど、ezwebの問題以外特にクレームとかこないよ
自分で持ってる携帯からだとちゃんと狙った感じになってるから問題ないかと思ってた
METAタグでcharset設定したらちゃんと見れるから大丈夫だとおもったんだけどなぁ。。。
0177nobodyさん
2007/10/02(火) 17:14:45ID:???腹痛いwwww
0178nobodyさん
2007/10/02(火) 17:19:10ID:???どんなコードで飛んでくるんだろう >絵文字
0179nobodyさん
2007/10/02(火) 17:21:55ID:???なにか面白いこと言った?
>>178
厳密には携帯専用サイトじゃなくて、普通のPCで見れるページを携帯用にも作ってる感じ
だから絵文字はPC用ページだと表示できないから排除するようにしてる
0180nobodyさん
2007/10/02(火) 17:29:00ID:SNciDcYfポストバックによる処理をどこに入れるかだけど、今まではHTMLの最初の方にズラッと書いていました
どこかのサンプルソースを見てみたらFunctionを使いまくっていました
ひょっとして普通はFunctionを使いまくるのでしょうか?
0181nobodyさん
2007/10/02(火) 17:47:09ID:???し、信じられないかもしれないが有りのままを話す
何言ってんだかサッパリわからねぇ
俺もなんて答えたいのか俺自身にもわからねえんだ
0182nobodyさん
2007/10/02(火) 18:39:43ID:eqW2/Vd2今3つ通してるんですけど、あと3つほどとうそうかと・・・
10万〜12万PV/日ぐらいのサイトで、そこそこ重い処理をしてるので、あんまり重くなるようなら考えます
3つを6つにしてもあんまり変わらないでしょうか?
0183nobodyさん
2007/10/02(火) 18:42:20ID:???全然問題なく化けないぜ
>>179
とりあえずお前はググる能力を身につけような
EUC-JPなんかじゃ、SoftBank(3G, SH系除く)は絵文字送信ができないぜ
0184nobodyさん
2007/10/02(火) 19:12:06ID:???includeする際の検索順序、ファイル分割する事によるメモリへの貢献、OS自身のディスクキャッシュ、HDD自体のキャッシュ etc.
色んな影響があるので、実際に試してみるのが一番いい。
0185nobodyさん
2007/10/02(火) 19:21:42ID:???179だけど、PCと同じページを作ってるから特殊記号入れられないように排除してるんだよ
だから絵文字の処理なんかは必要ない
ググってもShift_JISでないとキャリアが対応してないとか、絵文字がどうのとかしか
出てこないけど、今の時代Shift_JISでなくても閲覧できるし、絵文字とかわざと排除してるから
他に叩かれるような覚えはないんだよねぇ
それ以外でEUC_JPで作ってたら真性バカの烙印押される理由が知りたい
0186nobodyさん
2007/10/02(火) 19:33:59ID:???それでどこにも存在しないファイルを検索すると重くなると思うけど、
最初の方のパスで大半が検索Hitしてる分には特に重くならないかと。
でもパス6つくらいなら全然普通のレベルだと思うけどね。
0187nobodyさん
2007/10/02(火) 19:35:32ID:???とりあえずEUC-JP非対応のキャリア、機種くらいは判定して
そこだけSJIS出力に切り替えてやれば?
それしないで「一部機種が対応してるからそれで通す」はバカだと思うけど。
0188nobodyさん
2007/10/02(火) 19:40:14ID:???functionにするかしないかはシステムの規模によるかな。
あんまりにも小規模ならわざわざfunctionにしない。
でも中規模以上なら関数化しといた方が後で楽。
0189nobodyさん
2007/10/02(火) 20:13:22ID:???なるほど
つまりまともに閲覧できてない機種があるってことなんだね
docomoもvodaphoneも知人の持ってるauもいけてたから
見れてないのはないもんだと思ってたわ
html生成方式だからSJISにするのは簡単なんだけど、そういうことだったのね
でも本当に見れてないんだろうか?・・・
0190nobodyさん
2007/10/02(火) 20:38:39ID:???0192nobodyさん
2007/10/02(火) 21:26:27ID:???0193nobodyさん
2007/10/02(火) 21:31:10ID:???0195nobodyさん
2007/10/02(火) 22:47:05ID:???UTF-8からISO-2022-JPに変換すると半角カナが??なる
ってんで電子メイル絡みの話題かと思っていた
唐突に>>165がEUC-JPとか1日に50万アクセスとか言い出した
「なに言ってるんだ、こいつ?」
現れる必然性が俺には理解できねえ
まるで鈍器で頭を強打されたくらいの衝撃を受けた
で…ここはPHP絡みの雑談するスレだっけか?
どうも認知症の進行著しく自分がどこにいるのかもわからねえ
0196nobodyさん
2007/10/02(火) 22:54:37ID:???perlではShift_JIS使ってうまくいってたけど、phpではそんな不具合があって
ちょうどphpの文字コードの話が出たからなんかの足しになればと思って書き込んだだけだけど
それがみんなの気分を悪くしたみたいだね
もう書き込まないから安心してください、でわでわ
0197nobodyさん
2007/10/02(火) 23:06:23ID:???いや気分悪くなんてしてないから
釣りと間違われないよう華麗にリードすればいいから
では次の患者さん どうぞ
0198nobodyさん
2007/10/03(水) 01:44:33ID:???0200nobodyさん
2007/10/03(水) 02:00:16ID:???0201198
2007/10/03(水) 04:20:36ID:???echo mklover("美代ちゃん");
?>
上記のコードを実行させてみると以下のようなエラーがでました。
Fatal error: Cherry boy cannot use function mklover() in /var/www/html/cretateGirlFriend.php on line 2
どうすれば良いでしょうか?
0203nobodyさん
2007/10/03(水) 04:35:16ID:???トリミングしてくれるライブラリや関数は無いだろうか?
一応、gdやImagick、MagickWandの関数を調べたり実際に試したりしてみたんだが、どうも見当がつかない・・・・・・
いったんjpgに分割してトリミング後に再結合とかはできるみたいだけど、
それだと結局、delay値取得するためにヘッダを解析しなきゃならなそうでなあ。
もし何か良い方法知っていれば教えて欲しい。
0205nobodyさん
2007/10/03(水) 09:35:05ID:I/i9laybを入れないとValidは通るのですが入れろといわれるので、入れると
エラーがでるのでechoに入れてみるとページすべてでエラーになります。
<?xml version = "1.0" encoding = "utf-8"?>の部分をヒアドキュメントに入れても
同じようにエラーが出ます。
phpページでValidを通す時みなさんはどうしてますか?
本体のページはTransitionalで
<?xml version = "1.0" encoding = "utf-8"?>はいれずに通ります。
問題があるのがCompact HTMLの携帯ようサイトです。
0207nobodyさん
2007/10/03(水) 10:02:24ID:???でダメだったって事?
0208nobodyさん
2007/10/03(水) 10:10:37ID:???xml宣言の<?とphp宣言の<?がかぶってしまうため起こる問題でしょ?
<?php echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; ?>
とviewの1行目に入れればいいんじゃない
0209nobodyさん
2007/10/03(水) 10:26:22ID:???それならechoやヒアドキュメントではエラー出ないだろ。
根本的にどっかPHPの構文間違ってるんだよ、多分。
0210nobodyさん
2007/10/03(水) 10:37:07ID:xx+cFlmVPHPのmb_send_mail関数を使ってメール送信をしているのですが、届くドメインと届かないドメインが
あり困っています。
サーバーはロリポップを使っているのですが、
お聞きしたいのはメールサーバのログの見方です。
ググってみたりしたんですが、方法が良くわかりませんでした。。。
OSは、macOSX 10.4.10です。
どなたか、宜しくお願い致します
0212nobodyさん
2007/10/03(水) 10:45:07ID:???macってクライアントが?
クライアントは関係ないんじゃないの?
ロリポのメールサーバが何使ってるか知らないけど
サーバ側のシステムログなんてサーバ管理者しか普通見れないよ
0213nobodyさん
2007/10/03(水) 10:53:12ID:xx+cFlmVそうなんですね。ありがとうございます。
できればmail()の利点をご教示頂けますでしょうか。。。
>>212
クライアントがmacです。
ロリポップはqmailというメールサーバを使っている様です。
色々調べてみたら、メールが届かない時はとりあえず
メールログを見ろと書いてあるところが多かったもので。。。
0214nobodyさん
2007/10/03(水) 11:06:01ID:???オッパッピ?
0215nobodyさん
2007/10/03(水) 11:36:14ID:zZ6Mc9LXたとえばメニューを登録するプログラムがあって、 menu と priceの2種類のフィールドを
DBが持ってるとします(それと自動インクリメントのID)。
これに対して、登録用フォームで3つのメニューを一度に登録したい時、
どういう処理をしたらいいんでしょう?
メニュー1:<input type="text" name="menu"> <input type="text" name="price">
メニュー2:<input type="text" name="menu"> <input type="text" name="price">
メニュー3:<input type="text" name="menu"> <input type="text" name="price">
これじゃダメですよね?
それぞれにユニークのフィールドを持たせるのが一番無難かもしれないですが、
なんかイヤなので…(実際には3つでなく任意の数にしたいんです)
1メニューずつ追加登録してくのがいいんでしょうか?
それとも、上記のやり方でも解決できるPHPのくみ方があれば
教えて欲しいです。
よろしくお願いします。
0217215
2007/10/03(水) 12:33:24ID:zZ6Mc9LXごめんなさい どういうことでしょう?
HTML側は上に書いた通りでよくて、PHPで用意したmenu配列とprice配列に
入れるってことですか?
DBへの登録はmenu[0]〜menu[N]までループで処理??
そんなことできるのかな? 大雑把にでも教えてもらえれば嬉しいです。
0218nobodyさん
2007/10/03(水) 12:41:59ID:???menu[0]〜[2]
price[0]〜[2]
みたいに振り分ければ?
>そんなことできるのかな?
プログラムは「できるかな?」じゃなくやってみるんだ
やるまえに「できるかな?」と尋ねると進歩しない
0219nobodyさん
2007/10/03(水) 12:43:16ID:???mb_send_mail()はmail()のwrapperだよ
mail()にマルチバイト文字変換処理を付加したもの=mb_send_mail()
よってメイル送信前の処理は全て自前で行わなければならない
0221nobodyさん
2007/10/03(水) 12:47:42ID:???レンタルサーバを利用している時点で貴方が掌握できるのは
PHPで作ったプログラム(フロントエンド)の部分だけ
バックグランドで何が起きているのか知る術は無いから諦めろ
0222nobodyさん
2007/10/03(水) 12:58:51ID:???そうだねぇ、自分で全て面倒みれる人ならmail()の方が良いかも
mb_send_mail()はSubjectと本文しか処理しないしね
例えば"おいら<me@example.com>"ってヘッダにつけると
"おいら"が化けるから予めMIME処理しなけりゃならん
結局、手間はたいして変わらなくなる
0223nobodyさん
2007/10/03(水) 13:03:01ID:???0224213
2007/10/03(水) 13:59:15ID:xx+cFlmV>>221さん
ありがとうございます。大変勉強になります。
今ロリポップのサーバーからテスト運用しているのですが、
独自ドメインとgmeilの方へは送信できるのですが、
yahooアドレスや携帯のアドレスへ送信しようとすると
デーモンよりfailure noticeとして帰ってきます。
<=?ISO-2022-JP?B?省略==?=@sv390.lolipop.jp>:
Sorry, no mailbox here by that name. (#5.1.1)
と、宛先が文字化けしている様です。
0225213
2007/10/03(水) 14:02:17ID:xx+cFlmV以下にコード晒します。
mb_language("Ja");
mb_internal_encoding("UTF-8");
$mailfrom = mb_encode_mimeheader($name)."<".$email.">";
$mailto = mb_encode_mimeheader("example@yahoo.co.jp");
$subject = "WEBサイトよりお問い合わせです。";
$content = wordwrap($content, 70);
$header = "To: <{$mailto}>\r\n" .
"From: {$mailfrom}\r\n" .
"X-Mailer: PHP/" . phpversion();
$param = "-f" . $email;
if (mb_send_mail($mailto, $subject, $content, $header, $param))
{
echo("メール送信完了しました。");
} else {
echo("メール送信に失敗しました。");
}
$email,$nameはフォームからの入力値になります。
サーバーのphpはver.4.4.6となります。
宜しくご教示お願い致します。
0226nobodyさん
2007/10/03(水) 14:21:34ID:???ヘッダーで文字コード指定してやれば?
0227213
2007/10/03(水) 14:25:09ID:xx+cFlmVありがとうございます。
おっしゃるとおりで、コピペです。。。
ヘッダーで文字コード指定試してみます!
0228nobodyさん
2007/10/03(水) 14:35:21ID:???$mailto = mb_encode_mimeheader("example@yahoo.co.jp");
こいつはMIMEエンコードをしないで$mailto = "example@yahoo.co.jp";
$header変数にこいつ→ "To: <{$mailto}>\r\n" を含めない
ヘッダにTo:句が重複して現れてないか?
0229213
2007/10/03(水) 14:47:29ID:xx+cFlmV>>$mailto = mb_encode_mimeheader("example@yahoo.co.jp");
>>こいつはMIMEエンコードをしないで$mailto = "example@yahoo.co.jp";
これを試したら届きました!
本当にありがとうございます。
よく分からずにWEBで拾ったコードを信用していたのが原因でした。
やはりPHPマニュアル以外はあまり参考にならないのですね。
To:が重複していたのもおっしゃるとおりで、解決しました。
皆様ありがとうございました。
0230nobodyさん
2007/10/03(水) 15:00:48ID:???http://jp.php.net/html#faq.html.arrays
0231205
2007/10/03(水) 15:39:42ID:I/i9laybindex.phpの内容は
<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD Compact HTML 1.0 Draft//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>test</title>
</head>
<body>
test
</body>
</html>
です。このままだと、
Line 1, Column 0: end of document in prolog.
とでるので、<? echo '<?xml version = "1.0" encoding = "utf-8"?>'; ?>と修正すると
Line 1, Column 104: no system id specified.や
Line 3, Column 5: element "head" undefined.
などすべての行でエラーがでます。レスいただいた
<? echo "<"."?xml version = \"1.0\" encoding = \"utf-8\"?".">"; ?>
も試しましたが全く同じエラーです。
0233nobodyさん
2007/10/03(水) 15:43:55ID:???0234nobodyさん
2007/10/03(水) 15:55:44ID:???普通にこれで通らないか?
<?php
echo "<?xml version = \"1.0\" encoding = \"utf-8\" ?>\n";
?>
0235nobodyさん
2007/10/03(水) 16:00:37ID:???0236205
2007/10/03(水) 16:36:11ID:I/i9laybそれにしても、みんなどうやって通してるんだろ。
失礼しました!
0240nobodyさん
2007/10/03(水) 17:37:30ID:???0242nobodyさん
2007/10/03(水) 18:00:30ID:e5ck+SXs配列Aだけにある値と配列Bだけにある値をとりたいのですが
どのように処理すればよいでしょうか?
0243nobodyさん
2007/10/03(水) 18:07:51ID:???0245242
2007/10/03(水) 18:13:11ID:???どうもありがとうございました!!
0246nobodyさん
2007/10/03(水) 18:32:30ID:oSSk/nfV改ページなどはGETで行いますよね?
その際、以下のようにして検索対象となるWHEREの内容を、作成しています。
if($_POST["name"] ){
$name =htmlspecialchars($_POST["name"]) ;
}elseif($_GET["name"]){
$name = htmlspecialchars($_GET["name"]) ;
}
$search_set ="name='$name'"; //検索用のSQLを作成
$where = "WHERE $search_set"; //MySQLのWHEREに当てはめる
見たいな感じでやっているのですが、上記だとコードが長すぎますし、
正直無駄に感じます。みなさんはどのようにしているのでしょうか?
0247nobodyさん
2007/10/03(水) 19:04:28ID:???abcdefg
全角
ABCDEF
0248nobodyさん
2007/10/03(水) 20:02:08ID:???HTMLエンティティ化はHTML出力に対して行うものであって入力値にかけるものではない。
それから初めのうちはコードの長さなんか気にするな。ロジックを気にしろ。
0250246
2007/10/03(水) 20:07:41ID:???入力値にかけないと余計なコードを入力された場合、
対処出来ないのではないでしょうか?
>>249
REQUESTでも問題ないですかね。リファレンスでは「あまり使われていない」
って書かれていたので、上のようなコードにしていました。
0251nobodyさん
2007/10/03(水) 20:12:04ID:???htmlspecialcharsは「HTML表示の際」に必要なエスケープであって
SQLを組み立てる場合に必要なエスケープではないでしょ。
この場合は例えばmysql_escape_stringとかを使うわけだけど、
逆にSQL用にエスケープしたものをHTML表示に使えるわけでもない。
つまり、入力値はいきなりエスケープするものではなく(汎用のエスケープというのは無い)
何かの用途に使う時点で、それぞれの目的にあった形にエスケープしなきゃダメなのよ。
0252nobodyさん
2007/10/03(水) 20:34:58ID:???0253nobodyさん
2007/10/03(水) 20:44:52ID:L+I4Rl+L最近、PHPを勉強し始めました。
もし、アドバイスしてくださる方が居れば、こちらへ宜しくお願いします。
http://php121.blog121.fc2.com/
0255nobodyさん
2007/10/03(水) 20:47:44ID:???0257nobodyさん
2007/10/03(水) 21:21:37ID:???GET、POSTのどちらで来てもいいなら$_REQUESTだけど
どちらかしか認めないような場合(特にPOST)なら分けた方がいい。
>>246の場合ならDB用にSQLエスケープでいいけど
入力値によっては妥当な(期待している)値かのチェックは必須(数値や日付等)
0261nobodyさん
2007/10/03(水) 22:01:19ID:???気をつけろ! $_REQUESTには$_COOKIEも入ってくる。orz
あと$_FILESも
0262nobodyさん
2007/10/03(水) 22:13:05ID:???げ、マジですか! ジェットストリームアタックだw
優先順位はどうなってるのだろ? 当然高い方に上書きされるよね?
0263262
2007/10/03(水) 22:16:54ID:???0264nobodyさん
2007/10/03(水) 22:19:10ID:???バグ生む原因になるだけ。
0265nobodyさん
2007/10/03(水) 22:40:04ID:gbZJiSoXinclude_once("A.php");
include_once("B.php");
とやってしまうと function hoge が二度呼び出されたことによりエラーが返されます。
なんとかうまくエラーが出ないようにする方法は無いでしょうか?
ちなみにA.phpかB.phpのどちらかから function hoge を消してしまうと他の部分で
エラーが生じてしまうのでできるだけA.phpとB.phpの中身には大幅な変更は
加えたくありません。
0266nobodyさん
2007/10/03(水) 22:49:49ID:???二重定義のエラーは回避できない。
つ[function-exists()]
http://jp.php.net/manual/ja/function.function-exists.php
0268nobodyさん
2007/10/03(水) 23:18:29ID:???0269nobodyさん
2007/10/03(水) 23:26:48ID:???0270265
2007/10/03(水) 23:31:05ID:gbZJiSoX二重定義は回避不能でしたか・・・
>>267-269
今後プログラムするときは気をつけたいのですが>>267さんの言うとおり
関数は一つにつき一つのphpファイルの中で定義して使い回すのが
正しい作り方になるのでしょうか?
0271nobodyさん
2007/10/03(水) 23:40:21ID:???0273nobodyさん
2007/10/03(水) 23:47:35ID:???0274nobodyさん
2007/10/04(木) 00:36:17ID:2S6z8FqVecho 1+2がなぜ3になるのですか?
echoは引数を評価する関数なんですか?
0275nobodyさん
2007/10/04(木) 00:45:23ID:???すまん。include_once(C.php)だ (だと大丈夫だよね?)
C.php -------------------------
function hoge(){}
A.php -------------------------
include_once("C.php");
B.php -------------------------
include_once("C.php");
Main.php -------------------------
include_once("A.php");
include_once("B.php");
$foo = hoge();
0278nobodyさん
2007/10/04(木) 01:09:13ID:???俺も$_REQUEST使ってた...。
じゃやっぱり$_POSTと$_GETを書いて、どちらか入力されているか
チェックして変数に入れる方がいいみたいだな。
0279nobodyさん
2007/10/04(木) 01:27:57ID:???0280nobodyさん
2007/10/04(木) 02:02:54ID:???0281nobodyさん
2007/10/04(木) 02:03:28ID:???URLをそのまま他人に教えたりできるし
POST なら前ページと次ページのみのフォームボタンにする
0282nobody
2007/10/04(木) 02:08:25ID:wWWlpRkK早速質問ですが・・・
http://aki.adam.ne.jp/php/script/thumb.php
のサムネイルモジュールを使っているのですが・・・
thumb.phpで画像へのパスが設定されていませんとなってしまってサムネイル画像が×になってしまいます。
thumb.phpで画像へのパス設定って何行目ぐらいに書いてありますか?
ご回答よろしくおねがいします。
0283nobodyさん
2007/10/04(木) 02:17:48ID:???0284nobody
2007/10/04(木) 02:21:00ID:???0285nobodyさん
2007/10/04(木) 02:23:12ID:???おいおい・・・230行足らずのスクリプトだぞorz
しかもしょっぱなにヒントあるのに。
ソース見たり調べてないだろ
0286nobodyさん
2007/10/04(木) 02:33:58ID:VoLA0M9Q$saza = ("$tekuno" and "$posh");
$saza1 = ("$tekuno" or "$posh");
$saza2 = ("$tekuno" != "$posh");
?>
<html><head>
<?php if ($saza){echo 'ああああ';} ?>
</head>
<body>
<?php if ($saza1){echo 'いいいい';} ?>
<?php if ($saza2){echo 'うううう';} ?>
</body><html>
これを
<saza>ああああ</saza>
<saza1>ああああ</saza>
<saza2>ああああ</saza>
と置き換えて反映させたいのですが
どうすればよいのでしょうか?
置換タグ等で調べましたがわかりませんでした。
深夜ですがよろしくお願いします。
0287286
2007/10/04(木) 02:36:00ID:VoLA0M9Q<saza2>うううう</saza>
すみません間違えていました
0288nobodyさん
2007/10/04(木) 03:28:51ID:???変数名を取得って事だよね? 自分も調べたけど出来なかったような記憶がある。
変数名の取得関数getVarName()があったとして↓みたいになればいいって事でしょ?
$saza = ("$tekuno" and "$posh");
if($saza) {$var = getVarName($saza); echo "<$var>ああああ</$var>";}
# => <saza>ああああ</saza>
可変変数使っても無駄かな?
$sz ="saza";
$saza = ("$tekuno" and "$posh");
$sz1 = "saza1";
$$sz1 = ("$tekuno" or "$posh");
if($$sz) {echo "<$sz>ああああ</$sz>";}
if($$sz1){echo "<$sz1>いいいい</$sz1>";}
0290nobodyさん
2007/10/04(木) 04:14:55ID:???クラス化は一つの解決方法でもあるよね。本来は抽象化が目的だけど。
俺の作ったクラスには各クラスに必ずError()があるし。
逆に↑を非効率的だ!ってイライラする人もいるけど。
(コピペがそんなに面倒かね?)
0291nobodyさん
2007/10/04(木) 04:17:11ID:???つうかPHPって、hoge.php?test=1にpostすると、
$_GETと$_POSTの両方が取得できるよね。
0292265
2007/10/04(木) 04:17:26ID:cABdO5b9> クラス化は一つの解決方法でもあるよね。本来は抽象化が目的だけど。
私の持っているPHPの本にはクラスのクの字も出てこなかったりしますorz・・・
おそらくクラスがPHPに策定される前に出た本を買ってきてしまったかと(´・ω・`)・・・
0293nobodyさん
2007/10/04(木) 04:17:51ID:???仕様変更とか入ったときに恐ろしく面倒。
バグの元にもなる。
0295nobodyさん
2007/10/04(木) 04:24:42ID:???クラスなんてそんなに難しい概念じゃないよ。
まぁ概念を説明してる本を読むと難しそうに(高尚そうに?)書いてあるけど。
使い方は簡単。でも、思想を理解しないと、メリットや使い方を間違えると思うけどね。
>>293
コピペすることを前提に作ってる関数は、抽象化されてるからバグの温床になったことはないなぁ。
0296nobodyさん
2007/10/04(木) 04:28:21ID:???初日に -> ってなんですか?って質問してきた事を思い出した
入門書ってクラスの説明が少なかったり全く無い本が多い気がする
どうして駄目プログラマーを量産するのか
0297nobodyさん
2007/10/04(木) 04:36:25ID:???0298286
2007/10/04(木) 04:48:11ID:VoLA0M9Qcase: $sazaの場合
<saza>〜</saza>で〜を表示すると言う事です。
質問の内容の書込みが全く間違っていました。
すみませんでした。
<html><head>
<saza>ああああ</saza>
</head>
<body>
<saza>ああああ</saza>
</body><html>
ああああを表示。
0299203
2007/10/04(木) 05:10:31ID:???質問したGIFアニメをそのままの状態でトリミングする方法だけど
1.imagickでGIFアニメを読み込み(バージョンはimagick2のRC4)
2.リストの中に画像全てに対してトリミング処理
3.coalesceImagesで画像を結合
4.writeImagesで引数にtrueを指定して書き出し
としてみたら何とかなった。
俺と同じような事で迷っている人ここに来るかもしれないから、一応書き残しておく。
0300nobodyさん
2007/10/04(木) 06:39:53ID:???define ('HUGA','/tmp/huga');
if (($fp = fopen(HOGE, "w")) == FLASE)
exit;
sleep(100);
?>
というスクリプトで
自分としてはfopenの引数が違うので実行できないと思ったのですが、
なぜかエラーが出ないばかりか、
実行までできて、しかもsleepもしてしまいます。
どうしてでしょうか?
0302nobodyさん
2007/10/04(木) 06:45:41ID:???>自分としてはfopenの引数が違うので実行できないと思ったのですが、
間違ってないじゃん
fopen ( string $filename, string $mode [, bool $use_include_path [, resource $context]] )
0303nobodyさん
2007/10/04(木) 07:21:11ID:???flaseってなんだよfalseだろ
マニュアルちゃんとよめよ
>エラー / 例外
>オープンが失敗するとこの関数は FALSE を返し、 E_WARNING レベルのエラーを発行します。
て書いてあるじゃん
特に設定もしなければ表示はされないが
Use of undefined constant HOGE - assumed 'HOGE
ていうNoticeレベルのエラーがちゃんと出てる
あとソースの書き方が汚いのでどうにかしてちょうだい
0304nobodyさん
2007/10/04(木) 12:54:21ID:???オレだけかも知れないがいまいち質問がわからん。
何を作ろうとしてるの? 具体的なソース掲示した方がわかりやすいかも
0306298
2007/10/04(木) 14:36:56ID:r3u5qyzl>>304
どうもすみません。
<saza>ああああ</saza>
<saza1>いいいい</saza1>
<saza2>うううう</saza2>
と書いておき
$saza = 1;の場合
いいいい
のみを表示したいのです。
実際
$saza = 1;
<?php if ($saza){echo 'ああああ';} ?>
<?php if ($saza1){echo 'いいいい';} ?>
<?php if ($saza2){echo 'うううう';} ?>
echo >>いいいい
で今は動作していますが、ページ内で記述が
ごちゃごちゃになるので
自分なりの置換タグが出来れば
楽かと思い質問しました。
>>305
確かに。
これで最後にします。
0307nobodyさん
2007/10/04(木) 14:56:02ID:???2.その変数が1かどうかを判定する
3.タグで囲まれた部分を表示する
0308nobodyさん
2007/10/04(木) 15:29:57ID:???つりか?突っ込んでほしいのか?代入ってわかるか?
実際以降のスクリプトだと"ああああ"しか表示されないだろ?
0309nobodyさん
2007/10/04(木) 15:33:00ID:???phpinfo() で見ることができてたようなきがするんだが、
今見たら出力されないんだ。
俺の記憶違いかな?
確認する方法ってないのかな?
0311309
2007/10/04(木) 16:28:47ID:???うううー
ttp://www.linux-user.de/ausgabe/2005/08/047-php/phpinfo.png
では、Build Date の下に Configure Command あるけど、
俺のところでは これが抜けてるんだ
トリはdebian etch
sargeのときは表示されてたような希ガス
0312298
2007/10/04(木) 16:32:00ID:r3u5qyzlすいません釣りじゃないです。
$saza = $aa
でおねがいします。
0313nobodyさん
2007/10/04(木) 16:35:36ID:WKEPKRFzphpのバージョンとconfigureした時のオプションは?
0314nobodyさん
2007/10/04(木) 16:41:17ID:WKEPKRFz確認したいだけなら /usr/local/src/php-5.2.1/config.status とかで見れる。
これは俺の環境でだから自分の環境でソースまでのパスの下にconfig.statusがあるってことね
0315nobodyさん
2007/10/04(木) 17:05:37ID:3TfT8CvK会員管理システムで、ログイン後ユーザ情報編集画面に移るようにしたいんですが、
ログイン用のIDとPassは名前や電話番号などのユーザ情報テーブルの
中に入れてもいいんでしょうか?
それとも、ログイン確認用の専用のテーブルを持たせるべきでしょうか
みなさんはどのようにしていますか?
だいたいこんな感じというのを教えてください。 よろしくお願いします
0316nobodyさん
2007/10/04(木) 17:15:57ID:???0317nobodyさん
2007/10/04(木) 17:16:38ID:???0318nobodyさん
2007/10/04(木) 17:17:50ID:???正規化について調べて、次からデータベース板で
0319nobodyさん
2007/10/04(木) 17:19:39ID:???$tekuno とか $posh が何なのかわからんし、書き込みの内容もいまいち理解できんのだが
本気で悩んでそうなのでなんとなくレスしてみる
見当違いの回答だったらごめんね
<?php
// $tekuno $posh が処理されていると仮定
$saza = ($tekuno && $posh) ? "<saza>ああああ</saza>" : "";
$saza.= ($tekuno || $posh) ? "<saza1>いいいい</saza1>" : "";
$saza.= ($tekuno != $posh) ? "<saza2>うううう</saza2>" : "";
echo <<< HTML
<html>
<body>
{$saza}
</body>
</html>
HTML;
?>
0320309
2007/10/04(木) 17:19:41ID:???config.status
はないんだわ
ソースパッケージからみつけた
COMMON_CONFIG=--build=$(PHP5_BUILD_GNU_TYPE)-gnu --host=$(PHP5_HOST_GNU_TYPE)-gnu
--mandir=/usr/share/man --enable-memory-limit --disable-debug --with-regex=php
--disable-rpath --disable-static --with-pic --with-layout=GNU --with-pear=/usr/share/php
--enable-calendar --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-track-vars
--enable-trans-sid --enable-bcmath --with-bz2 --enable-ctype --with-db4 --without-gdbm
--with-iconv --enable-exif --enable-filepro --enable-ftp --with-gettext --enable-mbstring
--with-pcre-regex=/usr --enable-shmop --enable-sockets --enable-wddx
--with-libxml-dir=/usr --with-zlib --with-kerberos=/usr --with-openssl=/usr
--enable-dbx --enable-soap --enable-zip --with-mime-magic=$(MAGIC_MIME)
--with-exec-dir=/usr/lib/php5/libexec
0322nobodyさん
2007/10/04(木) 19:17:47ID:???ますます何をしたいのかわからない。
そのソースは転載用に改造したものと思うけど処理の真意が伝わらない。
(>>319氏も書いてるが$tekunoも$poshも$saza*も変数名から推測できないし)
貴方の文章力だと処理をどうこうしたいじゃ理解できないから、こうしたいという具体的な目的とうまく動作しないソースを改変せずそのまま貼った方がいい。
言葉で表せないって事は当然プログラムに落とせないよ。
置換タグとはテンプレートを読み込んで置換したいのか?
「ああ」「いい」「うう」を併記しておいてその内1つだけを出力したいの?
if文かswitch文の分岐出力とも思えたりするのだが。
0323nobodyさん
2007/10/04(木) 19:30:58ID:???ようするにデータをXMLファイルで持っておいて、
任意のカラムのデータを取り出したい、ってことの気が…
それ、全然独自じゃないよ。
あと、あくまで独自のが作りたいんなら「自分で処理しやすい形式」にしましょう。
0324323
2007/10/04(木) 19:36:01ID:???> 実際
> $saza = 1;
> <?php if ($saza){echo 'ああああ';} ?>
> <?php if ($saza1){echo 'いいいい';} ?>
> <?php if ($saza2){echo 'うううう';} ?>
> echo >>いいいい
> で今は動作していますが、ページ内で記述が
> ごちゃごちゃになるので
ちなみにこれ、普通は
$data = array(
'ああああ',
'いいいい',
'うううう',
);
echo $data[$saza];
みたいに処理します。
0325nobodyさん
2007/10/04(木) 19:37:16ID:???ありがとうございました 一度そのやり方でやってみます。
>>316-318
済みませんでした、以後気をつけます
0326nobodyさん
2007/10/04(木) 19:41:20ID:???凡人の俺には理解不能だし・・
0327nobodyさん
2007/10/04(木) 19:52:47ID:???論理演算の結果(true/false)を$saza*に入れてるから配列はダメじゃね?
and、or、!=、の3つなら最低2つの変数は同じ値だし。
$saza = 1とか書いてるから難解になるんだよ。なぜ$saza = trueにしない
0328324
2007/10/04(木) 20:09:01ID:???データを配列化した上で、$sazaとかの変数も処理しやすいよう
正規化してやるのが常道だと思いますよ。
>>306は文系脳な人なのかもしれないけど、データ構造・形式を疎かにして
アルゴリズムだけで何とかしようとするのはプログラムとは言えません。
0329298
2007/10/04(木) 21:58:38ID:r3u5qyzlこの質問の、<h2>に条件を付けて表示できないかのような事
です。
条件1なら表示
条件2なら非表示という事です。
ただし、表示時に<h2>を残さないようにしたいのです。
下らない質問というより、わからない質問に真面目に答えてく
ださってる方、
どうもありがとうございます。
0332nobodyさん
2007/10/04(木) 23:15:47ID:???無視するのはよくないぞ
↓じゃだめなのか?駄目ならその理由を第三者にわかるようかつ簡潔に述べよ。
<?php
$japanese = true;
$english = false;
?>
<html>
<body>
<?php if ($japanese) { ?>これはペンです。<?php } ?>
<?php if ($english) { ?>This is a pen. <?php } ?>
</body>
</html>
0334nobodyさん
2007/10/04(木) 23:28:57ID:3TfT8CvK会員システムで、ID(idhoge) と PASS(passhoge) に基づいて各ユーザの情報を管理してる場合でも
ブラウザ上では
profile.php?uid=10001 profile.php?uid=10002
といった風に連番のパラメータを渡して各ユーザの情報を表示する場合があると思います。
もしこれが、ユーザ登録時のインクリメントの固有値を使ってるのだとしたら、
こういうのって、直接 profile.php?uid=idhoge としない場合にくらべてどんなメリットがあるのでしょう?
概念的というか、漠然とした質問かもしれないですがよろしくお願いします
0335298
2007/10/04(木) 23:30:24ID:r3u5qyzl失礼しました。
0336nobodyさん
2007/10/04(木) 23:30:53ID:???えーと・・・・つまり、
はてなで紹介されてた手法を使うとHTMLの中にPHPコードを埋め込まなくても
自由に表示を制御できるらしいぞ!ってことは俺の;プログラムもPHPコードを
全部消してちょーシンプルにできるんじゃね?きゃっほー魔法みたいだー!
でも読んでもやり方さっぱりわからねー。ereg_replaceとかどこに書くんだ。
わっかんねーからくだ質で聞いてみるべ!
…と、こんな感じの話なんでしょうか?
とりあえず君はSmartyを覚えた方が幸せになれる気がするけど。
0338nobodyさん
2007/10/04(木) 23:34:55ID:???ユーザからの要望に応じて後から自由にIDを変更できる。
(特に複数テーブル間でIDを識別子に使ってる場合に重要)
IDに使用可能な文字や桁数を自由にできて融通が利く。
識別子は数字列にしといた方がDB上での検索が速くなる。
0340nobodyさん
2007/10/05(金) 00:28:12ID:???319だけどエスパーになりたいので再チャレンジするおw
<?php
$saza = 1;
$output = <<< HTML
<saza>ああああ</saza>
<saza1>いいいい</saza1>
<saza2>うううう</saza2>
HTML;
$saza_flag = array(0, 0, 0);
$saza_flag[$saza] = 1;
$pattern_array = array();
if ($saza_flag[0] == 0) $pattern_array[] = '(<saza>.*<\/saza>)';
if ($saza_flag[1] == 0) $pattern_array[] = '(<saza1>.*<\/saza1>)';
if ($saza_flag[2] == 0) $pattern_array[] = '(<saza2>.*<\/saza2>)';
$pattern = implode("|", $pattern_array);
$output = preg_replace("/{$pattern}/", "", $output);
echo $output;
?>
0341nobodyさん
2007/10/05(金) 02:05:39ID:???interface iBBB{}
interface iCCC extends iAAA, iBBB{}
abstract class DDD implements iCCC{}
class EEE extends DDD{}
class DDDに インターフェイス iCCCを実装しているんですが、なぜabstractが必要なんですか?
abstract無しだとダメなんでしょうか?
また、class EEEには、abstractは必要ないんですか?
0342nobodyさん
2007/10/05(金) 02:08:55ID:???はてなのは絶対に削除で、>>329は条件付き削除(表示)、なら
preg_replaceを条件で分岐させればいいだけじゃないの?
(ソースはコピペなので未検証)
$html = <<< ENDHTML
<h1>hoge</h1>
<h2>hogehoge</h2>
<p>hogehogehoge</p>
<h2>hogehogehoge</h2>
<img src="hoge.src">
ENDHTML;
$mode = true;
if($mode) echo $html;
else echo preg_replace('!<h2>.*?</h2>\n*!i', '', $html) ;
2分岐なら$modeに真偽値で代入して上の処理、
多岐分岐なら==で比較しながら「if〜elseif〜」かswitch文
条件1ならh1表示、条件2ならh2表示、だと置換パターンも変える。
HTML側に変則的な文字列入れといて適当な文字列に置換って手もあるけどreplaceが2回必要になる。
0343nobodyさん
2007/10/05(金) 02:16:51ID:zHZGL2zy0344nobodyさん
2007/10/05(金) 02:52:19ID:???これphp?
複数のimplementsはできても複数のextendsはできんかったと思うけど
EEEと同じようなクラスが他にもいくつかあると思うけど
それらで共通の処理が必要なものをabstractに書いてたりすんじゃないかな
>>343
俺はhogehogeというクラスのファイルは
hogehoge.class.phpでクラス毎に1個1個作ってる
0345nobodyさん
2007/10/05(金) 02:56:27ID:???それ、2分岐くらいまでなら問題ないけど、質問主の要望みたいに
3、4分岐と増えるに従ってかなり面倒になるよ。
「1つだけ消す」のなら単純にelse条件を1つ増やすだけだけど、
「複数あるうち1つだけ残す(=3個とか4個とか消さないといけない)」なので。
で、そんなのいちいち条件判定しないで、正規表現に任すのがいいんじゃない?
$html = <<< ENDHTML
<sage1>hoge</sage1>
<sage2>hoge</sage2>
<sage3>hoge</sage3>
<sage4>hoge</sage4>
ENDHTML;
$sage = 2;
echo preg_replace("!<sage[^$sage]>.*?</sage[^$sage]>!", '', $html);
0346nobodyさん
2007/10/05(金) 02:58:14ID:???基本的には。
1つのファイルに複数クラスを入れるのはその両クラスがよっぽど関連が強くて
ほぼ確実にワンセットで使うだろう場合くらい。
0347345
2007/10/05(金) 03:07:52ID:???$html = <<< ENDHTML
<sage1>hoge1</sage1>
<sage2>hoge2</sage2>
<sage3>hoge3</sage3>
<sage4>hoge4</sage4>
ENDHTML;
$sage = 2;
echo preg_replace("!<sage[^$sage]>.*?</sage[^$sage]>|<sage$sage>|</sage$sage>!", '', $html);
ってとこかね。
これで
hoge2
だけ表示される。
あと$tekunoだかなんだかの話は、上記で$sage=2;にしてるとこを
if($tekuno and $posh) $sage = 1;
if($tekuno or $posh) $sage = 2;
if($tekuno != $posh) $sage = 3;
とすりゃいいんでしょ?
0348nobodyさん
2007/10/05(金) 05:10:20ID:utkOd4ppWeb技術のワンステップアップとしてPHPの次に.NETかServlet,JSPに触れたいと思ってます
Javaを理解している人間にとってPHPやC#はわかりやすいと聞くけど
逆にPHPからJava,C#を習得するのって困難ですか?
オブジェクトPHPを理解してる人にはある程度敷居が低いんでしょうが
自分はOOPは初歩程度の知識しかありません
みなさんはPHPからのステップアップとしてどういった技術を身に付けましたか?または身に付けようと思ってますか?
0351nobodyさん
2007/10/05(金) 06:50:35ID:???0352nobodyさん
2007/10/05(金) 06:58:58ID:???Smalltalk以外のOOP言語なんてどれも50歩100歩だよ。
形だけ学ぶならPHPで十分、十分。
0353nobodyさん
2007/10/05(金) 07:49:36ID:???この辺のブログが役に立つと思う。
ttp://d.hatena.ne.jp/sumim/20040525/p1
ttp://d.hatena.ne.jp/JavaBlack/20070825/p1
0355nobodyさん
2007/10/05(金) 08:15:08ID:???Java,C#を学ぶのは他言語での記述力をつけるってことでいいかと。
OOP? OOPとWeb技術とどう結びつくのか不明。
0356nobodyさん
2007/10/05(金) 08:17:05ID:???ステップアップするならJavaかC#?でもOOP分からんから怖くて触れない
って言いたいんだろ。
0358nobodyさん
2007/10/05(金) 08:37:29ID:???・宣言していない変数使おうとして怒られる
・異なる型どうしをキャストせずに代入しようとして怒られる
こんな些細なことで躓く子がたまにいるんだよね
0359nobodyさん
2007/10/05(金) 09:03:26ID:???0360nobodyさん
2007/10/05(金) 09:21:33ID:???Cをメインにやってたとき、型無し言語をしってびっくりしたぞ
0361nobodyさん
2007/10/05(金) 09:35:51ID:OqMmbiqQ0362nobodyさん
2007/10/05(金) 09:37:56ID:???0363nobodyさん
2007/10/05(金) 10:03:51ID:???0364360
2007/10/05(金) 10:24:41ID:???コンパイル段階でエラーつぶせる事だよね
error_reporting(E_ALL);
って必ず書くやつは、型強制言語出身の可能性大だと思うわ
0365nobodyさん
2007/10/05(金) 10:29:15ID:???型付けってなんの意味があるの?って思っちゃうんだが
メモリを効率につかうためとかいう理由?
0366360
2007/10/05(金) 10:41:36ID:???それもあるが、効率考えなくていいとこもあるから、
それはケース倍ケースだな
型強制言語から始めたものとしては、
宣言していない変数使おうとしてもそれなりに動いてしまう
のは脱力ポイントだな。
$hoge = 1
:いろいろ書いてて
echo $hogo; 変数名typo
とかやっても実行できてしまう。
Notice出すようにすればいいけど、実行しないと出ないでしょ。
型付けありだと、実行させなくてもコンパイル段階で
エラーでるからな。単純ミスは減らせる。
その分、ソースの記述は多くなるがな。
0367nobodyさん
2007/10/05(金) 11:05:17ID:???必要なく手軽に扱えるというのが好感触ポイントだけどな
なんかphpは下級言語で高級言語のC使えるやつや使ってる奴がえらい みたいな流れだな
嫌味くせえ
0368nobodyさん
2007/10/05(金) 11:09:48ID:???難易度が簡単なもの=低級じゃないよ
人間に理解可能かどうか
人間にとって難解であれば難解であるほど低級言語
低級← →高級
機械語 アセンブラ C JavaやPHP
0369nobodyさん
2007/10/05(金) 11:17:14ID:???0370nobodyさん
2007/10/05(金) 11:35:46ID:???或いは意図的に避けて育っちゃうと理解できないと思うし、解決方法を
見い出すことすらままならないじゃないかな。
0371360
2007/10/05(金) 11:38:13ID:???嫌味に聞こえたなら悪かった
正直なところケースバイケースだと思う
>>348 の質問があったから、型なし言語の経験のみなら、
次やるとしたら型ありがいいんじゃない?っていいたかっただけ
php本体はCで書かれてるgccだから一部c++な機能つかってるかもだけど
ちなみに、機械語、アセンブラ以外は全部高級言語だよ
個人的には phpとかjavaとか無かった時代の言葉なので、今使うのは
時代になじまないと思う
0373nobodyさん
2007/10/05(金) 11:38:23ID:???0374nobodyさん
2007/10/05(金) 11:43:28ID:???低級でもなければ高級でもないんじゃね?
中級ってところだと思うが
ポインタなんかもあるし
0376360
2007/10/05(金) 11:50:47ID:???とかで判断してくれ
0377nobodyさん
2007/10/05(金) 11:51:28ID:???それ見たかもしれない。
どっかの会社の社長の日記だろ?はてなで見た気がする。
アセンブリ言語ならともかく機械語までさかのぼっちゃうのはどうなのよ。
古い人間の意見だと思いたいんだけど実際本当に機械語まで知る必要がある?
機械語世代の古参プログラマの方の意見を聞きたいね。
あったほうがいいっていうなら話はわかるけど必須っていわれると・・・
0378nobodyさん
2007/10/05(金) 12:00:02ID:???必要無いでしょ。CPU(MPU?)毎に異なるんだし。
機械語だってCPUに取り込まれてそのまま実行じゃなくて
さらに翻訳して…という行程を経るから意味無しじゃん。
0379nobodyさん
2007/10/05(金) 12:06:36ID:???というのもPHPで大規模なものは作らないから最適化の必要がない
そもそもPHPでアセンブリを使えない(と思う)
0380375
2007/10/05(金) 12:09:16ID:???LLのモジュールをデバッガで追いかけてバグの原因を探すとか
微妙に訳の分からん話をしていたな
0381nobodyさん
2007/10/05(金) 12:11:09ID:???機械語は唯一CPUが直接実行することができるんだよ
他の高級言語は最終的に全て機械語に変換されて実行される
0382nobodyさん
2007/10/05(金) 12:20:59ID:???アセンブリ言語をアセンブルした機械語をCPUが直接実行するんじゃなくて
CPUの中で機械語をさらに内部コードに展開して実行するという話でしょ
0383360
2007/10/05(金) 12:28:09ID:???俺C世代だが、そのころはアセンブラしっておかないと。とかよく言われてたから
さわりだけかじったことはあるぐらい
>>378 がかいてるとおり、
今はさすがにそこまで知っておく必要性は薄れてきてるとおもう
linux kernel も アセンブラで書かれてるのは一部だしね
俺もその記事よんだが、メモリの使われ方とかイメージできない
やつが多すぎる。のようなこと書いてた点には賛同しちゃう
一生webしかやらないなら不要かもしらんが、負荷集中して
パフォーマンス出ない。unsetしたほうがいいんじゃないの?とか
phpソースレベルで詳細確認したいとかいう状況になる立場に
いるのなら知っておいたほうがベストではあると思う
もっともほかの言語に行く前に、
正規表現使えるようになっとけ
ってことかな応用きくしな
0384nobodyさん
2007/10/05(金) 12:39:08ID:???やっぱりその辺から理解していると絶対楽しいと思うし
何よりデバッガ見てちゃんと理解できるのが羨ましい
0385nobodyさん
2007/10/05(金) 12:44:06ID:???そういう話だと思うが、分子=機械語、原子=内部コード
みたいなものだからどちらかというと分子の振る舞いを知る方が
化合物=高級言語のユーザには重要だと思う。
# 特にPHPって高級言語のなかでも素の部分は低級な作りだから。
0386nobodyさん
2007/10/05(金) 12:47:09ID:???Cの知識はあるべきだと思う。自称mysqlのモジュールでも読んで、
簡単なモジュールでも書けるようにしとけばなにかと役に立つ。
PHPなんて簡単過ぎてもう完全にマスターしちまったよ、
と思ったらCソースを読めるようにしとくと、ここでさらにデカい顔が出来る気がする。
アセンブラは...どうだろうね。俺は組み込みマイコンで遊ぶことがあるから
たまに書いたりディスアセンブルしたコードを読むことはあるけど、
PHPと関係するような場面で役に立つことはなさそう。
ただCの理解にはとても良い。すごく良い。
機械語は、たぶん必要ない。ただ自在に操るとカッコいい。
>>384
たいていはソースレベルデバッグで間に合うからCだけで大丈夫だよ。
0387nobodyさん
2007/10/05(金) 12:56:51ID:???0389nobodyさん
2007/10/05(金) 13:06:43ID:???それはさておき>>348の欲望を満たすにはどうすんべ?
環境構築はWindows+IIS+.NETFrameworkでC#の方が間違いが少ない
どう転んでもこれで設定に失敗するってことはないと思うが
0390nobodyさん
2007/10/05(金) 13:17:56ID:???PHPのOOPすらしてないみたいだし。
だから何やっても中途半端に終わる予感。
Web技術云々ならHTTP関係の勉強したら?と思った。言語はPHPのOOPでも。
0391nobodyさん
2007/10/05(金) 13:24:29ID:???確実にできるものだけ選択しててもレベルアップにはならんのでは?
環境構築だって立派なスキルだし、独学なら教科書読むより失敗から学ぶ方が身につく。
0392nobodyさん
2007/10/05(金) 13:42:15ID:0zJjw8jk位置情報のデータベースをダウンロードして
MySQLに全部ぶちこみたいんだけど、
何せ量が多すぎる・・・
全部で1GBくらいになるんだが、レンサバじゃきつい
何かいい方法ないかな?
0393360
2007/10/05(金) 13:46:22ID:???>>390 の書いたHTTPプロトコル勉強するのはいいね
セッションのしくみ知らない人多いとおもう
phpで書かれたフリーソフト読むとかでもいいかも
どっかのフレームワークとかいいんじゃね?
どうしても、
oopやりたいんならjavaとかC#のほうがいいとおもう
phpは標準でクラスライブラリないから
与えられる道具もクラスの言語の方が理解しやすいんじゃないかな
0395nobodyさん
2007/10/05(金) 14:10:05ID:yfT5K3xuそのデータを普通に取得しただけでは改行されませんよね
改行を<BR>に置き換えたいのですが、置き換える元(VBならvbcrlf)がわかりません
何になるのでしょうか?
0397395
2007/10/05(金) 14:16:24ID:???無事解決しました
0398nobodyさん
2007/10/05(金) 14:27:04ID:???0399nobodyさん
2007/10/05(金) 14:39:57ID:???0400nobodyさん
2007/10/05(金) 15:06:23ID:???gettype(-11.5478)
もやってみるとおもしろいよ
0402nobodyさん
2007/10/05(金) 15:24:44ID:OqMmbiqQ国土地理院のやつかな?
あれは重複が結構あるね。
重複分を整理、都道府県名や市町村名など余分なものはカット。
これで半分ぐらいになる。
0403nobodyさん
2007/10/05(金) 15:55:57ID:???if( ! is_array($hoge)){
$ tmp = array();
for($ i = 0; $i<strlen($hoge); $i++){
$tmp[$i] = substr($hoge, $i, 1);
}
$hoge = $tmp
if( ! is_array($hoge)){でhogeが配列でないことを調べているのに、
$hoge = $tmpで配列に変換しているということは、
左辺が変数で右辺が配列のとき値の代入すると、
自動で左辺の変数が右辺の方の配列に変換されるのでしょうか?
0404nobodyさん
2007/10/05(金) 16:03:46ID:???$hoge = $tmpの前後で$hogeをデバッグプリントすれば?
0410nobodyさん
2007/10/05(金) 17:39:05ID:???PHP4だったら $tmp の持っている値を $hoge に代入になるんだけど
PHP5は $hoge =& $tmp を暗黙に行う
0413nobodyさん
2007/10/05(金) 20:06:21ID:/jiD7c/gphpだとどのようにしたらできますか?
0414nobodyさん
2007/10/05(金) 20:08:38ID:/jiD7c/g0415nobodyさん
2007/10/05(金) 20:11:26ID:???0416nobodyさん
2007/10/05(金) 20:14:47ID:/jiD7c/g平たくいうとlolipopのレンタルサーバです。
0417nobodyさん
2007/10/05(金) 20:20:31ID:???0418nobodyさん
2007/10/05(金) 20:26:08ID:???0419nobodyさん
2007/10/05(金) 20:45:34ID:/jiD7c/g>>417
それは何かの関数で使うんでしょうか?
0420nobodyさん
2007/10/05(金) 20:46:28ID:???0421nobodyさん
2007/10/05(金) 21:08:20ID:/jiD7c/gsystem("ping $host");
こんな感じでしょうか?
0423nobodyさん
2007/10/05(金) 22:36:46ID:???0425nobodyさん
2007/10/05(金) 23:40:08ID:/jiD7c/g0426nobodyさん
2007/10/05(金) 23:49:03ID:???例 array_key_rename($hash, $key, $rename);
配列の中から特定のキーを除いた配列を返す関数ありますか?
例 array_key_remove($hash, array('key1','key2','key3'));
0427nobodyさん
2007/10/05(金) 23:52:18ID:???つhttp://www.php.net/manual/ja/
0429nobodyさん
2007/10/06(土) 00:03:41ID:???物凄く頭のおかしい事を言ってるような気が
0431nobodyさん
2007/10/06(土) 00:14:47ID:???0433nobodyさん
2007/10/06(土) 00:17:55ID:???つhttp://item.rakuten.co.jp/book/1721279/
0434nobodyさん
2007/10/06(土) 00:38:14ID:???>>412
PHP5はオブジェクト型を暗黙で参照渡しするんじゃないか?
配列はオブジェクト型でしょ。
ただ>>403の答えにはまったく関係ないけど
0437nobodyさん
2007/10/06(土) 00:48:25ID:???> PHP5はオブジェクト型を暗黙で参照渡しするんじゃないか?
それはそうだが
> 配列はオブジェクト型でしょ。
そんな与太話をどっから拾ってきたんだ。
0438nobodyさん
2007/10/06(土) 00:58:59ID:???0439nobodyさん
2007/10/06(土) 01:06:24ID:???保存されてないんだけどなんでだろう
ダウソした見本コードでも保存されてないし
0443nobodyさん
2007/10/06(土) 01:15:18ID:???cookie.php
<head>
<title>クッキーでデータを記録する</title>
</head>
<body>
<form method="POST" action="cookie_rec.php">
E-Mailアドレス:
<input type="text" name="email" size="30" maxlength="50"
value="<?php print($_COOKIE['email']); ?>" />
<input type="submit" value="送信" />
</form>
</body>
</html>
cookie_rec.php
<html>
<head>
<title>クッキーでデータを記録する</title>
</head>
<body>
<?php setcookie("email",$_POST['email'],time()+(60*60*24*90)); ?>
クッキー"email"を保存しました。
</body>
</html>
こんなんです・・・・
0444nobodyさん
2007/10/06(土) 01:17:10ID:???本だから簡易化して説明するのは当然としてもひどすぎる
0445nobodyさん
2007/10/06(土) 01:20:59ID:???自信ないけどクッキーってhtml本体より前に発行しないといけなくなかったか?
setcookie
http://jp2.php.net/manual/ja/function.setcookie.php
etcookie() は、その他のヘッダ情報と共に 送信するクッキーを定義します。
ほかのヘッダ情報と同様に、 クッキーは、スクリプトによる他のあらゆる出力よりも前に 送信される必要があります(これはHTTPプロトコルの制約です)。
<html> や <head> タグはもちろん 空白も含め、あらゆる出力よりも前にこの関数をコールするようにしなければなりません。
0446nobodyさん
2007/10/06(土) 01:21:29ID:???>>438
$arr1 = array('a'=>2);
$arr1[] = $arr1;
var_dump($arr1);
参照になってないか?
0447nobodyさん
2007/10/06(土) 01:22:06ID:???例 array_key_rename($hash, $key, $rename);
配列の中から特定のキーを除いた配列を返す関数ありますか?
例 array_key_remove($hash, array('key1','key2','key3'));
質問に答える方は、>>1の内容をよく読んでから答えてください。
答えになっていないリンクはいりません。
0448nobodyさん
2007/10/06(土) 01:22:53ID:???0451nobodyさん
2007/10/06(土) 01:29:41ID:???その一言がいえないんですよね?w
0452nobodyさん
2007/10/06(土) 01:30:29ID:???スレ違い
http://pc11.2ch.net/test/read.cgi/php/1158647441/
0454nobodyさん
2007/10/06(土) 01:32:48ID:???すこし落ち着いたらどうですか?w
PHPが大好きなのはわかりますが、
ないものは素直にないといいましょうよ。
それだけでしょ?
0460nobodyさん
2007/10/06(土) 01:44:53ID:???厳密には
php5ではオブジェクトをハンドルで渡すんだよ
参照がデフォルトってわけじゃない
あとphpはリファレンスカウンタっていうのがあるから
スクリプト上でコピーしても、内部的には実際にデータが変更
されたタイミングでコピーしてる
0461nobodyさん
2007/10/06(土) 01:52:56ID:???<?php
$a = array(1,2,3);
$b = $a;
$b[0] = 9;
var_dump($a);
var_dump($b);
?>
結果
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
array(3) {
[0]=>
int(9)
[1]=>
int(2)
[2]=>
int(3)
}
どこが参照だって?
0462nobodyさん
2007/10/06(土) 01:54:59ID:???そのケースは知ってるからあえて>>458にしたんだけど?
>>460 おお、変更したら本当にコピーされた。勘違いしてた。
0465nobodyさん
2007/10/06(土) 02:01:09ID:???0469nobodyさん
2007/10/06(土) 02:38:09ID:???0470nobodyさん
2007/10/06(土) 02:42:39ID:???態度がでかい質問が>>1嫁&誘導
ていうか>>1読めってわざわざご親切に誘導するのもあれだな
これからは徹底放置でいこうぜ
スレタイだけ読んで質問スレだから適当に質問すればいいじゃなくて
テンプレ読んで質問するのがここでのルール
ID出すのがなんで嫌がるのか理解できない
質問した後自作自演で回答者側に突っ込みいれたければsageればID出ないだろ?
それに同じIDで複数回質問したっていいじゃないか
0471nobodyさん
2007/10/06(土) 02:44:56ID:???代入の仕組みは以下参照
http://derickrethans.nl/files/phparch-php-variables-article.pdf
>>461の例だと
$b = $a; ← この時点では$bは$aを指している
$b[0] = 9; ← ここで初めて$bはデータの実体を持つ
PHPのスクリプト上で検証しようとしても無理
0473nobodyさん
2007/10/06(土) 03:29:10ID:???new StdClass() はオブジェクト
リファレンスカウントは
debug_zval_dumpでみれるよ
0474nobodyさん
2007/10/06(土) 03:52:44ID:qCDvmkUY見つけられなかったので、こちらで質問させてください。
自分が使っているのはPHP4です。
$aに適当な整数が代入されているとき、その値が0、3、17のときだけ
共通の処理をしたいのですが、自分はif文で、
if (($a===0) or ($a==3) or ($a==17)) 処理;
みたいに書いてます。
これって自分でも冗長だと思ってるのですが、
他にもっとシンプルに書ける方法ってありますか?
ただ、処理したい値が2,3通りしかないような場面でのことなので、
できれば配列やループは使いたくないんです。
我侭言って申し訳ないのですが、どなたかよろしくお願いします。
0475nobodyさん
2007/10/06(土) 03:59:20ID:???if (in_array($a,array(0,3,17))) {
echo 'ほげほげ';
}
で良いじゃないかと思ったら配列はダメって言うし
あえて言うなら囲まずに
if ($a === 0 || $a === 3 || $a === 17) {
echo 'とか?';
}
0476nobodyさん
2007/10/06(土) 04:06:12ID:1HWd7HDNpreg_replace
0477nobodyさん
2007/10/06(土) 04:13:04ID:???switch ($a):
case 0:
case 3:
case 17:
ヒットした時の処理;
break;
default:
endswitch;
0479403
2007/10/06(土) 04:28:27ID:???>iif( ! is_array($hoge)){でhogeが配列でないことを調べているのに、
>$hoge = $tmpで配列に変換しているということは、
>左辺が変数で右辺が配列のとき値の代入すると、
>自動で左辺の変数が右辺の方の配列に変換されるのでしょうか?
?なんですけど。
0482nobodyさん
2007/10/06(土) 04:37:51ID:???それのやってる事は
if( ! is_array($hoge)){ // 配列ジャナイ場合(これobjectとかがきたらどーすんだis_stringとかにしたらいいのに)
$ tmp = array(); // 配列初期化
for($ i = 0; $i<strlen($hoge); $i++){ // $hogeを文字列と仮定して文字の長さ文ループ
$tmp[$i] = substr($hoge, $i, 1); // 1バイトずつ文字を切り出して配列に格納
}
$hoge = $tmp; // $hogeに格納
}
多分この後に何か$hogeを使った処理を使うためにしてるだけじゃないかな
0483nobodyさん
2007/10/06(土) 04:40:11ID:???そんなことは最初から403も分かってるよ。
スカラーの変数に配列の変数を代入なんて何故できるの?って話。
CかJavaみたいなガチガチ言語に頭が毒されてるんでしょ。
0484403
2007/10/06(土) 04:50:04ID:???>CかJavaみたいなガチガチ言語に頭が毒されてるんでしょ。
ズバリそうなんです。
「もう、こんなもんだ」と無理矢理納得するしか無いのかな。
こんな事許されてたら、メンテナンス悪くなるし、可読性低くなるし、
危険じゃないのかしら?
とりあえず、有り難うございました。
0485474
2007/10/06(土) 04:51:11ID:qCDvmkUYまさかこんなに早くお答えいただけると思ってませんでした。
お礼が遅くなって申し訳ありません。
自分の書き方でも特に冗長ではないというご意見をいただき安心しました。
でも、475さんや477さんのアドバイスはとても勉強になりました。
状況に合わせて使ってみたいと思います。
みなさん、本当にありがとうございました。
0486nobodyさん
2007/10/06(土) 04:53:04ID:???なんだそんな事か(´・ω・`)
俺は自分の中で型を意識した組み方してるけど
そこらへんは組み方次第でどーとでもなるんじゃないかなぁ・・・
意識するとメンドイ事多いけど・・・
0487474
2007/10/06(土) 04:56:47ID:qCDvmkUY476さんのご指摘の preg_replace を使う方法は
後で自分でも調べて確認してみます。
アドバイスありがとうございました。
0488nobodyさん
2007/10/06(土) 05:11:58ID:1HWd7HDN御免間違えた
preg_match
0489nobodyさん
2007/10/06(土) 05:27:00ID:???ここまで適当なのは他にあまり無いよ。
0490nobodyさん
2007/10/06(土) 07:01:28ID:???Perlはわざわざmyをつけないと歴史駆るスコープにならないような言語だし
0491nobodyさん
2007/10/06(土) 09:46:45ID:hKjy3c4n0492nobodyさん
2007/10/06(土) 09:53:27ID:???0493nobodyさん
2007/10/06(土) 10:03:02ID:???内部変換しているかどうかの違いだけ
0494nobodyさん
2007/10/06(土) 10:06:12ID:???のは可読性があがって俺は好きだ
0495nobodyさん
2007/10/06(土) 11:01:19ID:???0496nobodyさん
2007/10/06(土) 11:02:25ID:???$thisもだけど->がめんどくさい。「.」は文字列結合で使用済みだから仕方ないけど。
最近Ruby始めたら変数の$すら面倒になってきた。始めた頃は変数わかりやすいと思ってたのに。
チラシの裏スマソ
0497nobodyさん
2007/10/06(土) 11:20:23ID:???0498nobodyさん
2007/10/06(土) 11:27:26ID:???0499nobodyさん
2007/10/06(土) 11:37:53ID:???給料は安いくせにやたら条件が高いから困る
未経験歓迎なのは使い捨てのJavaだな
0500nobodyさん
2007/10/06(土) 11:46:26ID:???いやいや、そういう感覚は大事だと思うよ。
ただ、型に縛られる必要は無いと思う。
function hoge($val)
本来$valはarrayである。と決めきってしまうと
要素数が1のときもわざわざarrayにしてから関数よばなきゃいけない。
ところが、内部でarrayじゃないときは、arrayにしてやる
処理を入れておけば、関数の外部仕様的には
複数指定したいならarrayにしてちょ。
単数ならわざわざarrayにしなくてもいいよ。
という緩さが実現できる。
0501500
2007/10/06(土) 11:48:38ID:???$year = 2001;
とかしてるのに変数を流用して
$year = 年とは無関係の何か;
とかされるとストレスかかるな。
0503nobodyさん
2007/10/06(土) 12:20:35ID:???500じゃないが
俺は外部で型変換するなー
内部で変換させたら関数内がどんどん見難くなるし。
変換する事が多いなら変換用の関数作ってその関数から呼ぶようにしてたりはするけど。
0504500
2007/10/06(土) 12:23:12ID:???内部であえてチェックするかってこと?
エラーになる要因は早めにつぶすべきだから、
チェックするのは良い習慣だと思う
ただ、すべてでチェックはオーバーヘッドになるし、書くのめんどくさいから
適度に手抜きしてるかな
パラメータに限らないが前提条件を満たしているか
チェックすることはよくある
0506nobodyさん
2007/10/06(土) 12:41:37ID:???0508nobodyさん
2007/10/06(土) 12:44:39ID:???0509nobodyさん
2007/10/06(土) 12:45:40ID:???0510nobodyさん
2007/10/06(土) 12:46:49ID:???0512nobodyさん
2007/10/06(土) 12:51:21ID:???0513nobodyさん
2007/10/06(土) 13:23:50ID:JwDld5m1以下頭からの処理の流れ。
・POSTのみで渡される値はPOSTのみ、GETならGETのみで取得
・GETで来ないはずの値が来たらはじく。
・変数の型と値のとりうる範囲や文字列の長さ、形式に添っているか
型判定関数や正規表現でチェックし、不正なものをはじく。
ただしフォーム入力値などキーボードで入力するものを除く。
:
・値を使用する関数内で、型や値の範囲、文字列長さなどを上と同じように
チェック。フォーム入力値などは誤入力の可能性があるので
エラー表示して再入力を促して終了。
・HTML表示する場合はすべての変数をエスケープして表示。
・DBにアクセスする場合はPrepared Statementで値を渡す。
(今のところエミュレーションじゃないので普通に渡してる)
・ストアドで値の妥当性をチェックし、例えば存在しないはずのユーザーID
とかだったら不正入力の結果を返して終了。誤入力の可能性のある
値であれば別の結果を返して終了。問題なければ処理を実行。
(DB処理はすべてストアド使ってます。生SQL文はソースに書いてません)
・ストアドからの返り値から、はじくなりエラー表示するなり処理結果を
表示するなり行う。
はじくってのは強制的にセッション切ってます。
正当性判定の関数を作っておくくらいで、上のような地道なやり方しか
思いつかないんだけど、こういう便利なものがあるよとかこうしたほうがいいよ
とかこんなのも知らないの?とかあったら教えてくださいませ。
フレームワーク使ってないけど、こういうのが楽になるのかなあ。
0514nobodyさん
2007/10/06(土) 13:41:51ID:???そkらへんの処理めんどくさいからフレームワーク使ってる
簡単なもんだったら期待値以外はエラー
クエリー実行は全てぷりぺあ通して使ってる
0515nobodyさん
2007/10/06(土) 13:49:34ID:???かならずしも回答がくるとは限らない
回答者のレベル・回答者の気分で影響するからだ。
質問者はどうやったら回答率をあげられるか考えてから言葉を選んだほうが良い
0516nobodyさん
2007/10/06(土) 14:18:15ID:???それを形にしようとする努力をするタイプかどうかが重要なんじゃないかな?
すごいといわれるプログラマや技術屋は掃いて捨てるほどいるけど、頭の柔軟なやつは少ないからね
起業するなら特にコミュニケーション能力なんかにも長けている必要がある
物事をシステマチックに考えて合理的な道を歩むのは得意だけど、逆を返せば不必要な回り道をしたくないばかりに
それに重点を置かないから結果的に評価がされなかったりと、そのあたり不器用な人多いね
0517nobodyさん
2007/10/06(土) 14:38:54ID:QcrZFc+A四苦八苦しながらやっている者です。
PHPをやっていて、どうしても解決できなかったので教えて下さい。
BASIC言語でいう、GOTO文ってPHPだとどうやって書けば宜しいのでしょうか?
あと、PHPだと、文法エラーの際に行番号がでるのはいいのですが、
PHPコードの先頭に行番号を書こうとすると、それが原因で文法エラーがでてしまします。
これは環境が悪いせいなのでしょうか?今は行番号を書かずに、先頭から数えています。
すみません、二点質問お手数ですが宜しくお願いします。
0521nobodyさん
2007/10/06(土) 14:45:23ID:???って書けばok
0522nobodyさん
2007/10/06(土) 14:55:18ID:QcrZFc+A>>520さん
>>521さん
早速のお返事ありがとうございます。
行番号は、コメント文として書けば宜しいんですね。ありがとうございます。
行番号をコードに書いていないのに、コンパイラが勝手に行番号を認識しているので、面食らってしまいました。
隠れている行番号を見せてくれるエディタ(ソフト)って、何があるのでしょうか?
私が今使っているのは、Windowsで標準ソフトであるメモ帳です。
あと、GOTO文についての回答どうもありがとうございました。
PHPって、GOTO文ないんですか。それはかなり辛いですね。
ネットで検索していても無かったんで、もしかしてと思っていたのですが。
今相当青い顔になっていますが、頑張ってやってみます・・・
どうもありがとうございました。
0523nobodyさん
2007/10/06(土) 15:01:49ID:???何度も同じ処理をしたいなら関数作れば良いし
ループを抜けたいとかならbreakと書けば良い
はっきり言ってgotoなんか無くても書けるよ
エディタは
emeditorとか秀丸とか一般的なエディタなら普通にできるし
PHPエディタ_スタンドアロン版とか使えば良いんじゃないかな
0524nobodyさん
2007/10/06(土) 15:05:46ID:???なんて質問投げられたら発狂するかも。(ちょっとオーバーだけど)
0525nobodyさん
2007/10/06(土) 15:25:18ID:???ネタなのかって疑ってしまいそうになるけど、BASICの考え方は
捨てたほうがいい。goto文なんていまどきの言語じゃ仮に実装
されててもまず使わない。
BASICでもgoto使うとスパゲティプログラムになっちゃいやすい
とかで、構造化プログラミングとか推奨されてたはず。
labelとかでcontinueからの飛び先を指定するのとかはあったり
するけれど。
行番号もやっぱりない。
それじゃ分かりにくいので、たいていは行番号を表示してくれる
エディタを使ってコード書く。コードそのものに行番号書く必要はない。
っていうか君はまず本なり買って基本的なこと学ぶべきだと思うよ。
プログラミングの感覚そのものは役に立つと思うけど、「BASICのように・・・」
とか考えちゃうと却って足踏みするだけだと思う。
0526nobodyさん
2007/10/06(土) 15:32:14ID:???0527nobodyさん
2007/10/06(土) 15:52:29ID:???まぁたまにGOTOほしいと思うことはあるよ
0528nobodyさん
2007/10/06(土) 16:02:51ID:???0529nobodyさん
2007/10/06(土) 16:08:00ID:???0530nobodyさん
2007/10/06(土) 16:08:11ID:kTZnfqET0532nobodyさん
2007/10/06(土) 16:28:59ID:???20 モニタの白が茶色に見えてくる
30 CLEAR SCREEN '掃除する
40 GOTO 10
0533nobodyさん
2007/10/06(土) 16:30:56ID:???そんなことも出来ない言語はおhる
0534nobodyさん
2007/10/06(土) 16:34:22ID:???自動的に、ってのがプログラムを書かなくても勝手に、って意味なら無い。
素直に
テンポラリディレクトリにアップロード(自動)→ディレクトリ生成→そこにファイル移動
ってコードを書けばいいと思うよ。
0535nobodyさん
2007/10/06(土) 16:36:27ID:???出社
while(true){
仕事しながらタバコふかす
モニタの白が茶色に見えてくる
CLEAR SCREEN '掃除する
if(終業時間<=時計) break
}
退社
0536nobodyさん
2007/10/06(土) 16:37:16ID:???いまどきはBasicでもgotoはまず使わないし、先頭に行番号も書かないよ。
機能ごとにfunctionで処理を書いて、それを呼び出し→終わったら自動で戻る、を使う。
ファイルの行番号についてはプログラム向けのテキストエディタなら大抵表示してくれる。
0537nobodyさん
2007/10/06(土) 16:41:41ID:???どうでもいい事だが、
> if(終業時間<=時計) break
の所は、オレなら
if(終業時間==時計) break
と書く。じゃないとバグの発見が遅くなる。
0538nobodyさん
2007/10/06(土) 16:44:33ID:U5yeBGyi調べても置換用の関数しか出てきません・・・・
0539nobodyさん
2007/10/06(土) 16:52:23ID:???0540nobodyさん
2007/10/06(土) 16:53:07ID:???私はwhileにtrue突っ込むのいやなので、
while(終業時間>時計){としたいところなのだが。
>>535だと、出社の時点で終業時間 > 時計だったときに無駄に処理が動いてしまわないかい?
0541535
2007/10/06(土) 16:56:52ID:???そうですね>>while(true)
最初はifなしの無限ループにするつもりだったので
ネタなのでそこまで厳密に考えてません>>出社時間
0542nobodyさん
2007/10/06(土) 16:58:47ID:???どうせ雑談スレ作っても人少なすぎて閑古鳥状態だろうからこのままでいいよな?
0543nobodyさん
2007/10/06(土) 17:00:39ID:???123.123.123.123/20
に対して最後の20をとりたい場合
$str = 'fasdasda123.123.123.123/20fasrdqwrgsy4';
$ret = preg_match('!\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/(\d{2})!',$str,$match);
って感じにpreg_matchの第3引数に変数を入れてやると20が入ってくる
0544nobodyさん
2007/10/06(土) 17:00:56ID:???0545nobodyさん
2007/10/06(土) 17:02:55ID:???マッチしたか否かも、マッチした文字列取得も、書いてある気がするが
preg_match
http://jp2.php.net/manual/ja/function.preg-match.php
preg_match_all
http://jp2.php.net/manual/ja/function.preg-match-all.php
正規表現の結果とは何?
0546nobodyさん
2007/10/06(土) 17:11:03ID:???をループの先頭に入れればいいんじゃね?ちがう?
0547nobodyさん
2007/10/06(土) 17:14:02ID:???0548nobodyさん
2007/10/06(土) 17:28:42ID:???ちんちんちょん切っちゃうぞ、ってレスに、私女ですから、っていたら、男ですから、ってレスすればいいのに、医学的についているハズだとするのは興ざめに他ならない。
0550nobodyさん
2007/10/06(土) 17:43:29ID:???それだとタバコ休憩が長くなったりしてとっくに終業時刻を過ぎてると
帰れなくなったりしないか?w
終業時間の判定が分単位でなく時単位とかなら大丈夫かもしらんが。
>>540
ループに入る前の段階で if(時刻 > 終業時刻) 終業時刻 = 99; みたいに
例外状態に切り替えるのがいい気がする。
ま、どっちにしろループの終了判定はループ先頭ですべきだな。
0551nobodyさん
2007/10/06(土) 20:13:41ID:???php暦3年にもなろうというのにw
0552nobodyさん
2007/10/06(土) 20:21:30ID:???初めに学んだ言語が自分のデフォルトになっちゃって
他を軽蔑しがちになるよね
0553nobodyさん
2007/10/06(土) 20:54:23ID:???正直どれも好きだ
0554nobodyさん
2007/10/06(土) 20:59:50ID:???ループの外からいきなり飛び込んできたりとか
そんなスパゲッティなコードに悩まされた時期がありました
#あの過ぎ去った時間は無かったことにしたい黒歴史
0555513
2007/10/06(土) 21:20:05ID:JwDld5m1お返事ありがとう。
やっぱりフレームワーク使う以外楽するやり方ないのかな。
ちょっとやり方が泥臭い気がしてたんだけど必要な処理だし。。
0556nobodyさん
2007/10/06(土) 23:54:35ID:???0557nobodyさん
2007/10/07(日) 01:41:52ID:???0558nobodyさん
2007/10/07(日) 02:31:36ID:???/ / ヽ ::: \
| (●), 、(●)、 |
| ,,ノ(、_, )ヽ、,, |
| ,;‐=‐ヽ .:::::|
\ `ニニ´ .:::/ NO THANK YOU
/`ー‐--‐‐―´´\
.n:n nn
nf||| | | |^!n
f|.| | ∩ ∩|..| |.|
|: :: ! } {! ::: :|
ヽ ,イ ヽ :イ
0560nobodyさん
2007/10/07(日) 08:16:21ID:ucFl6OYUお礼のレスをしようとしたところ、数日アクセス拒否されておりまして、
レスが遅れて申し訳ありませんでした。
おかげ様で何とか先に進めそうです。どうもありがとうございました。
0561nobodyさん
2007/10/07(日) 08:44:53ID:???PHP 6でgoto文導入へ
http://itpro.nikkeibp.co.jp/article/COLUMN/20060327/233460/
0562nobodyさん
2007/10/07(日) 09:01:32ID:???goto文とかいらねーよ
0563nobodyさん
2007/10/07(日) 09:26:12ID:???ベーシック言語の特権みたいなものだしさ
0564nobodyさん
2007/10/07(日) 09:55:39ID:???0565nobodyさん
2007/10/07(日) 10:36:19ID:???0566nobodyさん
2007/10/07(日) 10:42:28ID:???処理速度の観点から言えば、(計算内容によるが)相当不利だよ。
0567nobodyさん
2007/10/07(日) 11:08:31ID:???Rubyは松本が面倒くさいからという理由で実装されてない
0568nobodyさん
2007/10/07(日) 11:09:07ID:???0569nobodyさん
2007/10/07(日) 11:20:09ID:???0570nobodyさん
2007/10/07(日) 11:49:26ID:???0572nobodyさん
2007/10/07(日) 12:49:22ID:???そういうツールとかある?
0575nobodyさん
2007/10/07(日) 16:49:57ID:9C3AWJOKクッキーについてですが、配列をクッキーに入れる場合全て上書きされるのでしょうか?
既存のクッキー配列に値を追加するということは可能なのでしょうか?
あと配列の名前設定は「cookie_name[]」←でいいのでしょうか?
たとえばこんな感じ
$hoge_arr = array("りんご", "みかん", "ぶどう");
$str_arr = array_push($hoge_arr, "バナナ", "マンゴー");
setcookie ("cookie_name[]", $str_arr );
if (isset($_COOKIE['cookie_name[]'])) {
foreach ($_COOKIE['cookie_name[]'] as $name => $value) {
echo "$name : $value <br />\n";
}
}
0576nobodyさん
2007/10/07(日) 16:51:29ID:9C3AWJOK$hoge_arr = $_COOKIE['cookie_name[]'];
$str_arr = array_push($hoge_arr, "バナナ", "マンゴー");
setcookie ("cookie_name[]", $str_arr );
if (isset($_COOKIE['cookie_name[]'])) {
foreach ($_COOKIE['cookie_name[]'] as $name => $value) {
echo "$name : $value <br />\n";
}
}
0577nobodyさん
2007/10/07(日) 16:56:05ID:???0578nobodyさん
2007/10/07(日) 17:03:20ID:???自ずと答えは出てくると思うけど・・・
もしそれでも解らないなら多次元配列から勉強すればいい
0579nobodyさん
2007/10/07(日) 17:15:02ID:???0580nobodyさん
2007/10/07(日) 17:15:15ID:4hyano09設置したところの自分のところのURLからのみ、メールを送信できるようにしたいと思うのですが、
他のURLからメール送信されないようにしたいのですが、
クッキーを使って対策したいと思います。
2ちゃんのようにハナモゲラみたいな語句を発行して、それで自分とこのURLから
メール送信されたか判断するのが妥当でしょうか?
0581nobodyさん
2007/10/07(日) 17:23:22ID:???どっちにしろリファラ偽装してくるような奴はクッキーも偽装してくるだろうし。
0582nobodyさん
2007/10/07(日) 18:34:41ID:???0583nobodyさん
2007/10/07(日) 18:37:34ID:Dz4kk+z7PHPマニュアル[http://www.php.net/manual/ja/]のコードなどは転載してもいいものなのでしょうか
PHPの質問ではなく著作絡みの問題だと思うのですが他に質問できる場所もわからなくて・・・
すみませんが宜しくお願いします
0584nobodyさん
2007/10/07(日) 18:41:50ID:???ありませんでしょうか?。ラインはなくて空白でシフトするのでも良いのですが・・・。
0585nobodyさん
2007/10/07(日) 18:45:06ID:???0586nobodyさん
2007/10/07(日) 18:47:34ID:???http://www.opensource.gr.jp/openpub/
オープン・パブリケーションのライセンスの翻訳からそれらしいところを
抜き書きすると次のようになります。
>オープン・パブリケーションである著作物かその一部を、
>同一の媒体上に他の著作物やプログラムと一緒に集めただけならば、
>本契約書が他の著作物にまで適用されることはない。
>しかし、そのような集積著作物には、オープン・パブリケーションである作品を含んでいる
>という通知と、適切な著作権表示を含めなければならない。
0590nobodyさん
2007/10/07(日) 18:57:40ID:1Vf0WhZEしかし以前、
「自分のPCにサーバ入れると、
自分のPCの中が丸見えの状態に
なるからセキュリティに注意」
と言われたんですが、どうすればよいですか?
0591nobodyさん
2007/10/07(日) 19:00:55ID:???0593nobodyさん
2007/10/07(日) 19:58:59ID:d3go+S9rhttp://neatstyle.p.cmssquare.com/
0594nobodyさん
2007/10/07(日) 20:26:54ID:???Apacheの設定で自分のPCの中が丸見えの状態にならないようにすれば大丈夫です。
基本的にはApacheの問題なのでApacheのスレで聞きましょう。
あと手っ取り早い?方法として、ルーターで80ポート塞いで外部アクセスを遮断する手もあるよ。
ローカルでテストできればいいだけならそれもアリ。
0595nobodyさん
2007/10/07(日) 20:31:14ID:???学習資料で、本文中のサンプルコードを記載するならともかく、
下のコメントまで記載する必要はないんじゃない?
で、サンプルには固有の著作権とかはないでしょ。
学習資料に「php.netのマニュアルからの転載である」と明記しときゃ問題ないかと。
0596nobodyさん
2007/10/07(日) 20:43:30ID:???外部に向けて公開さえしなけりゃ何の問題もない
右も左もわからない奴が外部にポート開くこと自体無謀というか馬鹿
0597nobodyさん
2007/10/07(日) 20:47:48ID:???俺俺判断いくない
Website Copyright
http://www.php.net/copyright.php
0599nobodyさん
2007/10/07(日) 20:57:25ID:Dz4kk+z7レスありがとうございます
>>597の文章読んでみましたがこういうことでOKでしょうか?
・このサイトの全てはこっち(php.net)に著作権があるよ
・ライセンスならOKですよ(?)
・三番目がよくわからない・・・
0600nobodyさん
2007/10/07(日) 21:02:23ID:???0601nobodyさん
2007/10/07(日) 21:13:20ID:???量的な労力が増すにしてもサンプルくらい自力で書いて欲しいとは思う
そのくらいの力量(技術)は備わってるだろうし
0602nobodyさん
2007/10/07(日) 21:22:10ID:???0604nobodyさん
2007/10/07(日) 21:32:35ID:Dz4kk+z7コードなら自力で書けるのですが
たとえばregister_globalsの動作を問題として出したときに
抜けてる知識がないかマニュアルページを見に行きますよね?
そうしたときに自分が知らなかった情報を引用していいのかってことです
ex)問題:register_globalsがONの時に気をつけるべき点を答えなさい
自分の知らなかったことを選択肢として追加→使用する前に変数を初期化すべきである
0605nobodyさん
2007/10/07(日) 21:42:52ID:???0606nobodyさん
2007/10/07(日) 22:00:26ID:???だからさ、その引用の良し悪しの判断できる唯一はPHP Groupじゃないの?
聞くところが無いって…そこに問い合わせるしかないんじゃないの
webmasterが適切かどうかわからんけど
0608nobodyさん
2007/10/07(日) 23:35:54ID:Dz4kk+z7とりあえず先ほどメールだしてみました
返信が来ましたらここにまた結果を報告しようと思います
どうもお騒がせしました 皆様ありがとうございます
0609nobodyさん
2007/10/07(日) 23:51:21ID:???考えています。
この時、条件にあうデータが1件のみであればそのまま結果を返し、
複数存在する場合には別窓に一覧を表示して選んでもらったものを
戻り値として返すような処理をしたいのです。
1件のみの場合の処理の見当はつくものの、複数ある場合の選択結果を
どうやって受け取ればいいのかがわかりません。
どういった方法がありますでしょうか?
0610nobodyさん
2007/10/07(日) 23:58:16ID:???> 複数存在する場合には別窓に一覧を表示
検索結果によって別窓を出すか出さないか切り替えるってのは
JavaScript使わないと無理なんじゃないかな…
0612nobodyさん
2007/10/08(月) 00:11:37ID:???複数のうち1件選択してもらうだけだから
inputを配列にする必要はないんじゃね?
検索キーをキー+ユニークIDの組み合わせで受け取るか
キー+n件目という組み合わせで受け取ればいいと思う。
0614nobodyさん
2007/10/08(月) 00:18:02ID:???0615nobodyさん
2007/10/08(月) 00:24:52ID:???>>別窓に一覧を表示して選んでもらったものを戻り値として返すような処理
ここが今一判らないんだがWikipediaみたいな検索結果にしたいという事かな?
「PHP」で検索だとPHP言語、PHP研究所、PHSの旧名称…という曖昧さ回避のためのページ(=一覧)が表示、
「PHP: Hypertext Preprocessor」で検索すると(結果が1件しかないから)PHP言語のページに飛ぶ、みたいな。
ヨドバシやAmazonだと結果が1件でもリスト表示と同じにしてるからそっちの方が簡単と思うけどそれだとヤなのね?
0616609
2007/10/08(月) 01:01:20ID:nnv6gR3zさっそくありがとうございます。
確かに内容が漠然としてました・・・
形としては、入力フォームに入力されたコードを翻訳した結果を
返す形のものなのですが、1つのコードに複数の内容が割り当て
られているものがある場合には、選択窓で選択してもらえるように、
という感じになります。
フォームは固定でボタンが押されたら処理、という感じになるので
Wikipediaのように窓の内容自体の置き換えは難しいかな、と思います。
参照する場所が1箇所だけならJavascriptを限定で埋め込んでも
いいのかも知れませんが、別の項目に対する同様の処理を1つの関数で
まとめられないかと思いまして。
たしかに別窓を出して、という時点でJavascriptの方になってきそう
なのでPHPの話題じゃ無いかもしれません。
流れとしては、
onclickで更新のJavascript呼び出し
0617nobodyさん
2007/10/08(月) 01:05:22ID:???0618609
2007/10/08(月) 01:05:37ID:nnv6gR3z流れとしては、
onclickで更新のJavascript呼び出し
scriptから値を添えて検索用phpの呼び出し
検索用php内で、検索対象に応じて検索処理関数呼び出し
検索処理関数内でDB検索と検索結果を返す (←この処理)
その結果を親フォームのJavascriptで表示
という流れです。
0619nobodyさん
2007/10/08(月) 01:08:14ID:???んで何を答えろというのだろう。
関係ない話多すぎ。はしょれよ。
0620609
2007/10/08(月) 01:19:36ID:nnv6gR3zスレ違いのようですので、もう一度調べなおします。
ありがとうございました。
0621nobodyさん
2007/10/08(月) 01:38:19ID:???ポップアップ禁止+勝手に別窓開かせないアドオン入れてるから最近全然見かけない
(というか気付かないだけかもだが)
0622nobodyさん
2007/10/08(月) 01:40:32ID:???0624nobodyさん
2007/10/08(月) 01:48:04ID:???ポップアップ禁止でもユーザのクリックで1枚だけ開く分には普通に開けるし。
まぁでも、検索結果の候補出すのに別窓ってのはものすごくうざいと思う。
0625nobodyさん
2007/10/08(月) 01:50:21ID:???とりあえず複数候補から再検索の処理と別窓は話を分けろ。
前者は全然難しくないが後者が入った途端にアクロバットな処理になる。
0626nobodyさん
2007/10/08(月) 01:53:52ID:???0627nobodyさん
2007/10/08(月) 01:59:11ID:???a) ユーザが入力した検索結果が1つならmainフレームにその内容を表示、
b) 検索結果が複数ならsideフレームにその一覧を表示する。
c) 複数時はユーザがsideの一覧から1つをクリックするとその内容がmainに表示される(もち再検索)、
って事じゃないの?
それで>>609がしたいのはaとbのフレーム振り分け処理関数?
オレ、トンチンカン?
0628nobodyさん
2007/10/08(月) 02:07:08ID:???0629nobodyさん
2007/10/08(月) 02:14:53ID:???フレームか別窓かの違いはあるけど概ねそんな感じなのでは。
どっちにしろ検索結果で出力先を切り替えなんてPHPの仕事じゃないけど。
0630nobodyさん
2007/10/08(月) 02:25:14ID:???いやいや、そんな感じの処理でいいんでしょ。
で、質問者はどんな方法がありますかと問いを投げてるが
単刀直入にやり方わかんねえから教えれ、と。
要の部分を考えなきゃなんねえのに放棄して丸投げかよ、と。
0631nobodyさん
2007/10/08(月) 02:38:17ID:???ウィルスチェックしてないPCの方が丸裸にされる
可能性高いと思う
たいていの場合、Internetからの
アクセスはルータが阻止してくれるから、ローカルネット上で
サーバ立ち上げるだけなら、さして問題ではない
(グローバルネットからローカルネット上のサーバを
見えるようにするには、ルータの設定を変更しなければならない)
不安だったら、Etherの線抜いとけ←これ最強
0632nobodyさん
2007/10/08(月) 03:51:34ID:???ルーター使ってるかどうかも怪しいもんだ。
PCにモデム直のADSLやFTTHなユーザも少なくないぞ。
> 不安だったら、Etherの線抜いとけ←これ最強
この意見は正しい。
0633nobodyさん
2007/10/08(月) 03:53:08ID:???609的にはパラメータの受け渡し方法を聞きたいみたいなんだが
そもそも別窓の仕組みをどうやって実現するのか示してないから
こっちも回答のしようがないんだよな。
簡単な質問を餌に、難しい質問までいっぺんに聞こうとしてるように見える。
0634nobodyさん
2007/10/08(月) 03:55:52ID:???0635nobodyさん
2007/10/08(月) 04:06:27ID:???そこに一覧表示のURL渡す(再検索になるけど)か、JSのソースに一覧情報埋めてそれを別窓に出力させるとか?
素人考えですが。
0636nobodyさん
2007/10/08(月) 04:08:07ID:???0639nobodyさん
2007/10/08(月) 05:50:32ID:???0642nobodyさん
2007/10/08(月) 06:27:28ID:???ttp://www.google.com/search?num=100&lr=lang_ja&ie=Shift_JIS&q=JavaScript%20CrossLiblaries
> JavaScript CrossLiblaries に一致するページは見つかりませんでした。
0643nobodyさん
2007/10/08(月) 11:01:06ID:Cu10uF3bワロタwwww
0644nobodyさん
2007/10/08(月) 11:45:58ID:???次は何を覚えようかなー
0645nobodyさん
2007/10/08(月) 11:48:17ID:???0646nobodyさん
2007/10/08(月) 12:05:17ID:???0647nobodyさん
2007/10/08(月) 12:26:59ID:???http://pukapuka.sakura.ne.jp/cgi-bin/upload/puka/img-box/1191813670818.jpg
0648nobodyさん
2007/10/08(月) 12:32:44ID:???0650nobodyさん
2007/10/08(月) 12:42:53ID:???0651nobodyさん
2007/10/08(月) 12:47:56ID:???{;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;;
ヾ;;;ハ ノ .::!lリ;;r゙ PHPを一通り修得しアプリも組めるようになって飽きた
`Z;i 〈.,_..,. ノ;;;;;;;;>
,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f そんなふうに考えていた時期が
〜''戈ヽ `二´ r'´:::. `! 俺にもありました
0652nobodyさん
2007/10/08(月) 13:42:25ID:9TeQf+fQ出席管理を行うスクリプトを書いていて、複数の同一型フォーム(name="id[]")から出席者IDをPOSTで送っています。
その際、与えられたIDの情報をSQLから取得し、登録されていないIDが与えられている場合警告を出そうと考えています。
このとき、フォームに入力された順に内容を表示する必要があります。
ここで、質問なのですが、SQLから返ってくる出席者の情報 (ID, 名前, 等) の配列を持った配列 (結果的に2次元配列になります) を、 $_POST["id"][] の順でソートし、登録されていないIDを割り出そうとしています。
調べたところ、 usort で自作の関数を与えれば多次元配列のソートを行うことができるようですが、ソート対象内の比較しかできないようです。
そうではなく、外部の変数(出席者の情報)の並び方を尺度にソートするにはどのようにすればよいですか?
また、代替案がありましたらお教えください。
よろしくお願いします。
0653nobodyさん
2007/10/08(月) 14:03:35ID:MwfYaHDM0654nobodyさん
2007/10/08(月) 14:11:49ID:???http://jp2.php.net/function.array-multisort
0656nobodyさん
2007/10/08(月) 14:32:28ID:???出席管理っつうぐらいだから学校関係者か?
未登録IDを検出するんなら select id from テーブル名 where id = 入力id;
この問い合わせで済む
やろうとしているのは何? select * from テーブル名; で登録者のデータ全件
引っ張ってきて、フォームから入力されたIDの配列と比較して未登録IDを導く
ようなそういうこと?
俺バカだから理解できねえよ
0657nobodyさん
2007/10/08(月) 14:50:40ID:???8行目だけで十分じゃないか
0658nobodyさん
2007/10/08(月) 15:07:07ID:???$_POST["id"]配列を使ったループで表示処理をすればいいんじゃないの?
$result にSQL結果のIDリストが入ってるとして
foreach($_POST["id"] as $id) {
if(in_array($id, $result)) {
echo "あった";
} else {
echo "なかった";
}
}
みたいな。
$resultまでソートする必要なかろう。
0659nobodyさん
2007/10/08(月) 15:17:08ID:???>その際、与えられたIDの情報をSQLから取得し、登録されていないIDが与えられている場合警告を出そうと考えています。
>このとき、フォームに入力された順に内容を表示する必要があります。
この部分は自分なりに作ってるのか?
丸投げで代替案とか聞いてんじゃねえぞ
0660nobodyさん
2007/10/08(月) 15:17:16ID:???言ったらよろしw
0661nobodyさん
2007/10/08(月) 15:27:23ID:???俺だったら入力IDの数だけSQL叩いたりしないで
id in (xxxx,xxxxx,xxxxx....)
で一発で引いちゃうな。その方が速い。
0662652
2007/10/08(月) 15:30:03ID:9TeQf+fQみなさんありがとうございます。
文章が読みづらく、皆さんにご迷惑をお掛けして申し訳ないです。
>>656 さん
学校関係者ではありません。
目的は、SELECT id FROM テーブル名 WHERE ID='フォームからの入力 1' OR ID='フォームからの入力2' ......
でフォームから入力されたIDを持つ登録者のデータだけを抜き、
フォームから入力された配列と比較して未登録IDを導くことです。
>>658,660 さん
言われてみて、確かにその通りだと猛省しました。
ソートせずに$_POSTから間引けばよかったのですねorz
SQLからのレスポンスをいかにハンドルするかで頭がいっぱいでしたorz
>>659 さん
他の部分は機能する状態で未登録IDの処理だけ放置していました。
皆さんご多忙の中ありがとうございました。
0663nobodyさん
2007/10/08(月) 16:35:27ID:???0664nobodyさん
2007/10/08(月) 21:37:08ID:???0665nobodyさん
2007/10/08(月) 21:42:03ID:???0666nobodyさん
2007/10/08(月) 22:01:53ID:aQD+Fx51シンプルなサンプルってねーかしら?
0667nobodyさん
2007/10/08(月) 22:35:22ID:???0669nobodyさん
2007/10/08(月) 22:54:48ID:aQD+Fx51JavascriptでXMLRPCを叩く
シンプルなサンプルが載ってるサイトのURLを
いくつかくださらねーかしら?
0670nobodyさん
2007/10/08(月) 22:55:27ID:???0672nobodyさん
2007/10/09(火) 00:25:17ID:7LOIBqtZこないだここで質問させていただいたPHPマニュアルの著作の件に関して
返信が来ましたので抜粋します
feel free to use the examples in the manual in any way you like.
The only ethical concerns is when you reprint an entire manual chapter
with slight changes without giving credit to php.net.
とのことです
どうもありがとうございました
0673nobodyさん
2007/10/09(火) 03:01:48ID:???0674nobodyさん
2007/10/09(火) 03:09:34ID:???0675nobodyさん
2007/10/09(火) 08:57:39ID:???0676nobodyさん
2007/10/09(火) 09:04:15ID:???ま、使い物になるかは別だが
0677nobodyさん
2007/10/09(火) 09:13:08ID:1fe4dxvasystem関数以外の関数を使って呼び出すことはできますか?
ある有名なレンタルサーバーを使っているのですが、
ソースが外部に流出していまして、困っています。
レンタルサーバーなのでsystem関数も使えません。
宜しくお願いします。
0678nobodyさん
2007/10/09(火) 09:15:21ID:???自分でPECLモジュール作っちゃうのが1つの手だが
レン鯖だとPECLの組み込みもできないんじゃなかろうか。
0679nobodyさん
2007/10/09(火) 10:30:01ID:???0680nobodyさん
2007/10/09(火) 10:55:51ID:???ドキュメントルート下に置いてるのがhttpd経由で漏れてるのか、
ドキュメントルートより↑に置いてるのが共有ユーザに漏れてるのか?
で対処方法は色々じゃね?
てかそのレンサバにゴラァしなよ。
0681nobodyさん
2007/10/09(火) 14:18:50ID:Horj9f1y$title = $item[title];
echo "$title\n";
の実行結果
title title title title
を
タイトル一覧:title title title title
のように表示させたいのですが
echo "$title\n";
や
echo "タイトル一覧:\n";
echo "$title\n";
だと
タイトル一覧:$title タイトル一覧:$title タイトル一覧:$title タイトル一覧:$title
になっちゃいますよね
おねがいします
0682nobodyさん
2007/10/09(火) 14:20:26ID:Horj9f1yecho "タイトル一覧:$title\n";
や
echo "タイトル一覧:\n";
echo "$title\n";
だと
0684nobodyさん
2007/10/09(火) 14:49:14ID:Horj9f1yヒントありがとうございます。
実際は取得してるのが$titleだけじゃないので出来そうで出来ないです
ちょっとGOOGLEで検索してきます
0685nobodyさん
2007/10/09(火) 15:16:10ID:???POSTでフォームを送信した後、ブラウザの戻るボタンで戻ると、
[ 警告:ページの有効期限切れ ]
と、表示されますが、これを表示させずにページを表示させる方法はありませんか?
この場合、リロードするとページが表示されますが、
状態としては、警告を出さすにリロードさせる方法になると思います。
0686nobodyさん
2007/10/09(火) 15:44:36ID:???foreachの前にタイトル一覧という文字列をechoで表示すればいい話のような…。
そんなに複雑な処理でもしてるのかな。
0688nobodyさん
2007/10/09(火) 16:50:04ID:???こっちのほうがよっぽど問題あるんじゃね
もっとしっかり設計汁!
0690nobodyさん
2007/10/09(火) 18:32:28ID:2B20Voue1)イベントの管理ツールを作ろうと思っています。(登録システム)
2)各イベントへの参加者数は不定で、1人の時も10人の時もあります。
3)参加者はそれぞれIDが振られており、それを参照することで詳細情報を確認できます
※IDのないユーザもいる その場合はユーザ固有のURLを別に登録できるようにしたい
上記のような条件の場合、どういうプログラムを組めばいいでしょう?
参加者数が上限が決まってたら、DB的に
sankasha_1〜sankasha_10 sankashaURL_1〜sankashaURL_10 とフィールドを物理的に
用意すればいいのかと思いましたが、そうではないのでPHPのプログラム側で
工夫しなければならないと思います。が、思いつきません。
どうしたらいいんでしょう? アイディアもらえたら嬉しいです。お願いします。
0691nobodyさん
2007/10/09(火) 18:41:37ID:???参加者のテーブル
運用テーブル
として
運用に登録する際IDがない人の場合は登録する際にURL+参加者FKを0に
って感じにするかな
0692nobodyさん
2007/10/09(火) 18:49:21ID:???sankasyaフィールドに配列を文字列にして特攻
0693nobodyさん
2007/10/09(火) 19:38:19ID:???0694nobodyさん
2007/10/09(火) 20:07:07ID:???もう破綻は決まったな
0695nobodyさん
2007/10/09(火) 20:08:35ID:???0696nobodyさん
2007/10/09(火) 20:28:16ID:???0697nobodyさん
2007/10/09(火) 20:29:07ID:???改善したいと思うならRDB勉強すればいい
0699nobodyさん
2007/10/09(火) 20:55:16ID:???0700nobodyさん
2007/10/09(火) 20:56:42ID:???0701690
2007/10/09(火) 20:58:29ID:???今まで住所録くらいしか作ったことないので、皆さんのアドバイス見てると
こりゃ大変だなと改めて感じています。
一つ思ったんですが、@基本情報(開催日・開催地など「固定のもの」) と
A参加者情報(数が定まらないもの) を同じテーブルに入れると一気に難度が上がるんですね
なので、複数のテーブルに分けることにしました。
ご意見で言うと、>>691さんのやり方だと思うんですが、そのアドバイスの中である
「運用テーブル」というのが意味がわかりません。どういう役割のものでしょうか?
自分の中では@とAの二種類しか存在しないようなイメージだったので。。
話がPHPの話題からだいぶズレているとは思いますが、申し訳ないですが
教えてください。「(>>691)運用に登録する際IDがない人の場合は登録する際にURL+参加者FK」の
「参加者FK」とは何かもわからないのでお願いします。ほんとにすみません
0704nobodyさん
2007/10/09(火) 21:14:33ID:???仕事大切にしろ。
0706nobodyさん
2007/10/09(火) 21:36:03ID:???以前、どこかのWebページで、ヘッダーに何かすることでできたとおもうんですが
>>688
いや、設計の問題ではないんですけど・・・
(ブラウザの戻るボタンを無効にできますか?)
>>689
問題は、ブラウザの戻るボタンで戻られた場合の話です。
0707nobodyさん
2007/10/09(火) 21:40:00ID:???0709nobodyさん
2007/10/09(火) 21:54:54ID:???イベント情報、会員情報
を元に実際に運用するテーブルの事。
イベント情報テーブルに、PK(プライマリーキー)、イベント名、開催時期、終了時期
会員情報テーブルに PK、ID,PASS,その他情報
とあった場合
会員が参加登録をした時に運用テーブルに
イベント情報、会員情報それぞれのFK(フォーリンキー)を入れる。
って感じ。
PK,FKの意味についてはカッコ書きのをググればでるよ
0710nobodyさん
2007/10/09(火) 22:03:44ID:???とフィールドをつくって
会員FKがある条件の時にURLを表示ってやる。
ただ、会員FKの0とかでダミーを事前につくっておく必要がある事に今気づいた
0711690
2007/10/09(火) 22:04:35ID:???ありがとうございます
まだ理解できない部分は専用の板で訊くことにします
凄く勉強になりました、ありがとうございました!
0712689
2007/10/09(火) 22:40:40ID:???tmp.php
<?php
session_start();
if (isset($_SESSION['test'])) {
echo $_SESSION['test'];
}
?>
<form action="loc.php" method="POST">
<input type="submit" value="test">
</form>
loc.php
<?php
header('Location: tmp2.php');
tmp2.php
<?php
session_start();
$_SESSION['test'] = 'aiueo';
?>
post ok
こんな感じでやってみれ
多分期待してる動きになるはず
あと、戻るボタン無効化はJSでhisotryをいじるぐらいじゃ?
それ以外の方法あったら俺も知りたい
0714nobodyさん
2007/10/09(火) 23:43:16ID:G9B1/Oicメール一覧があって、それぞれのメールのアタマのチェックボックスにチェックを入れて
【チェックしたメールを削除する】 ってボタンを押したら削除されたりしますが、
アレってどういう仕組みになってるんでしょう。
各メールにそれぞれ削除ボタンがあるのなら自分でも作れるんですが、一括削除の
仕組みがわかりません
暇なかた、どなたか教えてください よろしくお願いします
0715nobodyさん
2007/10/09(火) 23:48:00ID:???まず↓嫁
http://www.tagindex.com/html_tag/form/input_checkbox.html
あとはPOSTされたデータ読めば分かるだろ
0716nobodyさん
2007/10/09(火) 23:53:23ID:???<input type="checkbox" name="example[]" value="1">サンプル1
<input type="checkbox" name="example[]" value="2">サンプル2
<input type="checkbox" name="example[]" value="3">サンプル3
<input type="checkbox" name="example[]" value="4">サンプル4
こんな感じでname属性に[]をつけると
$_POST['example']の中に選択したやつが配列で入ってくる
0717nobodyさん
2007/10/09(火) 23:55:16ID:???0718nobodyさん
2007/10/10(水) 01:04:56ID:???出来ました。ただ、登録したデータを一覧表示すると、 Array と表示します。
丸ごとDBに登録じゃまずいですよね 実用の時は、
質問2 休日の過ごし方は?(複数選択可)
<br>
<input type="checkbox" name="q2" value="映画鑑賞">映画鑑賞
<input type="checkbox" name="q2" value="ドライブ">ドライブ
<input type="checkbox" name="q2" value="買い物">買い物
上記は趣味を登録するフォームなんですが、こういうのって
「映画鑑賞」「ドライブ」「買い物」の部分を生成される配列から抽出して、
「,」で連結したあとに、dbに送信してるんですか?
0719nobodyさん
2007/10/10(水) 01:36:01ID:???そんなもん、DBのテーブル設計による。
1ユーザ1レコードで格納するんならカンマで連結して1カラムに押し込み〜
なんてなるんだろうが、それだと検索しにくいし後々加工もしにくいから
「ユーザID,属性」みたいなテーブルにして、選択した数の分だけ
レコードを追加してやった方がいいんじゃないか?
その場合、連結なんてしないで数の分だけループしてinsert。
0721nobodyさん
2007/10/10(水) 01:53:52ID:???どうもです。登録の方が削除より話がわかりやすいような気がして
登録の方で聞いてしまいました。 基本的な部分は同じだろう、と (すみません)
>その場合、連結なんてしないで数の分だけループしてinsert。
というのは
userName|shumi
-------------------
yamada|映画鑑賞
yamada|ドライブ
って形になるんでしょうか? 確かにこっちのほうがいいですねー
0723nobodyさん
2007/10/10(水) 02:09:52ID:???>$_POST['example']の中に選択したやつが配列で入ってくる
~~~~~~~~~~~~~~~~
って書いてあるんだからそれをそのまま表示すると型が表示されるのは普通
0724nobodyさん
2007/10/10(水) 02:49:28ID:???だと、htmlには©じゃなくてcと表示されてしまいます。
GETで©を取得してそのまま©と表示させるにはどうしたらいいでしょうか?
文字コードはUTF-8です。よろしくお願いします。
0726724
2007/10/10(水) 03:00:00ID:P3ev0KiIsageてました。
0727nobodyさん
2007/10/10(水) 03:04:42ID:tzNR6m8r0728nobodyさん
2007/10/10(水) 03:05:47ID:tzNR6m8rみんな???で気持ち悪いんだけど
0731nobodyさん
2007/10/10(水) 03:28:56ID:???0733nobodyさん
2007/10/10(水) 04:55:47ID:???0735733
2007/10/10(水) 05:40:36ID:???まじでDBなんて覚える必要ないよ
FWが勝手にやってくれるからFWの使い方覚えたほうが数倍いい
0736nobodyさん
2007/10/10(水) 06:04:03ID:???0738nobodyさん
2007/10/10(水) 06:49:33ID:???PGってあんま関係ないんだよな・・・・
小規模なもんはてきとーにDB設計しても問題ないし・・・・
>DBなんてFWに勝手にやらせればおk
って思ってる時点でしれてるが・・・
0739nobodyさん
2007/10/10(水) 07:04:51ID:???0740nobodyさん
2007/10/10(水) 07:24:15ID:???そのデータ構造にデータを入れなきゃいけないのだから。
0741nobodyさん
2007/10/10(水) 07:41:39ID:???ほぼ迷うことなく決めることができる、という意味では確かに8割完成かな。
0742nobodyさん
2007/10/10(水) 07:43:17ID:???0743nobodyさん
2007/10/10(水) 07:51:22ID:???小一時間沈黙…(!! frameworkか…)
orz
0744nobodyさん
2007/10/10(水) 08:25:34ID:???0745nobodyさん
2007/10/10(水) 09:18:50ID:P3ev0KiI1.POSTでkeywordを取得
$keyword = htmlspecialchars($_POST['keyword'],ENT_QUOTES,'UTF-8');
2.$keywordをDBに保存
これだけで大丈夫でしょうか?
と言うより普通こうですか?
0750nobodyさん
2007/10/10(水) 09:30:20ID:???0751nobodyさん
2007/10/10(水) 09:32:20ID:???出力する事を前提としていると考えるのが妥当。
0752nobodyさん
2007/10/10(水) 09:33:21ID:???0753nobodyさん
2007/10/10(水) 09:33:49ID:???0754nobodyさん
2007/10/10(水) 09:38:29ID:OYZiPU1d横からすみません。私もDBへ生データを入れていますが、
クライアントから送信されたデータを何もせずに入れていることに少し不安があります。
入力値が半角英数であれば、半角英数チェックを掛けてから入れますが、
日本語も含まれるような場合だと、そのまま入れています。
何かチェックをかけるべきでしょうか?
システム予約語的なマズイ文字があると前に聞いたことがあるのですが・・・
0756nobodyさん
2007/10/10(水) 09:44:17ID:???今は抽象化レイヤがトレンド?
0757nobodyさん
2007/10/10(水) 09:48:50ID:???というのが効率良く思えないんだけどな。効率など考えない企業向けなら何処で何をしようが
関係ないだろうけどw。
0758nobodyさん
2007/10/10(水) 09:51:28ID:???画面で入力可能にしているのが諸悪の根源だよ。
0761nobodyさん
2007/10/10(水) 09:54:56ID:???完璧だと思い込んでいる奴が墓穴をほるケースだわ。
0762nobodyさん
2007/10/10(水) 09:55:22ID:???0763nobodyさん
2007/10/10(水) 09:55:44ID:cLvYq00J0765nobodyさん
2007/10/10(水) 09:58:50ID:???100%ユーザーのIDやパスワードも生で入れるタイプ。
0768nobodyさん
2007/10/10(水) 10:12:03ID:???0769nobodyさん
2007/10/10(水) 10:12:04ID:???すまん、早とちりした
てか、IDとパスワードはエスケープしないで使える文字を限定しているわけだが
それでもエスケープって必要なのかな
正規表現でa-zA-Z0-9\-_で弾いてる
0770nobodyさん
2007/10/10(水) 10:15:05ID:???0771nobodyさん
2007/10/10(水) 10:15:53ID:???エスケープの目的とは全然違う。
まぁ、エスケープもしないというやつはセキュリティーに無関心だから情報流出についても無関心だと思うが。
0772nobodyさん
2007/10/10(水) 10:18:27ID:???書き方がかわるだけで穴が出来てしまう
0773nobodyさん
2007/10/10(水) 10:19:10ID:???DBから取り出すときは毎回htmlspecialcharsをかける
B.保存するときhtmlspecialcharsかける場合
DBから取り出すときはそのまま出力できる
どっちが効率的かと言ったらBだと思うけど。
0774nobodyさん
2007/10/10(水) 10:20:42ID:???SQL文エスケープしないとまずい?
今まで自動でしてくれるもんだと思ってたんだが・・・
0775nobodyさん
2007/10/10(水) 10:23:46ID:9QH/UxMSpg_escape_string
0776nobodyさん
2007/10/10(水) 10:32:00ID:???つか、文字列に'を含んだSQL投げた時点でRDBMSに蹴られるやん
詰まるところクォーテーション使いたいからキチンと処理しとるで
0777nobodyさん
2007/10/10(水) 10:34:28ID:???保存するときhtmlspecialcharsかけない人って
magic_quotes_gpc = Onにしてるのかな?
まあたしかにOnにしてると生データ入れられるな。
でもmagic_quotes_gpc = Offが推奨なんだよな。
0778nobodyさん
2007/10/10(水) 10:41:00ID:???いや、普通保存するときにかけるのはmysql/pg_escape_stringであって
htmlspecialchars使う人は表示以外にデータを使わないと最初から決めてる人。
magic_quotes関係ない。
0779nobodyさん
2007/10/10(水) 10:42:31ID:???HTMLを出力するときに掛けるのは当然。
DBに入れるときにはDBの特殊文字をエスケープするのが当然。
DBに入れるときにhtmlspecialchars使うのはおかしい。
たまたま上手くいってるってだけだ。
0780nobodyさん
2007/10/10(水) 10:46:33ID:???Don't → Don\'t こんな文字列もらってもRDBMSには突っ込めんよ?
少なくとも俺の使ってるRDBMSでは駄目
普通に手抜けるんだからhtmlspecialchars通しておけばいいんでないの?
RDBMSから生のデータ引っ張り出した時はガックリくるかもしれんけど
0781nobodyさん
2007/10/10(水) 10:47:59ID:???暗号化っていうと復号できるみたいなニュアンスあるから誤解をまねく
>>758のいってることはごく自然だと思うんだけどな
SQLインジェクションにつながるものはバリデータではじくもしくはエスケープして入れる
XSSにつながるデータは直接いれて出力時にエスケープする
ていうのが定説だと思うんだけど
なんでもかんでもhtmlspecialcharsすればいいっていうわけではない気がする
0782nobodyさん
2007/10/10(水) 10:54:00ID:???>>780はhtmlspecialchars使うのは正しいと言ってる
うーん・・・
0784nobodyさん
2007/10/10(水) 10:57:57ID:???0785nobodyさん
2007/10/10(水) 10:59:25ID:???私は効率だからPOSTであがってきたデータはhtmlspecialcharsしている事が多いい。
書き込みより読み込み回数の方がたいてい多いいしな。
0786nobodyさん
2007/10/10(水) 11:04:14ID:???取り出す時に調べれば良いっていうことかww
ダーティーなデータをDBに保存することに違和感を持たない感覚って、
プロとしてダメダメだよ
0787nobodyさん
2007/10/10(水) 11:04:57ID:???> DBに入れるときにはDBの特殊文字をエスケープするのが当然。
> DBに入れるときにhtmlspecialchars使うのはおかしい。
> たまたま上手くいってるってだけだ。
これも納得できる。
htmlspecialcharsではなくmysql_real_escape_stringを使うべきなのだろうか?
0788nobodyさん
2007/10/10(水) 11:08:03ID:M9anXW7visset()ではnullがセットされたものもtrueとなってしまいます。
0790nobodyさん
2007/10/10(水) 11:13:50ID:???0791nobodyさん
2007/10/10(水) 11:14:46ID:???いやいや、割り切りだよ割り切り。
Windowsアプリケーション等では insert文投げる時にトラブルの種になる文字は
禁則文字として「使わないでくださいね」って釘打っておけば納得してもらえるの。
ところがWebの場合、「これ、使えません」っていうと「なんでや?他んところは
使っておるやないかボケ!!」って聞き入れない。
ま、つまんねえとこで意地張ってもしょうがないじゃん。
0792nobodyさん
2007/10/10(水) 11:16:16ID:???出力する時に50項目*1000ループhtmlspecialcharsを実行するのか、
それともあがって来たデータそのものに一度だけhtmlspecialcharsを
実行するのかの違いだけ
0793nobodyさん
2007/10/10(水) 11:22:00ID:???タグと本文を正規表現で分けて処理すんのかな?
0795nobodyさん
2007/10/10(水) 11:25:16ID:???考え方としては毎回動的に画面を生成する掲示板等と
更新時に静的HTMLを生成してしまうblog等との違いと一緒だよな。
それがより効率を上げ性能を向上させるものなら
多少の非汎用化も許容される場合がある。
もちろん、常時内容が変化するようなシステムなら
元になるデータだけ持っておいて毎回動的生成すべきだろう。
0796nobodyさん
2007/10/10(水) 11:33:16ID:0neE8nHZ自分はサイト運営をしているのですが、PHPを使ったページで
Warning: main(db/.php): failed to open stream: No such file or directory in /home/webmaster/public_html/link/yomi.php on line 21
Fatal error: main(): Failed opening required 'db/.php' (include_path='.:') in /home/webmaster/public_html/link/yomi.php on line 21
とエラーが出てきてしまい使えません。
誰かPHP等に詳しい方、対処方法を教えていただけませんか
0797nobodyさん
2007/10/10(水) 11:35:02ID:???無いんじゃないかな…
なんせ
$a = NULL;
var_dump(is_scalar($a));
の結果が「bool(false)」になるくらいで、
NULLを格納した値はPHP上では「未定義変数」の扱いになってる。
決してNULLという値が格納されたスカラー変数ではないのよ。
0798nobodyさん
2007/10/10(水) 11:35:24ID:???何でmail()なんて使おうと思ったの?
0799nobodyさん
2007/10/10(水) 11:35:49ID:???効率の話は全く考えてなかった。どうすべきか、という意味で779を書いた。
表示の度にhtmlspecialcharsを掛ける負荷をなくすという目的なら
htmlspecialcharsをかけてDBへ保存すれば良い。
でも、だからといってDB固有のエスケープを掛けないで良いという事じゃない。
htmlspecialcharsを掛けてさらにmysql_real_escape_stringなどをかける。
0803nobodyさん
2007/10/10(水) 11:38:12ID:???0804nobodyさん
2007/10/10(水) 11:38:45ID:???0807nobodyさん
2007/10/10(水) 11:41:54ID:???<?php
$a = 100;
$a = null;
if (!isset($a)) {
echo "empty!\n";
}
?>
emptyって表示されたけど・・・。
0808nobodyさん
2007/10/10(水) 11:46:45ID:???例えば文字列 Don't をそのままDBに入れる人は
DBから文字列 Don't を取り出せないじゃないか!
保存するときhtmlspecialcharsかけるのが正統派だ
0810796
2007/10/10(水) 11:51:12ID:0neE8nHZ回答頂いた方ありがとうございます
色々と調べてみます
0811nobodyさん
2007/10/10(水) 12:01:35ID:???htmlspecialcharsとかaddslashesすりゃ良いって人よく見るけど
それぞれ用途があるんだからそれぞれの用途に合ったものを使うべき
DBに突っ込む時にhtmlspecialcharsとかしとけば表示の時楽だが
生データじゃないので再利用性が落ちるし
こういう人に限って表示の時も
再度htmlspecialcharsをしたりと言う場合が多い気がするんだけど?
0812nobodyさん
2007/10/10(水) 12:04:34ID:???0815nobodyさん
2007/10/10(水) 12:14:54ID:???SELECT * FROM table WHERE moji = 'Don't'
これじゃ取り出せないよなあ?
どうやって取り出すよ?
0817nobodyさん
2007/10/10(水) 12:16:58ID:???0818nobodyさん
2007/10/10(水) 12:18:44ID:???俺みたいな頭悪いやつに頭悪いだろと言っても意味ねーんだよ
で?どうやって取り出すよ?
とりあえず答えてから貶せ
0819nobodyさん
2007/10/10(水) 12:19:49ID:???ちょっと笑っちまったじゃねーか
insertだろうがselectだろうが、SQL文に入れる文字列はエスケープ掛けるんだよ。
$sql = "SELECT * FROM table WHERE moji = '" . mysql_real_escape_string("Don't") . "'"
0820nobodyさん
2007/10/10(水) 12:20:02ID:???釣りか?入れれるだろw
0822nobodyさん
2007/10/10(水) 12:32:14ID:???prepareにしろescape処理の関数にしろ至れりつくせりのDBMSなら何も問題ない
しかしPHPでサポートされてるDBMSって全てが横並びで標準実装ってわけでない
某SQLServerみたいに見放された(?)感のあるDBMSすらある
PDOに移行すれば救われるのかもしれないけど native driver がこれまた将来に
渡って保証されていない物もある
しょうがないから妥協している箇所を否定されたら何もできないよ
0823788
2007/10/10(水) 12:40:36ID:M9anXW7vん〜、もはや変数にもならないんですね。
ちょっと不便だなぁ。PHPらしい簡易化による不便さですね・・・。
>>807
ごんめんなさい、質問文が間違えてtrueとfalseが反対になってました。
0824nobodyさん
2007/10/10(水) 12:40:37ID:???prepareはともかくescapeなんて、sqlserver_escape_string()みたいな関数1個作ればいいだけでしょ?
そんなに悩むこともない気がするんだが。
0825nobodyさん
2007/10/10(水) 12:45:33ID:???htmlspecialcharsとmysql_real_escape_string両方使ったら取り出せなかった。
htmlspecialcharsをコメントアウトしたら取り出せたorz
0827nobodyさん
2007/10/10(水) 12:47:20ID:???0828nobodyさん
2007/10/10(水) 12:50:11ID:???将来の話なんて出すべきもんじゃないだろ
PDOじゃなくてもPEARとかのライブラリ類もあるし
動作的に同じであれば良いんじゃないの?
0830nobodyさん
2007/10/10(水) 12:59:23ID:???DBに入れる際には、mysql_real_escape_string
HTMLに出力するときには、htmlspecialchars
じゃないの?
0833nobodyさん
2007/10/10(水) 13:12:29ID:???0834nobodyさん
2007/10/10(水) 13:15:00ID:???こういうのがうざいんだよなぁ
ちなみに「htmlspecialchars() だけでは不十分」らしいな
0835nobodyさん
2007/10/10(水) 13:59:21ID:???$category=1に該当するデータ数を出すにはどう書けばいいですか?
0837nobodyさん
2007/10/10(水) 14:09:10ID:???クエリーでやるとこんな感じだけど
SELECT count(category) FROM category_table WHERE category='1'
まぁどんなやり方してるかにもよるし
出そうとしてる部分のソースださんとどーにもならん
0838nobodyさん
2007/10/10(水) 14:30:15ID:zc/CFV7a参照はエラーにできると思いますが
書き込みのときにも
エラーを発生させる方法はないでしょうか?
class Hoge {
public $v1;
}
$h = new Hoge();
$h->v1 = 1;
$h->v2 = 2; //ここでエラーを発生させたい
0839nobodyさん
2007/10/10(水) 14:44:39ID:???'→DBの予約語→DBに入れる前にエスケープする
<>&→HTMLの予約語→HTMLを出力する前にエスケープする
\aなど→システム特殊文字→システムのフロント処理の所で削除
@など→機種依存文字→システムのフロント処理で警告メッセージ
0840nobodyさん
2007/10/10(水) 14:47:19ID:???まぁもっとスマートな方法あったような気がするが忘れた
0841nobodyさん
2007/10/10(水) 14:57:04ID:???PHP4でもプライベート変数とか使えるんじゃね?
まあパフォーマンスは落ちるが、
それは開発時だけそうやっといて
運用時ははずすと言う方向で。
0844nobodyさん
2007/10/10(水) 15:21:58ID:???0846nobodyさん
2007/10/10(水) 15:54:13ID:???そこのコントラスタに書けばいいだけさ。
php4とphp5の仕様の違いが嫌?
ならそれを吸収するコードを書けばいいだけさ。
そんなコードを各のが嫌?
ならそれをサポートしているライブラリ・フレームワーク等を
使えばいいだけさ。
0848nobodyさん
2007/10/10(水) 16:43:03ID:5Clc9AoY大阪府|東大阪市|中小阪|三丁目|6
のように格納されてるんだけど、
住所検索で「大阪府東大阪市中小阪3-6」
みたいな感じでもHitさせたいんだけど何かよさそうな方法はありませんか?
0849nobodyさん
2007/10/10(水) 16:57:33ID:???すぐに思い付くのは、
1. データの重複を承知で連結されたカラムを追加する。
2. 検索時のオーバーヘッドを承知でSELECT時に連結して検索する。
くらいかな。
0850nobodyさん
2007/10/10(水) 17:00:06ID:5Clc9AoYサンクス
GoogleMapやGeocodingみたいに
「おおさかふ」で大阪が検索されたりするのは
相当な技術のアルゴルズムなんだなぁ・・・
0851nobodyさん
2007/10/10(水) 17:00:34ID:???システム構成にもよるが、俺だったらツリー構造でオンメモリーで
住所データを保持しておいて、検索時にツリー構造から検索するようなやり方にする。
そうすれば、高速で検索が可能になる。まぁ、メモリーは食うけどなぁ。
0853796
2007/10/10(水) 17:33:35ID:0neE8nHZわかんねぇよ!!和漢ねlwんだよぉおおぉぉぉっうぇうぇwwwwwwwww
0855nobodyさん
2007/10/10(水) 17:40:01ID:???知っとくに越した事ないってw
0856nobodyさん
2007/10/10(水) 17:50:22ID:dFg+5xQCfunction &hoge(){}
と書いた場合、
$object =& new hoge();
と書かずに
$object = new hoge();
と書いても大丈夫になりますか?
0859nobodyさん
2007/10/10(水) 18:35:43ID:???必要となる知識は他にもあるってことだろ
何もDBを丸覚えするのが全てなわけじゃないし
楽するための仕組みが提供されてればそれを使えばいいっていってるんちゃうかと
0860nobodyさん
2007/10/10(水) 18:39:32ID:???PHPを使った開発で、住所データを
オンメモリーで持っておけることって
現実的には少ないないか?
0861nobodyさん
2007/10/10(水) 18:40:04ID:5Clc9AoY自鯖
0863nobodyさん
2007/10/10(水) 18:43:35ID:???書いておけば問題ないって事で合っています?
0864nobodyさん
2007/10/10(水) 18:44:49ID:5Clc9AoY・・・sakuraにでもうpする
0865nobodyさん
2007/10/10(水) 18:47:54ID:???> 大阪府|東大阪市|中小阪|三丁目|6
よくわからんデータ形式だ。
東京都杉並区の場合は?
福岡県福岡市中央区の場合は?
丁が無い場合は?
0866863
2007/10/10(水) 18:48:11ID:???いちいちstripslashesするのめんどくさいな
0867nobodyさん
2007/10/10(水) 18:49:10ID:???公式ページ等で入手する方法はありますか?
4.3.xが欲しいです。
0868nobodyさん
2007/10/10(水) 18:52:40ID:???いやいや、そういう意味じゃなくて、自鯖だからって
それだけじゃオンメモリーにはならないでしょ?
(基本的に)phpはスクリプト実行が終了したら
データメモリは開放されるのだから。
となると、phpを使って一回の実行でバッチ的に
大量の住所データをマッチングさせたいのなら
オンメモリーで高速という効果はあるけどさ。
実行するたびに全住所データを読んでツリー構造を
作っていたら逆にパフォーマンス悪いでしょ?
0869nobodyさん
2007/10/10(水) 18:56:32ID:???いや、MySQLのインデックスは多分ツリー構造のインデックスだろうから、
そういうことを言いたいのかな、と思っただけ。
そうではなく、PHPでデータ構造を作る場合、
CGIかApacheのモジュールで動かすPHPだとインスタンスごとに重複して
メモリ上のデータベースを抱えることになって、DB更新にも弱いし
俺ならこうするって言われてもありえねぇだろ、と思ったわけ。
デーモンにして他のプロセスに追い出す手は無いわけじゃないけど
それはPHPで書かない方が便利だし。
ここまで書いて思ったけど、MySQLの一時テーブルの構造はハッシュだっけ?
0871nobodyさん
2007/10/10(水) 18:57:03ID:P3ev0KiI結局DBに保存するときhtmlspecialcharsかけたほうがいいの?
それともかけないで生データ入れたほうがいいのでしょうか?
0873nobodyさん
2007/10/10(水) 19:01:49ID:???例えば、東京都港区六本木の場合
最初の文字「東」を入力した時点で「東京都」が確定するだろ。
そしたら、次は「港」から始まる市町村(特別区、広域連合を含む)を検索すれば、いい。
つまり、ajax方式でやればいいじゃん。
0875nobodyさん
2007/10/10(水) 19:08:25ID:???Amazon見たいに、一つの入力フィールドの検索で、
商品タイトル、作者等の複数項目にマッチし、
また、ひらがな・カタカナ、全角・半角を同一視、
「らき☆すた」に「らきすた」でもヒットできるように
検索させたい場合、検索用のフィールド作るのが一番だよね?
(DBMSにそういう機能がある場合を除く)
0877nobodyさん
2007/10/10(水) 19:17:27ID:???うん、曖昧な検索したいならそうするしかないんじゃないかな?
でも検索用のフィールドってどう作るかはあんまり考えてないや。
0878nobodyさん
2007/10/10(水) 19:19:51ID:???わけわからんってw
元々(>>848)の質問とずれてるぞ。
データベースに
> 大阪府|東大阪市|中小阪|三丁目|6
こうあった場合の検索方法だろ。
Ajax方式って、それはユーザーインターフェースであって
検索の仕方ではありません。
0879nobodyさん
2007/10/10(水) 19:24:01ID:???0880nobodyさん
2007/10/10(水) 19:27:36ID:???これって1個のフィールドにこうやって入ってるの?
それとも|ってフィールドの区切りを意味してて、5個のフィールドに分かれてるのか?
データ構造がもう決まっちゃってて変えられないなら、
検索するキーワードの「大阪府東大阪市中小阪3-6」を分解する処理を書いたらどう?
3-6は三丁目とかに変換するのも必要だね。
0881nobodyさん
2007/10/10(水) 19:36:49ID:???>検索するキーワードの「大阪府東大阪市中小阪3-6」を分解する処理を書いたらどう?
だから、それを俺が提唱しているツリー構造で検索すれば解決するんだが。
0882nobodyさん
2007/10/10(水) 19:42:28ID:???0883nobodyさん
2007/10/10(水) 19:44:04ID:P3ev0KiIすみません。不躾ながら回答させていただきます。
丁目が3の場合、「三丁目」「3」など三丁目を表す文字をDBに保存
番地が6の場合、「6番地」「6」「-6」など6番地を表す文字をDBに保存
これでマッチすると思います。
>>872
htmlspecialcharsはHTMLエンティティに変換する。
つまり表示するときだけかけたらいいってことですよね。
googleも生データ入れてるみたいだし
やはりhtmlspecialcharsかけないで生データ入れるべきですよね。
今までhtmlspecialcharsかけてDBに保存してた…orz
0884nobodyさん
2007/10/10(水) 19:48:52ID:???0885nobodyさん
2007/10/10(水) 19:50:16ID:???極論言えばなに使っても解決するよ。適切かそうじゃないかの話。
シーケンシャルに頭から検索していってもいい。
もともと構造が、ああなっている場合の話だろ?
まあそこは、ツリー構造にすればいいと解釈するが、
ツリー構造にするとして、そのデータをいつ読み込むのか?
普通に作ると、サーバーへのリクエストがあるたびに
データを読み込む羽目になるぞ。
あんたの言うajax方式だと、一文字入力するたびに
サーバーのリクエストが発生するから、そのたびに
全住所データを読んでツリー構造を作らなければならない。
これはサーバーにも負荷がかかるし、パフォーマンスも悪い。
シーケンシャルに読んで比較したほうがましだろう。
それから、
> 住所検索で「大阪府東大阪市中小阪3-6」 みたいな感じでも
”でも”という言葉。 つまり丁でも検索できると言うことだろう?
そうなると、ツリー構造はどうなる? もちろんやり方は、いろいろあるが、
「ツリー構造で検索すれば解決」という単純な話ではないことがわかるだろう?
0886nobodyさん
2007/10/10(水) 19:50:17ID:???俺がツリー構造がいいというのは、住所というものは可変長だからということが一番。
つまり、都道府県の第一段階レベルは一緒でも、その次に来るのが群であったり区であったり市であったりする。
それを効率良く、かつ要件を満たすにはツリー構造で検索するしかないよ。
丁目っていっているけど、丁目じゃなくて字だってある場合もある。
俺は、某銀行系のサイトで住所検索の機能作ったから良くわかる。
0888nobodyさん
2007/10/10(水) 19:55:25ID:???ごちゃごちゃ言ってるけどさ、
それって、RDBMSで住所にインデックス情報をつけて
likeで前方一致検索するってだけの話だから。
(likeの前方一致でインデックスが働かないRDBMSもあったと思うが)
0889nobodyさん
2007/10/10(水) 19:55:42ID:???まずは、マニュアルを嫁
http://cai.cs.shinshu-u.ac.jp/sugsi/Lecture/php/manual/ref.shmop.html
0890nobodyさん
2007/10/10(水) 20:00:00ID:???0891nobodyさん
2007/10/10(水) 20:04:29ID:???> 3-6は三丁目とかに変換するのも必要だね。
多分ね、これは大変な作業になると思うよ。地域によっては
市が無くて区だけだったり市と区があったり、
丁目が無いところあるし。
もし、検索キーワードを入力するのが面識の無いエンドユーザ、たとえば
ショッピングカートシステムのお客さんとかなら県名を省略したり、
丁で入力するかハイフンで入力するかわからない場合もある。
(そこは「県名を省略せずに入力してください」と書いておくという手もあるけど)
>大阪府|東大阪市|中小阪|三丁目|6
もしこれが5つのフィールドに分かれていると言う意味なら、
データ構造を変更して検索用のフィールドを作るか、もしくは別に検索用の
テーブルをつくり、住所を一つのフィールドにまとめる。
そのとき、住所データを正規化(全角半角、漢数字、丁目や-をスペースに置き換え)する
もちろん検索するときも同じように正規化する。
その後、like検索すればいいのではないか?
ツリー構造とかいっているやつも、データの正規化いるだろ?
というか、そっちのほうがここでは重要な話だろ
0892nobodyさん
2007/10/10(水) 20:08:03ID:???URLは間違いなくあってる
0894nobodyさん
2007/10/10(水) 20:13:14ID:???いや、だからツリー構造でajax方式なんだよw
データの正規化をサーバー側とクライアント側の両方で別々に分けて考えなくてもよくなるし、
user ablitiyも向上するだろ。
つまり、東京都港区六本木1-2-3を入力するのに、
「と」と入力すれば「東京都」が自動で表示され、
「み」と入力すれば、「港区」が自動で表示され、
「ろ」と入力すれば、「六本木」が自動で表示され、
「1」と入力すれば、「1丁目」が自動で表示され、
「2」と入力すれば、「2番地」が自動で表示され、
「3」と入力すれば、「3号」が自動で表示される。
ユーザーにフォーマットを意識させることなく、ユーザーが入力した値も
自動で正規化され、かつ入力ミスもなくなる。
99丁目とかありもしない番地も入力と同時にチェックできる。
DBで検索とか言っている奴がいるが、そんな方式でやっていたら、
ユーザーが何回も入力しなおす羽目になりかねない。
0895nobodyさん
2007/10/10(水) 20:16:22ID:???最初っからそれを出せと言う話。
でそれを使うには環境が限られるということさ。
それをするよりか、単にRDBMSを使えばいいだろ? 今使えているんだし。
どうしてもツリー構造を自作しなきゃいけないのか?
そして、ツリー構造を自作すれば、データが - で 丁目でも
ヒットするようにしたいと言う要望が達成できるのか?
違うだろ? だからあんたが言っていることは答えになってないんだよ。
0896nobodyさん
2007/10/10(水) 20:18:08ID:???0897nobodyさん
2007/10/10(水) 20:18:12ID:???> DBで検索とか言っている奴がいるが、そんな方式でやっていたら、
> ユーザーが何回も入力しなおす羽目になりかねない
お前バカか。それがDBで検索であっても、
「と」と入力されたときにDB検索すればいいだけの話だろ。
ずれまくりだっつーの
0898nobodyさん
2007/10/10(水) 20:20:16ID:???それ、Ajax使って、入力する形式を固定にしろという話であって、
ツリー構造であることとはまったく関係ないじゃんw
0899nobodyさん
2007/10/10(水) 20:20:58ID:???safeにはなってない
phpあまりやったこと無いからぐちゃぐちゃ
$fileurl = substr($_SERVER["ORIG_PATH_INFO"], 1);
if ($fileurl == 1){
$filename = "日本語.mp4";
$file = "***.**/test1.mp4";
} elseif ($fileurl == 2){
略
} elseif ($fileurl == 15){
$filename = "テスト.mp4";
$file = "***.**/test4.mp4";
}
$file_length = filesize("http://$file");
header('Content-Disposition: attachment; filename="' . $filename . '"');
header("Content-Length:$file_length");
header("Content-Type: application/octet-stream charset=UTF-8");
readfile ("http://$file");
0901nobodyさん
2007/10/10(水) 20:27:48ID:???ajaxで検索するやり方で考えるなら、DBじゃなくて、
ツリー構造でオンメモリーに持つの方がパフォーマンス的に有利に決まっているだろ。
住所の巨大なデータ構造をDBにもって、いちいち検索かけたらDBサーバーが飛ぶぞ。
>>900
強烈な反撃!
インターフェイス部分をFlashで実装すればいいだけ。
0902nobodyさん
2007/10/10(水) 20:29:51ID:???ツリー構造なんかにしなくても、
単に住所が入った配列をソートさせて
それを二分探索で検索すれば良いだけじゃん。
# ソートされた配列を二分探索したら
# その配列はツリー構造になるとかいう馬鹿なことは
# さすがに言わないことを祈る。
俺なら普通にDB使うがな。
0904nobodyさん
2007/10/10(水) 20:30:33ID:???0906nobodyさん
2007/10/10(水) 20:33:20ID:???一つ聞いていいか?
お前のその提案で
ハイフンでも丁目でもヒットしたいと言う要望は、
ツリー構造で解決したか?
Ajaxで解決したか?
どちらで解決したか答えろ。
0907nobodyさん
2007/10/10(水) 20:34:29ID:???おまえらももう相手するのやめれw
0908nobodyさん
2007/10/10(水) 20:36:13ID:???□□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□
□□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□
□■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□
□□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□
□□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□
□□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□
□□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□
□■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□
□□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□
□□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□
□□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□
□■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□
□■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
0909nobodyさん
2007/10/10(水) 20:38:12ID:???>っていうかさ、住所データなんて基本的に変わらないんだから
お前新聞読んでないだろ。地方再編で対応が大変だった苦労は分からんだろうなぁ。
>>903
そもそも、javascriptもflashも対応していないようなブラウザまで対応するか、だ。
>>906
>ハイフンでも丁目でもヒットしたいと言う要望は、
>ツリー構造で解決したか?
>Ajaxで解決したか?
ツリー構造だからこそ、現在入力している住所レベル(丁目か番地か号か字か)が
分かるわけだろ。ajaxを使えば、そもそもユーザーが丁目やハイフンまで入力する必要もない。
0910nobodyさん
2007/10/10(水) 20:43:24ID:???0911nobodyさん
2007/10/10(水) 20:43:34ID:???> お前新聞読んでないだろ。地方再編で対応が大変だった苦労は分からんだろうなぁ。
対応した後にソートすればいいだけ。何か問題があるか?
言い訳はいいんだ。ツリー構造で解決したかAjaxで解決したかそれだけを答えろ。
0912nobodyさん
2007/10/10(水) 20:45:34ID:???少し10分レスつけるのやめて頭ひやそうぜ
10分後には書く気もうせてるから
0913nobodyさん
2007/10/10(水) 20:45:40ID:???ツリー構造を作ってしまったのか?
それを認めたくないとかw
0914nobodyさん
2007/10/10(水) 20:52:14ID:???>言い訳はいいんだ。ツリー構造で解決したかAjaxで解決したかそれだけを答えろ。
だから、どっちかじゃなくて、両方セットじゃないと意味ないだろw
0915nobodyさん
2007/10/10(水) 20:52:19ID:???わざわざphpで実装する必要性は無い。
0917nobodyさん
2007/10/10(水) 20:54:37ID:???いや、だから更新時はどうすんのさ。
基本的に自分のプロセスの生き死にを管理出来ないapacheモジュールで
生に共有メモリなんか弄って途中で死んだらどうすんだって話。
...釣りといってくれ。
0918nobodyさん
2007/10/10(水) 21:04:55ID:???掲示板でSQLにデータが入っているのですが記事の情報以外には親記事のIDしかありません。
そこからツリーを形成するスクリプト書いてください。
俺、頭悪くてできなかったorz。
0919nobodyさん
2007/10/10(水) 21:07:39ID:???0920nobodyさん
2007/10/10(水) 21:08:23ID:???0921nobodyさん
2007/10/10(水) 21:15:27ID:???0922nobodyさん
2007/10/10(水) 21:20:56ID:???住所という数日・数ヶ月レベルで変更が無いデータに適用する構造じゃねーよw
0923nobodyさん
2007/10/10(水) 21:29:41ID:???で、普通インデックスはメモリ上にキャッシュされるから、
オンメモリでツリー構造に対して検索したいだけなら普通に結合したカラムを作って
インデックス張って前方一致検索すりゃいいだけ。
0924nobodyさん
2007/10/10(水) 21:41:05ID:???0926nobodyさん
2007/10/10(水) 22:10:02ID:???0928926
2007/10/10(水) 22:13:44ID:???array()+array()でよかったみたいです
0932nobodyさん
2007/10/10(水) 22:47:05ID:???0933nobodyさん
2007/10/10(水) 22:54:04ID:???httpでファイルサイズ取得できるのなかったっけ? アンテナなんかで使われてるヤツ
0935nobodyさん
2007/10/10(水) 22:57:19ID:???電話番号が9桁(最初の0を省く)でやれるんだからできんことないだろ。
と思って調べたらこんなページが
http://www.geocities.jp/jdy07317/3040.html
> 詰め込めば6けたでも足りたということです。
> 実際には7けたですから、1000万通りも確保できるわけです。
> たくさんある組み合わせのうち70分の69は使用しない事になります。
0939924
2007/10/10(水) 23:04:34ID:???Warning: filesize() [function.filesize]: stat failed for http://URL略/***.avi in /URL略/test.php on line 60
0940nobodyさん
2007/10/10(水) 23:07:21ID:???そんな話は聞いた事がない
0942nobodyさん
2007/10/10(水) 23:11:43ID:???エラーの詳細はわからないけど直接取得できるファイルなの?
wgetなどで直接落とせる?
0943nobodyさん
2007/10/10(水) 23:15:26ID:???自分でちょっと調べたいと思います。お騒がせしてすみませんでした。
0945nobodyさん
2007/10/10(水) 23:36:38ID:???0946nobodyさん
2007/10/10(水) 23:44:16ID:???0947nobodyさん
2007/10/11(木) 01:11:17ID:???このページを見てください。
http://www.gomo.jp/
IEで見ると
HTTP500内部サーバーエラー
になります。
でfirefoxでみると普通にエラーが返ります。
ちょっとしたケアレスミスのエラーなんですけど、IEでは全く何が原因だか分らず
デバッグできませんでした。HTTPのHEADERを覗くソフトを見つけて気付いたのですが、
もしや、と思いfirefoxで見たら、案の定普通に表示されました。
これはPHPやサーバーの設定でどうにかなるのでしょうか?
それとIEのデコスケはあいかわらず使えないということなのでしょうか?
ちなみにPHP5.2.4で
php_value error_reporting "2047"
php_flag display_errors on
php_flag display_startup_errors on
php_flag track_errors off
になってます。
0948nobodyさん
2007/10/11(木) 01:43:02ID:???URLググったら前々スレ53の115と同じじゃん(2007/08/28 08:29:23)
http://pc11.2ch.net/test/read.cgi/php/1188047468/115-
ドメインも個人登録みたいだし。 釣り?orIP収集?
0950nobodyさん
2007/10/11(木) 01:51:47ID:???このスレで真面目にPHPの勉強してるだけだと思うけど。
なんで同じ人が別の質問したら釣りという発想になるんだ…
0951nobodyさん
2007/10/11(木) 02:07:47ID:???書き出しが変じゃないか?
まるで今回が始めての質問みたいな感じがする。しかもいきなりリンク貼り。
以前質問したらなら「以前も質問した者ですが…」等と書き始めないか?
そっちの方が以前の状況も遡れるし、進歩具合で回答内容も考えやすい。
検索結果になくて今回初質問でも俺的には正直リンクは踏めない書き出し。
ドメイン取ってる割に全然検索に掛からないというのも収集専用かと思ってしまう。
0952nobodyさん
2007/10/11(木) 02:16:33ID:???Cake?
まぁFatal errorを修正すりゃいいんでねぇの?
リリースというか開発段階なら
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(E_ALL);
書いておくと良いよ
0953nobodyさん
2007/10/11(木) 02:25:15ID:+ZoCLAUB>>722さんのアドバイスで無事に解決したのですが、sessionじゃなく、
具体的にはmetaタグで、refreshでページを移動させた場合も、同様に
ページの有効期限切れ、と表示されます。これを解決する方法って
ありませんか?
0954nobodyさん
2007/10/11(木) 04:51:07ID:0nOXhCaV0955nobodyさん
2007/10/11(木) 07:10:42ID:+ZoCLAUB0956947
2007/10/11(木) 08:27:29ID:???レスありがとうございます。ちなみにZendFrameworkです。
IEの簡易エラー表示設定があったの知りませんでした。
表示するようになりました。勉強になりました。
いや、別に釣りではなかったのですが、気を悪くしたならすんません。
サーバーのスレかPHPか、ZendFrameworkのすれか、書くとこ迷ったし、
以前の質問とあんまり関係なさそうなので、あんな書き出しに・・・
サイトはまだ、ちゃんと動いてないのでロボットが来ないおまじないを置いています。(きくのかどうか不明ですけど)
ほとんど勉強用になっちゃってますけど、そのうち公開する予定です。
なかなか、忙しくてすすみませんOTZ
0957947
2007/10/11(木) 08:32:10ID:???ロボットが来なくなるテキストですが
前にネットで調べて置いた記憶があったけど、今はありませんでした。
ただ単になにも情報がないから引っかからないだけと思われます。
0958nobodyさん
2007/10/11(木) 11:18:39ID:???> それとIEのデコスケはあいかわらず使えないということなのでしょうか?
いや、お前が相変わらず、使えないw
0959nobodyさん
2007/10/11(木) 12:38:42ID:???一応崩れないようにチェックはするけどな。
0960nobodyさん
2007/10/11(木) 15:52:51ID:???0961nobodyさん
2007/10/11(木) 16:17:47ID:???0962nobodyさん
2007/10/11(木) 16:23:12ID:???> このスレで真面目にPHPの勉強してるだけだと思うけど。
> なんで同じ人が別の質問したら釣りという発想になるんだ…
理由は単純だよ。万引きしたら金を返しても刑事罰に処せられるのが普通だが、
社会保険庁の職員が横領しても金を返したら無罪放免っていうことだよ。
0963nobodyさん
2007/10/11(木) 16:56:15ID:???と思っている人達がいても当然の事だ。
0964nobodyさん
2007/10/11(木) 17:02:01ID:???言いたいことはわかるけど、それを言うなら質問者の側も義務ではないわけだから、お互い様ってことじゃないかな。
0966nobodyさん
2007/10/11(木) 17:08:19ID:???だからお互い義務じゃないことを、自分の独善的な考えを相手に押し付けるからトラブルになるんだよ。
お互いもう少し思いやりの心を持とうぜ。
0967nobodyさん
2007/10/11(木) 17:11:57ID:???匿名掲示板だけに、昨日失礼なことを言った奴が野放しになってるかもしれん場所だと思えば
人間答える気も失せるってもんだ。
0968nobodyさん
2007/10/11(木) 17:12:20ID:???0969nobodyさん
2007/10/11(木) 17:15:41ID:???0970nobodyさん
2007/10/11(木) 17:16:35ID:???0971nobodyさん
2007/10/11(木) 17:19:24ID:???そういう思い上がった考えが、時津風事件を招くんだよな。
0972nobodyさん
2007/10/11(木) 17:30:55ID:???それともギリギリまで待つ?
0973nobodyさん
2007/10/11(木) 17:35:25ID:???回答者は質問者がどうなろうと何も困らない。押し付けとかどうでも良いから好きにすると良いよ。
回答する側も仕事でやってるんじゃねーし、その時の気分で答えてるだけだから。
0974nobodyさん
2007/10/11(木) 17:36:19ID:???こんな事を言った奴がいたのかwww
しらなかったわ
0975nobodyさん
2007/10/11(木) 17:48:12ID:???0976nobodyさん
2007/10/11(木) 17:59:34ID:???0977nobodyさん
2007/10/11(木) 18:01:21ID:???本当にそうなのか釣りなのかその判断が難しい
釣られて見ると相手がマジになってきたり、こっちが引くと釣りでした宣言したり
そんなふうにして遊んで何が楽しいのか俺には理解できない世界だわ
最近では質問者自体実はベテランの釣りが多いからこうなってんだろうけど
いずれにせよ性格悪いわな
0978nobodyさん
2007/10/11(木) 18:10:41ID:???http://pc11.2ch.net/test/read.cgi/php/1192092941/l50
0979nobodyさん
2007/10/11(木) 18:15:15ID:???礼儀がなっていないと思えば無視すればいいだけなのにね。
わざわざ注意するやつ。で答えは言わない(言えない?)
0980nobodyさん
2007/10/11(木) 18:21:41ID:???質問してやったのだから答えるのが当たり前だと言っているように聞こえるから止めとけ。
0981nobodyさん
2007/10/11(木) 18:26:40ID:???0982nobodyさん
2007/10/11(木) 18:28:45ID:???そういうことじゃなくて、注意するだけで、
そのあと質問者がちゃんと書いても、
無視するやついるじゃん。
あれ、はたから見れば、偉そうだけど
何も出来ない人間にしか見えないでしょ?
0983nobodyさん
2007/10/11(木) 18:52:49ID:???0985nobodyさん
2007/10/11(木) 19:14:59ID:???ちがうんじゃない?
あくまで>>1に則った上で質問してはじめてまともに答えてもらえる”かも”ってことでしょ
必ずしもどちらかが良くてどちらかが悪いってわけじゃなくてさ、少なくとも質問者は>>1に則った形でやるべきだと思うよ
本当にちゃんとした回答を得たいのならそうするべき
ただ質問者が100%満足する回答を望むのはお門違い
あと回答者も質問者をわざと煽ったり自分が100%正しいという姿勢で小馬鹿にする人いる
むかつくかもしれないけど、でもこういう人にも一応お礼を言うのが大人の対応
いちいちつっかかっててもそこに意味は見出せない
お互い気に喰わなければスルーすればいいだけだしね
0986nobodyさん
2007/10/11(木) 19:22:23ID:???俺、それ定型文としてIMEに登録している。
「@ばか」で変換するとお礼が表示されるよw
0987nobodyさん
2007/10/11(木) 19:36:11ID:???気に食わないやつは簡単にあぼ〜んできる。
0988nobodyさん
2007/10/11(木) 19:45:32ID:???質問者がIDを出すなら、
回答者もIDを出さなきゃ、
対等な話ができるとは思えんな。
0989nobodyさん
2007/10/11(木) 19:46:41ID:???0990nobodyさん
2007/10/11(木) 19:50:46ID:???決まってそれが荒れる原因。
なぜ小馬鹿にされてお礼を言わないといけないのか?
そんなに回答者は偉いのか?
0991nobodyさん
2007/10/11(木) 19:51:23ID:???1対多の1側だから困るんであって、多側はID出しても出さなくても何も変わらん。
どっちにしろ無視するしかないんだから。
0992nobodyさん
2007/10/11(木) 19:54:47ID:???お礼とか態度とかは無視すればいいじゃない
いいたい事が良く分からない、お互い気に食わないレスがあるのは特に2chなら当たり前
良い事だと思わないけど、困ったちゃんとか色々いるわけよ気にすんな。
0993nobodyさん
2007/10/11(木) 19:59:16ID:???0994nobodyさん
2007/10/11(木) 20:00:15ID:???0995nobodyさん
2007/10/11(木) 20:38:57ID:???回答者は全く困らん。
0997nobodyさん
2007/10/11(木) 20:49:39ID:???ID出したところでそれは減らない。
どっちにしろ複数の回答者がいるんだ。騙っても騙らなくても一緒だし、
「わざわざ騙って」煽ってるやつは過去の例を見てもあまりいない。
単にID出さないからみんな一緒に見えてるってだけだろ。
0998nobodyさん
2007/10/11(木) 20:57:50ID:???自分の考えを押し付けるのはどうかと思うよ
と、いつも別スレにいる俺が言ってみる
0999nobodyさん
2007/10/11(木) 21:05:38ID:???これを延々と繰り返してどんどん馬鹿になって行く日本人(笑)
どちらが偉いとか言う気はないけどそういう世代なんだろうね
1000nobodyさん
2007/10/11(木) 21:07:09ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。