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

△▲ WebProg 初心者の質問 Part16 ▼▽

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/08/22(水) 05:53:43ID:???
2ちゃんねるは初めて。 WebProg 板は初めて。
質問したいけど、どうしたら良いか分からない。

そんなときは、ここに書き込んでください。
板の住人や、その他が、けなしながら、厳しく教えてくれるかも。

質問する前に、まずはここを読んでね。
【注意事項】
・質問する前にGoogleで検索してみましょう
http://www.google.co.jp/
・環境(ソフトウェアのバージョンなど)は、必ず書いてください。できるだけ詳しく。
 後から情報を書き足す、いわゆる情報の小出しは極力避けてください。
・何がしたくて、何ができて何ができないのかを書きましょう
・マルチポスト(複数のスレッドで質問する行為)は絶対に禁止です。
・過去ログは必ず読みましょう。あなたと同じ質問をしてる人がいるかも知れません。

2ch 総合ガイド
http://www.2ch.net/guide/

お願い。
適切な、板、スレ、を発見した場合、誘導してあげましょう。
スレの性質上 age 進行でお願いします。

関連情報は
>>2-3辺り

欲しいCGIが見つからないならこっちへGo!!
【CGI】こんなCGI探してますver.22
http://pc11.2ch.net/test/read.cgi/hp/1166794984/
前スレ
△▲ WebProg 初心者の質問 Part15 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1169725490/
0642nobodyさん2008/01/23(水) 02:31:49ID:???
共用サーバでSuEXECが効いているならパーミッションによる保護は絶対だろう。
もし、サーバの設定がザルだと他のアカウントから普通に読める。
0643nobodyさん2008/01/23(水) 03:21:42ID:???
データファイル名を ,htxxxxx にしちまって
スクリプトからのアクセス(スクリプトはファイルI/Oで読む)可能でも
ブラウザからは読めないようにすればいいんじゃね?
.htaccessもいじる必要は無い。
0644nobodyさん2008/01/23(水) 04:54:08ID:+GfNFwTn
開発機のwinと、テスト機のlinuxの間で、
ディレクトリを自動的に同期させたいのですが、
どうするのがいいですか?
0645nobodyさん2008/01/23(水) 05:16:07ID:???
なんか板違いのような気がする
0646nobodyさん2008/01/23(水) 06:10:19ID:???
cwRsyncという奴でなんとかできました
自動ではないですが…
0647nobodyさん2008/01/23(水) 06:25:47ID:+GfNFwTn
win-linux間をrsyncで同期すると改行がcrlfのままです
lfにする処理をどこで行うのがベストでしょうか?
>>646
開発環境に関することなので板違いではないと思いますが…
0648nobodyさん2008/01/23(水) 06:38:08ID:???
>>647
winで開発中の時点で
0649nobodyさん2008/01/23(水) 06:59:20ID:???
エディタやIDEの設定でですね
やっぱりそれが一番ですか
何かの拍子でcrlfが紛れこんでしまいそうで不安も残りますが
その時はその時ですね
0650nobodyさん2008/01/23(水) 08:50:27ID:???
Winで開発してFTPでうpして実行する手間はそんなに面倒だと思わないけどな。
XAMPPをWinに入れて実行までをやる方法もあるけれど、それは駄目なの?
0651nobodyさん2008/01/23(水) 09:12:49ID:???
ちょ、おまっ・・・
0652nobodyさん2008/01/23(水) 13:19:28ID:???
yahooの検索サイトで、リニューアルされる前から気になっていたのですが、
トップページにおいて、リンクが貼られているアドレスと、それをクリックした時に
表示されるアドレスが異なってますよね。
どういった都合であのような仕様にしているのでしょうか。
通常だと 〜.cgi でいいかと思うのですが。

公表されていないことであれば、「わからない」となりますが、プログラム的な
都合であのようにする必要性は、私には無いとしか思えません。
こういう利便性がある、みたいな推測で結構ですので、よろしくお願いします。
0653nobodyさん2008/01/23(水) 13:22:18ID:???
rewrite
0654nobodyさん2008/01/23(水) 13:27:21ID:???
>>653
ありがとうございます。
0655nobodyさん2008/01/23(水) 13:31:49ID:???
2ちゃんねるをIEで見る時、アドレスの最後がスラッシュになっていても
cgiが動いてますよね。あれはどういう仕組みなのでしょうか。
通常だと以下のようなアドレスになるかと思うのですが。
2ch.net/pc11/read.cgi?1187729623
Apacheの設定では、拡張子の設定はあっても、アドレスにはファイルが
存在していないような設定はないはずですが。
0656nobodyさん2008/01/23(水) 13:35:21ID:???
pathinfo modrewrite
0657nobodyさん2008/01/23(水) 13:35:48ID:???
拡張パスでヤフーでぐぐってみそ
0658nobodyさん2008/01/23(水) 14:00:50ID:???
いろんなキーワードありがとうございます。
簡単にぐぐってみたら、欲しい情報が出てきましたので、
後で詳しく読んでみます。
0659nobodyさん2008/01/23(水) 14:14:58ID:???
ヤフーでぐぐる?
0660nobodyさん2008/01/23(水) 14:24:15ID:???
バカだから気にしちゃだめ!
0661nobodyさん2008/01/23(水) 16:26:22ID:???
liveでaskる
0662nobodyさん2008/01/23(水) 17:02:47ID:???
明日どこ行くの?
0663nobodyさん2008/01/24(木) 00:37:44ID:???
>>642
なるほどね。
まあそんなことはめったに無いか。
あ、でもmod_perlとかで広告挿入スクリプトが誤爆したときとかやばそうだなぁ。

>>643
それなら古典的手法の拡張子.cgiでいい気もする。
0664nobodyさん2008/01/24(木) 16:05:18ID:oseLc3nh
phpスレで聞いたところ、スレ違いということでこちらにきました

いま、フォームを作っています。
1)記入フォーム 2)確認ページ 3)登録ページ(SQL) 4)完了ページ
という流れがあって、登録ページは登録完了後すぐに4の完了ページに
リダイレクトされるとします。(リロードによる二重送信防止のため)

で、リダイレクト先の完了ページで登録内容を修正したいと思ったユーザが、
ブラウザのバックボタンを押すと確認ページに戻り、そこで「登録」することで
結局2重送信の形になってしまいます
どうしたらいいでしょうか? バックボタン使用禁止などのメッセージを置く以外に
良い方法ないですか?
一度目の登録時に登録完了のフラグを持たせて、用意した「書き直す」ボタンでhidden送信しても
ブラウザの戻るボタン使われたら元も子もないですよね…
みなさんどうやってるんですか?
一応調べたんですが、「戻るボタン使用禁止メッセージ」を使うというのが多くて、
それ以外の考え方が聞きたくてお尋ねしました  よろしくお願いします
0665nobodyさん2008/01/24(木) 16:59:11ID:???
>>664がいっているphpスレとはこれのことか?
http://pc11.2ch.net/test/read.cgi/php/1199956159/775-776
0666nobodyさん2008/01/24(木) 17:19:17ID:???
誰もスレ違いなんて書いてないと思うが
0667nobodyさん2008/01/24(木) 17:36:51ID:???
百度は大陸にカエレ
06686642008/01/24(木) 18:20:31ID:oseLc3nh
どうもすみません
スレ違いって意味で「どこに書き込んでるんだ」と言われたのかと思い…
質問の件ですが、お願いします
ヒントでもなんでもいいので… よろしくです
0669nobodyさん2008/01/24(木) 18:22:42ID:???
まず、再送信をどこまで許容するかという問題もあるんだが。
戻るで戻ってパラメタ変えて再送信とかな。

とりあえずHIDDENで時刻やアドレスから作った値でも仕込んでおいて
同じ値は二重送信と判断するとかしてみたら?
0670nobodyさん2008/01/24(木) 23:18:55ID:???
処理が終わるたびに2回ページを飛ばしてしまうという方法はだめかな。
SQL→metaタグで飛ばす→完了しました。

ま、このあたりは深く考えるときりがない話だと思うけどな。
0671nobodyさん2008/01/24(木) 23:36:37ID:???
そんなことはどうでもいいからいいからCSRF対策をしろ
0672nobodyさん2008/01/24(木) 23:38:35ID:XLbY+fSt
JavaとかPHPとかASPとか、言語ごとの長所、短所について
ひととり説明しているようなサイトってないでしょうか。

サーバサイドだけではなく、クライアント側のC++、VB、Java
等についても何がどうすぐれているのか知りたいのですが。
0673nobodyさん2008/01/24(木) 23:42:38ID:???
>>672
そういう比較が欲しい気持ちも分かるが、言語それぞれにモットーが
あるので、目的次第なところがあり、比較しようがないのよね。
だから、大雑把過ぎるもの以外はない。
もっと目的を絞れば詳細に比較をしているサイトはある。
0674nobodyさん2008/01/25(金) 00:18:53ID:???
>>673
なるほど、ちょっと調べてみます。
ありがとうございました。
0675nobodyさん2008/01/25(金) 00:48:12ID:???
>>664
1)の入力が問題なかったら2)を表示するとともにセッションにデータ入れるでしょ
3)で登録するとともにセッションの該当データ消せばいいよ。

>完了ページで登録内容を修正したいと思ったユーザ
完了ページに編集ページへのリンク置いとくとか。
0676nobodyさん2008/01/25(金) 00:53:32ID:???
入ったまんまいなくなるだろ脳無し
0677nobodyさん2008/01/25(金) 01:01:20ID:???
>>676
それはGCするしかないだろ、セッション自体そういうものだ。
それより(3)で消したら「戻る」ことができるほうが問題じゃないのかこの場合。
0678nobodyさん2008/01/25(金) 01:08:19ID:???
お前もワンタイムトークンとかCSRFでぐぐれ
06796642008/01/25(金) 01:49:52ID:???
皆さんいろんな意見ありがとうございました。
頂いたアドバイスを参考に、以下のやり方を試すことにしました。

1)のフォームページで$_SESSION['inputstart']=1 とする
2)の確認画面にif($_SESSION['inputstart']==0){//エラーページに飛ばす} の処理を追加
4)の完了画面で$_SESSION['inputstart']=0 とする

こんな感じで…  まずいですかねー
念のため、ワンタイムトークンていうの調べてみます
ありがとうございました
0680nobodyさん2008/01/25(金) 02:32:12ID:???
リロードしたユーザにnotifyするだけならそれでもいいんじゃない?
画面3の存在が謎だが…

セッションはウィンドウごと複製できちゃうから排他制御したいなら問題だし、
登録ユーザのおいしい情報ならCSRFの問題もあるし、
目的や使いどころによってはそれに応じて別の対策も必要
0681nobodyさん2008/01/25(金) 03:39:24ID:MSgqQJVy
サーバサイドで生成した画像ファイルのキャッシュをしようと思うのですが
ファイルベースで行う方法と、DBベースで行う方法のどちらがいいでしょうか?
DBだと、DBにアクセスするオーバーヘッドがありますが、
ファイルがひとつに固まっているので、メンテナンス性はいい。
ファイルベースだと、DBのようなオーバーヘッドはありませんが
iノードを消費し、大量になるとメンテナンス性が落ちる。
と、一長一短あるとは思うのですが・・・
0682nobodyさん2008/01/25(金) 03:59:45ID:???
画像の種類とサーバ構成による。
一般にDBだとスケールするのが面倒。コネクション数で詰まるからスレーブの台数も多くなる。
0683nobodyさん2008/01/25(金) 04:10:50ID:???
メンテナンス性って具体的に何よ
0684nobodyさん2008/01/25(金) 04:13:12ID:???
>>679
それSQLを発行するタイミングでチェックしないと何の意味もないよ
0685nobodyさん2008/01/25(金) 04:22:27ID:???
ああ、たしかにDBはコネクションの問題がありますね
メンテナンス性っていうのは、
一つのディレクトリにファイルを大量に入れると速度が落ちるからディレクトリを掘らないといけないとか
古いキャッシュを削除する時にファイル数が膨大になると時間がかかるとかです
バックアップも時間かかりそう…と思ったけど
よく考えたらキャッシュのバックアップなんてしなくていいですね
0686nobodyさん2008/01/25(金) 04:28:10ID:???
DBの利点としてはメタ情報を持たせるのが簡単なことがあると思います
キャッシュの参照回数など
0687nobodyさん2008/01/25(金) 04:47:48ID:???
>>686
DBがメタ情報を持ってることと、キャッシュ本体を持ってることはとくに関係がないな
DBでやるとキャッシュコントロールやバリデーションに応じたレスポンスなど、apacheが
やってる作業を実装する手間があるので、楽をしたいということならURLベースで
キャッシュすることにして全部Squidに任せるのが一番簡単で速いと思う
0688nobodyさん2008/01/25(金) 05:16:35ID:???
>>687
なるほどSquidですか…
それは考えたこともなかったです
ちょっと勉強してみます
ありがとうございました
0689nobodyさん2008/01/25(金) 05:19:27ID:???
う〜ん、メタ情報ってのが必要なのか?
やはり画像の性質とかサーバ構成など、どのくらいのデータをどうやって捌こうとしてるか次第なところがある。
ごく小規模なシステムで、既存のコンテンツキャッシュと協調させたいとかだとDBも選択肢に入るしね。
まずはファイル削除にどのくらい時間がかかるか、まず試してみることを薦める。
0690nobodyさん2008/01/25(金) 05:30:13ID:???
俺の場合脳内メーカー的なものならファイルベースにするけど
ブログのアドオンならDBに入れるかな
0691nobodyさん2008/01/25(金) 05:43:00ID:???
>>687
リバースプロキシは動的な画像のキャッシュには向かねえべ
任意のタイミングでキャッシュを削除する処理とか必要になったりしないか
ならなきゃそれでいいんだがw
0692nobodyさん2008/01/25(金) 06:34:54ID:YEESSLoq
質問させてください 出席簿のようなアプリを作るとします。
フォームの要素は名前(name)・年齢(age)・住所(address)で、このセットが
20組くらいあるとします。
出席者は不特定数で、5人のときも20人のときもあります。
登録するテーブルのカラムも上記の3つだけのとき、どうやって
SQL文を書いたらいいんでしょう?
ループをまわすのがよさそうですがどうもよくわかりません
すみませんが教えてください。よろしくお願いします
0693nobodyさん2008/01/25(金) 06:47:09ID:???
> 登録するテーブルのカラムも上記の3つだけ
出席簿なんだから、来た人物は"何に"あるいは"いつ"出席したかという情報と結びつけなくて良いのか。
0694nobodyさん2008/01/25(金) 07:27:13ID:YEESSLoq
>>693
ありがとうございます とりあえずそれはいいです
不特定多数のデータを登録する仕組みを知りたいだけなので
よろしくお願いします
0695nobodyさん2008/01/25(金) 08:02:43ID:???
>>692
テーブルのカラムのつくりがおかしいと思うよ。
カラムは名前、年齢、住所と出席した講座名として、
その講座に出席した人を登録する。

なお、不特定多数のデータを登録する仕組みはありません。
不特定多数ということはシステム設計上は無限個数データを受け入れるか
ある上限に達したたらデータ登録はしなくてよいという制約を設けるしかありません。
どちらもシステム設計上問題があるので、こうしたアプローチはとりません。

0696nobodyさん2008/01/25(金) 08:06:45ID:???
SQLの書き方ならば、データベース板のほうだろう。
でも、書き方を知りたいのならば、質問するよりもサイト検索した方が早い。
君が納得するまで、具体例(SQLを実行する前のテーブルの状況と実行結果など)を
書けというつもりなのか?
0697nobodyさん2008/01/25(金) 08:19:25ID:???
>>692のIDは、なんとなくかっこいい件
06986922008/01/25(金) 09:04:47ID:YEESSLoq
お騒がせしています、ご意見ありがとうございます。
言われてみて読み返すと、自分の文章に問題がありました。
一度の登録は上限20人として、0〜20の間で不特定数です。
(書いてみるとほんとに問題でした、すみません)

くどくてすみませんが、もう一度詳しく説明させてください。
たとえば、テーブルのカラムが最初から20人分あるんだったら
id,name1,age1,address1〜name20,age20,address20のような形で、
insert into table values(0,$name1,$age1,$address1…$name20,$age20,$address20)って
ふうにするのはわかりますが、それだと一人しか参加しないとき大量のNULLが
発生して無駄なので、name,age,addressという3カラムのテーブルにしたいのです。

ただ、このやり方だとどうやって一度に参加人数分のinsertをすればいいのか
わからないのです。
なので、SQLの書き方といったのも間違いで、SQLを表現するプログラム(PHP)の
書き方をしりたいな、と思っています。
フォームの構成は <input name="name"><input name="age"><input name="address">が
20組並んでる構成を考えていますが、それも間違ってるでしょうか?
すみませんが、気が向いたらで結構ですのでご意見お願いします
0699nobodyさん2008/01/25(金) 10:18:12ID:???
テーブルの設計をいろいろ工夫してみ
これやりだすと面白くてはまる可能性があるが
0700nobodyさん2008/01/25(金) 10:56:01ID:???
>>698
SSLか
いいIDだ
0701nobodyさん2008/01/25(金) 11:03:14ID:???
カラムをいくつも増やしていいのか?
だったらテーブルの構造を

id,name,age,address,Attendance

とかにしてAttendanceに出席したら1,出席してないなら0

テーブル増やしちゃいけない場合なら

nameに例えば(小林,1)とかにしてinsertすればいいと思う。

取り出した時にsplitとかで取り出せばOK
0702nobodyさん2008/01/25(金) 11:53:43ID:???
>>698
「ある人数分をまとめてinsert into する」という事は通常はやらない。
「1人分のデータをinsert into」を○回行う。を、やる。
htmlでinputタグが20件並んでいて、ボタンを押すということだよな?
だったら、inputの値を取得し、その値が""であれば、SQLは実行しない。
でいいだろ。

工夫してループを書くことが出来ないのであれば、1件分を書いて、
20回コピペしなさい。
0703nobodyさん2008/01/25(金) 12:02:56ID:???
でも、エラーチェックの事も考え、通常はシステム的に複数の
データを同時に一括で登録するというシステムを作ることは少ない。
登録している一覧が表示されており、それに1件追加という
形式の方が多い。
0704nobodyさん2008/01/25(金) 13:36:45ID:???
サンプルとなるコードを書いてみた。目的としているソースはこんな感じでいいのかな?
テーブル名がかかれてなかったので、[テーブル名]としている。
登録したデータ件数は $dat_cnt に入るようになっている。

htmlファイルが、以下のような感じで20件書かれている場合
<input name="name1"><input name="age1"><input name="address1">
<input name="name2"><input name="age2"><input name="address2">
<input name="name3"><input name="age3"><input name="address3">


<?php
$dat_cnt = 0; // データ件数
$i = 1;
while($i < 21){
$name_str = "name" . $i;
$age_str = "age" . $i;
$addr_str = "address" . $i;

// エラーチェック
if($_POST[$name_str] == "" or $_POST[$age_str] == "" or $_POST[$addr_str] =="" ){
// 入力不備なので何もしない。
}else{
// SQL文の準備
$dat[$i] = $_POST[$name_str] . "," . $_POST[$age_str] . "," . $_POST_[$addr_str];
$sql_str = "INSERT INTO [テーブル名] VALUES( " . $dat[$i] . " );"
// ここでSQL実行(省略)
$dat_cnt = $dat_cnt + 1;
}
$i = $i + 1;
}
?>
0705nobodyさん2008/01/25(金) 14:20:18ID:???
つまらない質問すみません。

http://fair.jmd.ne.jp/detail.asp?feature_cls=1&page=3&merch_set_cd=TECN-10628
上記URLに何か付け足すと買い物かごに入れるURLになるらしいのですが、どなたか分かりませんか?
0706nobodyさん2008/01/25(金) 14:40:55ID:PGrlWPEk
画像をアップロードする前にサムネイル表示させて確認させるために
以下のようにしていました。
WindowsXP+IE7だと問題ないのですが、VISTA+IE7環境だと
画像が表示されません。
ローカルファイルへのアクセスが厳しくなったためかと思われますが
設定でもプログラム変更でも結構ですので回避策があれば教えてください。
--------------------------------
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>サムネイル</title>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<script type="text/javascript">
function imgc(objimg) {
document.getElementById("s_img").src= "file:///" + objimg.value;
document.getElementById("s_img").style.display="inline";
}
</script>
</style>
</head>
<body>
<form>
<input type="file" onChange="imgc(this)" /><br />
<img src="" id="s_img" /><br />
</form>
</body>
</html>
0707nobodyさん2008/01/25(金) 14:52:31ID:???
一旦アップロードさせるしかないのでは?
で、OK であればサーバーにアップされてるテンポラリファイルを処理すればいいかと
0708nobodyさん2008/01/25(金) 14:54:09ID:???
>>705
何か怪しいことをやろうとしているという意味?
怖かったのでサイトはクリックしていない。

>>706
手元に環境が無いので予想しかいえないが、セキュリティーの設定を
変更してみてもダメだったということ?
まずはjavascriptの実行をするIEの方に問題があるのか、それとも、
システム的に制限をかけているのかを見ることになるだろう。
0709nobodyさん2008/01/25(金) 16:21:48ID:???
プロジェクトのファイルの管理ってどうやってますか?
今までは、USBのHDDに全部を入れてwindows上で開発していましたが
最近のフレームワークは、サーバ上でscaffoldを生成するものが多いです。
coLinuxやVM上で構築していくことになりますが
これを続けるとファイルがあちこちのVMに分散してしまいます
複数のプロジェクトも一カ所に格納しておけるような
いい方法はないものでしょうか。
0710nobodyさん2008/01/25(金) 16:30:14ID:???
ファイル鯖使えよ
0711nobodyさん2008/01/25(金) 17:17:49ID:???
質問です。
2ch.net で使用している read.cgi や bbs.cgi のソースコードは
見ることが出来るのでしょうか。
高速化プロジェクトなどのページを見てみても、そのソースを
見つけることは出来ませんでした。
あのようなプロジェクトの話は、途中経過の報告でしかないと
言う意味合いなのでしょうか。
0712nobodyさん2008/01/25(金) 17:23:55ID:???
インデックスとデータは拾えるからデータ構造は分かるしCGI名もわかる
あとは好きなように組めばいい
0713nobodyさん2008/01/25(金) 18:09:28ID:???
>>705
そのサイトのパラメータ弄って不正なデータを送受信したいのか、
パラメータにデータを付加してやりとりする方法が知りたくて、そのサイトを例にあげたの?
どっち?
0714nobodyさん2008/01/25(金) 18:33:43ID:???
>>713
もう終わったのでいいです。
競争率高かったから買い物カゴへ入れるページをリロードしたかっただけです。
0715nobodyさん2008/01/25(金) 19:15:21ID:???
これはひどい
0716スマブラ2008/01/25(金) 19:44:13ID:qFpMTcD7
どんなスレ建ててもいいの?
0717nobodyさん2008/01/25(金) 19:44:52ID:???
プログラムでいろいろやるんじゃなくて、買い物カゴヘ入れるを
クリックすれば良いのでは?
0718スマブラ2008/01/25(金) 19:45:14ID:qFpMTcD7
↑質問です。
0719nobodyさん2008/01/25(金) 19:47:07ID:???
>>718
何をいいたいのかわからんが、ローカルルールに違反していなければ、おk
0720nobodyさん2008/01/25(金) 19:52:22ID:???
ASP.NETを使っているのですが、
送信ボタンが押されたらフォームの値を取得/整理して
DBへ放り込むというよくある仕組みで、
クリックイベントを受け取るbtnSubmit_Clickというメソッドと、
DBへのinsert処理を行うinsertFormDataというメソッドに分かれている場合、
フォームの値をDB用に変換する処理(*)というのは、
btnSubmit_Clickの時点で行うべきでしょうか。
それともinsertFormDataで行うべきでしょうか。

個人的にはbtnSubmit_Clickで全て整理して、
insertFormDataは、ただ受けた引数をDBへ投げるだけという単純処理に
特化させた方がいいのかなと漠然と考えていますが…。

*年 月 日のそれぞれのドロップダウンリストをまとめて、Date型作成等
0721nobodyさん2008/01/25(金) 20:34:15ID:???
そのフォーム固有の成型はクイックイベント時にやるしかないだろね
コードが散らかるが
0722nobodyさん2008/01/25(金) 22:19:55ID:???
>>721
ありがとうございます。参考になりました。
調べてみたらMVCの概念にもあっているようなので、その方向で行きます。
ttp://www.microsoft.com/japan/msdn/practices/type/Patterns/enterprise/ImpMVCinASP.aspx
07236922008/01/26(土) 00:09:51ID:???
お礼遅れてすみません
>>701-704
ありがとうございました。凄く参考になりました
頂いたアドバイスを参考にして作ってみます、どうもありがとう
0724nobodyさん2008/01/26(土) 08:12:49ID:???
>>704を読み返してみると、SQL文のVALUESの括弧中の""のつけ方が
間違っているような希ガス
0725nobodyさん2008/01/26(土) 09:03:34ID:???
俺もPHP+MySQL始めたころはあんな風に書いてた、書いてた
0726nobodyさん2008/01/26(土) 09:42:33ID:???
で、今は進歩したわけ?
0727nobodyさん2008/01/26(土) 10:45:22ID:???
これでどうかな?VALUESの文字列に加え、インジェクション対策も
一緒に付け加えてみた。

// SQL文の準備
$sql_name = mysql_real_escape_string($POST[$name_str]);
$sql_age = mysql_real_escape_string($POST[$age_str]);
$sql_addr = mysql_real_escape_string($POST[$addr_str]);

$dat[$i] = '"' . $sql_name . '","' . $sql_age . '","' . $sql_addr . '"';
$sql_str = "INSERT INTO [テーブル名] VALUES( " . $dat[$i] . " );"
mysql_query($sql_str);
0728nobodyさん2008/01/26(土) 11:15:56ID:???
>>726
随分と
0729nobodyさん2008/01/26(土) 12:29:23ID:???
くさい
0730nobodyさん2008/01/26(土) 17:01:10ID:???
プログラミングの経験はあるのですが、PHPにおいては初めてです。
サーバでPHP4しか使えない環境の場合、そこでは無理にプログラミング
しない方がよいのでしょうか。
PHP5に比べて、環境変数の表記が古いなど、いくつか違いがあるようですが、
深いところまでプログラミングをしていないので、コーディングにおいて
変な癖がつくのかの判断がつきませんので、ここで質問をしてみました。
PHP5の環境を探した方がよいのか、それとも現状のPHP4で組んでも
問題ないのか、出来ましたら理由もあわせてアドバイスを頂けたらと思います。
0731nobodyさん2008/01/26(土) 17:39:10ID:???
5流のクラスとか使いたいなら始めから5使ったほうがいいね
4はセキュリティFIX以外のサポートも終わってるし

ついでに、サーバ側でプログラミングするように読み取れるが、
普通はローカル環境で行うもの
0732nobodyさん2008/01/26(土) 17:58:33ID:???
>>731
レスありがとうございます。
4と5の仕様の違いを参考に、判断します。

サーバ側でプログラミングをするというよりも、ある程度形のあるものを
作って公開するという状況を考えた場合、今は4しかないという意味合いです。
もちろん開発はローカルで行いますが、公開を考えた場合、バージョンを
合わせざるを得なくなるのです。
0733nobodyさん2008/01/26(土) 18:04:46ID:???
別に変な癖はつかないよ
最初にマニュアルからPHP5限定の関数を抜き出すプログラムでも書いてみるとか
0734nobodyさん2008/01/26(土) 18:07:34ID:???
PHPは関数の仕様を頻繁に変えてくるんでアンテナ張ってないと躓くことあるかも
0735nobodyさん2008/01/26(土) 18:17:12ID:???
そんなこと滅多にないし仮にあったとしてもバージョン上げる時に自分でreadme見ればこれ以上なく明示的に書かれてる
0736nobodyさん2008/01/26(土) 18:20:23ID:???
みなさん、レスありがとうございます。

>>733
差分をみるところからやってみると考えに整理がつきそうですね。

>>734
仕様が頻繁に変わる傾向にある言語だと聞いたことがあり、そこで
ついていけるのか不安なところがあるのですが、変更があるところの
基本は、関数名などですよね?

>>735
VBがオブジェクト指向対応になった時とか大きな変化があり、
概念が変わったりしたので、そういう変化があるのかが
気になってました。4でもやっていけそうですね。安心しました。
0737nobodyさん2008/01/26(土) 18:27:07ID:???
>>732
どちらでも動くようなもの作るなら、
クラスは4の仕様で作りながら、微妙なところはphpversionで
4, 5 分けて処理すればいい
0738nobodyさん2008/01/26(土) 18:43:00ID:???
ASP.NETで開発しているんですが、
DropDownList で複数項目が選択されるように指定できません。
というエラーが出てしまいます。
スタックトレースを見てもSystem.Web.UIから始まるクラスしか出てこないので、
何が原因か全く見当もつきません。
デバッガで追うと、6つのDropDownリストのうち1つのDataBoundハンドルが
2回呼び出されているところまでは突き止めました。
しかし、そこで呼び出しているのは

Sub SelectItem(list As DropDownList, name As String)
If IsNothing(name) Then
list.SelectedIndex = 0
Return
End If

For Each item As ListItem In list
item.Selected = False
If name.Equals(item.Text) Then
item.Selected = True
End If
Next
End Sub

というサブルーチンで、複数呼び出したとしても問題あるようには思えません。
それと、

list.Items.Insert(0, new ListItem("", ""))

を呼び出しているのですが、1回目の呼び出しでlist.Items.Countが3なのに、
2回目でも3なのです。
どなたか原因がわかる方いますか?
0739nobodyさん2008/01/27(日) 04:28:28ID:???
ここに聞いていいものなのかわからないのですが質問です
ページをphpで自動出力してるんですが、ソースを見ようとすると
「キャッシュの有効期限が切れています。ページを表示するには再送信…」
ていうアラートが出ます
何が原因ですか? ページそのものを表示しようとして出たことはありますが、
ソースを見ようとしてっていうのは初めてで、、
ブラウザはFireFoxです。 ご意見よろしくお願いします
0740nobodyさん2008/01/27(日) 09:16:40ID:???
>>739
そのphpがどういう仕組みになっているのかをみなければ、何とも。
phpじゃなくて、javascriptのコードが関係している可能性もあるわけだし。
0741nobodyさん2008/01/27(日) 09:35:38ID:???
>>737
phpversionというのがあるんですね。
ありがとうございます。調べてみます。
0742nobodyさん2008/01/27(日) 13:36:28ID:IFsQu3P4
>>692で出席簿の作り方について聞いたものです。それについてまた一つ相談お願いします

一旦登録した後の情報(出席者)に、新しく出席者を追加する時って
普通は単純に追加用フォームを表示して追加するのだと思いますが、理由があって
新規登録用フォームにそれまでに登録した人たちもリスト化(フォームに代入)して、
そこに新しい出席者の情報を加える形で、まとめて登録する必要がでてきました。

なので、クエリはUPDATE文ではなく、登録済み情報を一旦DELETEした上で、再度INSERT文
で全員登録しなおす形でやろうと思ってます。

で、思ったんですが、この処理の最中デリートし終わったあとに接続エラーなんかが発生して
INSERTできないと大変困ります
こういうのどうしたらいいでしょう? また、上記の登録のルーチンについて
改良案などないでしょうか?  どなたかアドバイスお願いします。
環境はapache2 & php5 &mysqlです
■ このスレッドは過去ログ倉庫に格納されています