[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 06/01 12:02 / Filesize : 180 KB / Number-of Response : 739
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれPHP(超初心者用)5



1 名前:nobodyさん mailto:sage [2008/11/22(土) 06:36:02 ID:???]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。

PHP Home Page
www.php.net/
jp.php.net/



くだすれPHP(超初心者用)4
pc11.2ch.net/test/read.cgi/php/1213356756/

適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
pc11.2ch.net/test/read.cgi/php/1211879073/

154 名前:nobodyさん mailto:sage [2008/12/09(火) 05:12:49 ID:???]
検索アクションがあったら中身が空であっても検索結果を出すべきだろ
検索単語を入れるように検索結果のページで促したり
単純にヒットしなかったと検索結果を出すのが普通

155 名前:nobodyさん mailto:sage [2008/12/09(火) 13:03:23 ID:???]
いいことを教えてやろう。

<form action="search.php">

156 名前:nobodyさん mailto:sage [2008/12/09(火) 14:41:55 ID:???]
入力エラーだからlocationヘッダでトップページに返せばいいんじゃない?
できればエラーメッセージつけてかえすと親切だな。

157 名前:nobodyさん mailto:sage [2008/12/09(火) 20:34:24 ID:???]
トップページと同一のファイルで検索結果を表示しようとしてるの?
普通に検索用のスクリプト作ればいいじゃない。


158 名前:nobodyさん mailto:sage [2008/12/09(火) 22:03:51 ID:???]
symfonyで作ったスクリプトって、単体じゃー動かないの?
symfony本体無いと動かない?

上の質問が正解だとすると、レンタルサーバではほぼ使えないですよね?
symfony使えるサーバじゃないと。

159 名前:nobodyさん mailto:sage [2008/12/09(火) 22:10:06 ID:???]
>>158
フレームワークなんだからそれ通さないと動かないに決まってるだろ
PHPのフレームワークなんだからPHPで書かれてるだろ
PHPさえ使えればどの鯖でもつかえるんじゃね?

160 名前:nobodyさん mailto:sage [2008/12/09(火) 22:56:48 ID:???]
よろしければご質問いたします

データベースに内に用事のある日付と人のIDを入れておくテーブルが有ったとします
(DATE, ID)
(11/29, K)
(12/5, F)
(12/7, F …みたいな感じ)

そこからSQL文で月を指定してまとめてデータを抜き出しておいて
画面テーブルのトップに日付と曜日の一覧を表示させておいて
人別に用事のある日付に×を書き込みたいのですけど
(5日と7日に用事があればF, , , , ,×, ,×, …みたいな感じ)

SQL文で範囲選択して取得したデータを保持しておいて
その中に条件にあったデータが有るかをチェックする事って出来ますか?

for文で画面テーブルを作成しながら$iの値を日付に合わせて増やしていき
SQL文で一度取得したデータの中に$i(日付)と同じものが有れば
×を記入さていこうかなと考えています

お分かりになるかた、もっといい方法を思いつく方
ご教授を願えたら有り難く思います

161 名前:nobodyさん mailto:sage [2008/12/09(火) 23:00:33 ID:???]
> ご教授を願えたら有り難く思います

「ご教授願えますか」なら兎も角、不思議な日本語。

162 名前:160 mailto:sage [2008/12/09(火) 23:09:26 ID:???]
>>161
早速ご指摘を頂き有り難う御座います

追加ですが配列を使用せずに記述をしたいと考えております

お分かりになる方、もっといい方法を思いつく方
ご教授願えますか



163 名前:nobodyさん mailto:sage [2008/12/09(火) 23:15:35 ID:???]
このスレを教授が見てる確率は限りなく低いので
無理でないかと思います
大学で聞くのが一番早いと思うのでそちらをお勧めします

164 名前:160 mailto:sage [2008/12/09(火) 23:21:52 ID:???]
>>163
度々のご指摘ありがとう御座います

正しくは教示の様ですね

>>160>>162に関しまして
お分かりになる方、もっといい方法を思いつく方
ご教示願えますか

165 名前:nobodyさん mailto:sage [2008/12/10(水) 00:15:00 ID:???]
>>164
SQLのクイズ出してるつもりならスレチだよ。
MySQLならgroup_concat(DATE) と group by IDを使って行を取得というのが楽
標準SQLで組もうとすると、ちょっとパズルチックになるからね。
他人が書いた答えは知ってるけど、オリジナルじゃないからググってみることをお勧めする。

個人的にはfor文で処理するより、rangeと配列、array_mapでサクッとテーブル書く方が好きだな。
ループはダサい。

でもあえて配列を使わないんなら、ORDER BY ID, DATEでクエリの結果セットを
ループしながらifとswitchでテーブル組めば普通にできる。

166 名前:160 mailto:sage [2008/12/10(水) 07:53:28 ID:???]
>>165
ご返答有り難う御座います

現在インターン中なのですが
そこで課題として従業員のシフト表を作成しています

従業員テーブルから情報を引き出して
それを元に休日テーブルから情報を引き出して表を作成しようと考えています

当初は一度配列に入れてから配列一つひとつをfor文とif文で参照しようと考えていましたが
担当の方にそのアイデアを話してみた所
配列に入れなくても出来ると一蹴されて困っていました。

一度>>165様に頂いたワードを調べて参考にしたいと思います

また別の方法が有りましたら教えていただけると
有り難く思います

167 名前:nobodyさん mailto:sage [2008/12/10(水) 07:54:29 ID:???]
2chでアルゴリズム聞いて実装するとか嫌なインターンだなw

168 名前:nobodyさん mailto:sage [2008/12/10(水) 08:13:18 ID:???]
いや、話を聞いてみるとよくある話。
ちゃんと説明しない嫌な担当だな。

ところで、面白い方法(拡張しないなら冗長だけど)あるよ。
配列もforループも使わない。たぶんifも最小限になる。
RecursiveIteratorIteratorっていうのがあるから、
個人イテレーターを親に日付イテレーターを子に持つようなイテレーターを
定義して、PDOをマップする。日付イテレーターのnext()は次にSQLデータの
有無にかかわらず日付をインクリメントする。
フィルターイテレーターも同時に実装して月別フィルターとか年別フィルター
とか週別フィルターとかも実装する。
テーブルソースの作成部分はデコレーターでデータをラップして文字列化
するようなものにする。
すると、
$obj = new shiftTable(array('scope'=>'month', 'target' => 12));
echo $obj;
で表が自動出力されるようなものが作れる。

169 名前:160 mailto:sage [2008/12/10(水) 08:34:45 ID:???]
>>167
グループ課題の担当している部分なのでグループ全体に
影響が出ないよう早く見当を付けたいと思い質問させていただきました

>>168
私の知識では拡張という言葉がどれ程の物をあらわしているのか分かりませんが
>>160は若干端折って記入しており、実際には×では無く
休日テーブルを書き換える為のチェックボタンが付いており
従業員が現在休みになっている日は初期画面で黒くチェックが入って表示され
画面テーブルの外部にsubmitボタンが付いています

担当の人の話では
休日テーブルから5と7という値を取得すれば配列に入れなくても
画面テーブルの5番目に表示させてから7まで空のセルをつくり
7番目でまた表示させることが出来ると言われました

それを解決しようと思い>>160の質問に至ったわけです

>>168様の方法も調べて参考にさせて頂きたいと思います
ご返答ありがとうございました

170 名前:nobodyさん mailto:sage [2008/12/10(水) 08:48:49 ID:???]
> 休日テーブルから5と7という値を取得すれば配列に入れなくても
> 画面テーブルの5番目に表示させてから7まで空のセルをつくり
> 7番目でまた表示させることが出来ると言われました

なんというトーニャハーディング、できりゃいいんかい!って感じの考えだな。
SELECTで前回表示のレコードを取得しとくのか、forループで前回データを保存するのか
いずれにしても、表示ロジックをデータ処理に放りこむのか・・・すごいな。
そういうところでは、はいはいって言うこと聞いて逆らわない方がよさそうw

もし、フォーム要素なんかが絡むんなら>>168の方法で基本ロジックを作成して
デコレーターでラップするといいんだけど、習得には多少なりとも時間が
かかるかもしれないのでお勧めはしない。

171 名前:nobodyさん mailto:sage [2008/12/10(水) 10:52:26 ID:???]
fromのポストでsubmitのnameの値を取得する方法を教えてください。

<input type=”submit” name="取得する値” value=”送信” />



172 名前:nobodyさん mailto:sage [2008/12/10(水) 11:00:06 ID:???]
$_POST['取得する値']



173 名前:nobodyさん mailto:sage [2008/12/10(水) 11:01:37 ID:???]
もしくは"送信"が限定されてるなら、array_search("送信", $_POST);

174 名前:nobodyさん mailto:sage [2008/12/10(水) 11:07:56 ID:???]
>>173
誤解していました。
ありがとうございます。
array_search覚えました。

175 名前:nobodyさん mailto:sage [2008/12/10(水) 11:29:34 ID:???]
少しおしえてください。
PDOでInsertをプリペアドステートメントで行うとき、値が空っぽの時、
NULLを挿入したいのですが、NULLじゃなく、''の空が挿入されます。

これってPDOのオプションで自動で''の時は、NULLを挿入することは出来ないのですか?

176 名前:nobodyさん mailto:sage [2008/12/10(水) 11:34:32 ID:???]
どんなソースで実装したの?

177 名前:nobodyさん mailto:sage [2008/12/10(水) 12:04:52 ID:???]
>>176

例えばこんな感じ

$id = 1;
$name = 'abc';
$tel = '03-3333-3333';
$email = '';

$sth = $dbm->prepare("INSERT INTO `test` (id, name, tel, email) VALUES (?, ?, ?, ?);");
$sth->execute(array($id, $name, $tel, $email));

この場合、$email が空になってるので、''でInsertされたと同じになって、
NULLが入りませんので、これをPDOのオプションでNULLに出来たらなと・・



178 名前:nobodyさん mailto:sage [2008/12/10(水) 12:13:26 ID:???]
$emailをNULLにすればよろしい

179 名前:nobodyさん mailto:sage [2008/12/10(水) 12:33:55 ID:???]
$sth->execute(array($id, $name, $tel, null));
にすれば、NULLが入るのは分かってるのですが、、それはめんどくさいですよね。。

180 名前:nobodyさん mailto:sage [2008/12/10(水) 12:47:47 ID:???]
空文字入れたいのか、null入れたいのかの区別がつかないじゃないか。
もし空文字のときは必ずnullでいいならば、間に関数1つかませばいいべ。

181 名前:nobodyさん mailto:sage [2008/12/10(水) 12:57:22 ID:???]
>>179
バインドメソッドで明示的に指定すれば?

182 名前:nobodyさん mailto:sage [2008/12/10(水) 12:57:33 ID:???]
そうですよね。
かますことにします。

ありがとうございます。



183 名前:nobodyさん mailto:sage [2008/12/10(水) 13:03:54 ID:???]

もう一つ聞いてもいいですか?
PDOとMySQL5です。

PDOを使ってSELECTをした場合、クエリーキャッシュは使われてるのでしょうか?

(PDO::MYSQL_ATTR_USE_BUFFERED_QUERYは無効にしてあります)


184 名前:nobodyさん mailto:sage [2008/12/10(水) 13:13:49 ID:???]
MySQLのクエリーキャッシュのことを言ってるなら、MySQLの設定次第

185 名前:nobodyさん mailto:sage [2008/12/10(水) 13:18:14 ID:???]
書き忘れましたが、PHP5.2.0です。

>>184
PHPのネイティブ関数であれば、クエリーキャッシュは効いてるですが、PDOを使うとだめぽっい。。


PHP5.2.1にアップするしかないのかなぁ・・。


186 名前:nobodyさん mailto:sage [2008/12/10(水) 14:41:30 ID:???]
動画データFLVの1コマ目だけをjpegにして、サムネイル化して表示
をしたいのですが、どうすれば出来るでしょうか?


PHP5.2を使ってます。詳しい方いらっしゃったらおしえてください。

187 名前:nobodyさん mailto:sage [2008/12/10(水) 14:48:09 ID:???]
>>185
PHP5.2.0ってだめなの?5.1.17ぐらいから使えるはずだけど。
まぁ、書いてるんだしそうなのかな・・・

188 名前:nobodyさん mailto:sage [2008/12/10(水) 15:00:33 ID:???]
>>187

PHP5.2.0のPDOだとクエリキャッシュが効いてないみたいですね。

PDO::MYSQL_ATTR_USE_BUFFERED_QUERYを有効にすると効きますが、副作用があって。。

189 名前:nobodyさん mailto:sage [2008/12/10(水) 18:06:24 ID:???]
どんな?

190 名前:nobodyさん mailto:sage [2008/12/10(水) 18:38:54 ID:???]
LIMIT ?,? とかやるとエラーになります。
なので、LIMIT 0,10 とか LIMIT {$offset}, {$limit}とやれば良いんですけど・・。 

191 名前:nobodyさん mailto:sage [2008/12/10(水) 19:00:30 ID:???]
まだ勉強中なんですが、phpで実現可能かどうか質問させて下さい

メールを受信した後、それをHTMLとして表示させたいんです。
エンコード状態のマルチパートなメール(ソース?)があるとして、
それをHTMLとして出力するライブラリみたいなのとかありますか?
問題は画像の部分だと思っています。(どう実現するかイメージも沸きません)

具体的な使い方は調べますので、あるかどうかと、
名前とかヒント教えてもらえるとありがたいです。

ちなみに、レンタルサーバ借りて(Web/Mail/php/DB)
iPhoneから使えるWEBメールシステムを自分の為に作ってます

192 名前:nobodyさん mailto:sage [2008/12/10(水) 19:05:12 ID:???]
PEAR Mailに受信したメールを読ませれば添付ファイルまで抽出できる。
メールサーバが立ってるなら、.forward等でphpプログラムに渡すと簡単。
他所のメールサーバーでも、POPやIMAP用の関数でアクセスすることも可能。
解釈部分はPEARが実績があると思う。




193 名前:nobodyさん mailto:sage [2008/12/11(木) 01:53:18 ID:???]
>>191 レンタルサーバだと難しいと思うよ

194 名前:nobodyさん mailto:sage [2008/12/11(木) 12:19:57 ID:???]
>>191
iPhoneならGmail使えば良いのに・・・


195 名前:nobodyさん mailto:sage [2008/12/11(木) 12:31:14 ID:???]
191です
ありがとうございます

>>192
PEAR MailのPOP3でメールとってますが
画像部分を一旦保存しなきゃダメですかね〜
極端な話、メールのテキストと埋め込み画像をまとめて
1つの画像に落としてくれる関数があればいいんですけど都合よすぎですね><
>>193
ネックは画像を抽出する部分とかでしょうか?
>>194
Gmailはメール入力が難ありで・・・
Yahoo!JメールはiPhone用のメール作成画面ないし・・
それと、
あるAさん宛てのメールとAさんから来たメールを抽出して
一覧で見せるようなのをイメージしてます

196 名前:nobodyさん mailto:sage [2008/12/11(木) 15:16:35 ID:???]
>>195 画像抽出は簡単だけど、
送信されてきたメールをプログラムに渡すにはサーバの設定が必要で、
POPから取得するとCRONの設定が必要。
メール送信して、スクリプトにアクセスするならいいけど。

197 名前:nobodyさん mailto:sage [2008/12/11(木) 15:47:11 ID:???]
特定URLに定期的にアクセスしてくれる、CRONサービスがあるから、
それを利用すればOK

198 名前:nobodyさん mailto:sage [2008/12/11(木) 15:48:27 ID:???]
WebMailに使うならアクセス時に全部取りに行けばいいので、
cronはいらないんじゃね?

199 名前:196 mailto:sage [2008/12/11(木) 17:30:03 ID:???]
ごめん勘違いしてた。じやあIMAP関数使えば楽勝。

200 名前:nobodyさん [2008/12/11(木) 22:26:19 ID:nahQekTa]
//↑DB接続からSELECT文実行まで↑
$perPage=10;
$index=0;
for($i = $index; $i < $index + $perPage ; $i++){
$row = $res->fetchRow(DB_FETCHMODE_OBJECT,$i);
echo $row->id;
//↓$row->***を使用した処理
}
クエリ結果$resから順次行を取り出し$row->***で取得されるデータを使って処理をしたいのですが、echo $row->idを実行してもなにも表示されません(ソース上も)。

$row = $res->fetchRow(DB_FETCHMODE_OBJECT,$i);
↑この部分がおかしいんだとは思うんですが・・・

201 名前:nobodyさん mailto:sage [2008/12/11(木) 22:51:56 ID:???]
fetchRowで$iやめてみたら?
そのままだと$rowでbreakする必要があるかもしれないけど。

202 名前:nobodyさん [2008/12/11(木) 22:54:53 ID:nahQekTa]
>>201
レスありがとう

本当は$indexに現在のページ数が入って$indexの時は1〜10行目まで、$index=2のときは11〜20行目までという風に処理をさせたいのでfetchrowに$iを使わずwhileなどで処理できないんですorz



203 名前:nobodyさん mailto:sage [2008/12/11(木) 23:04:10 ID:???]
>>202
それ、結果セット時点でseekしといた方がいいんじゃないの?
全結果セットから、毎回行指定じゃ重いでしょ。

とはいえ、やりたいことができない理由は他にあるだろうね。
クエリが間違ってるとかない?

204 名前:nobodyさん mailto:sage [2008/12/11(木) 23:12:27 ID:???]
>>203
レスどうもです。
まだ勉強中なのでseekっていうのが・・・・
結果セットから配列なりに格納して結果セットを開放しておくということでしょうか?

クエリのコードは
sql = "select * from table ORDER BY id DESC ";
$res =& $db->query($sql);
if (PEAR::isError($res)) {
die($res->getMessage());
}
で、他のwhileで全行取り出しした場合には上手くうごいてくれているのでクエリは大丈夫かと思うのですが・・・

205 名前:nobodyさん mailto:sage [2008/12/11(木) 23:46:54 ID:???]
あぁ、ごめん、seekって勢いでミスったw

ところで、クエリにLIMITを含めておくわけにいかないの?

あと、fetchRowの行指定は1回だけ発動して、あとはループでいいと
思うんだけど。

あと、単にフィールド名が違うとかじゃないよね?
var_dumpとかしてます?

206 名前:nobodyさん mailto:sage [2008/12/12(金) 01:30:02 ID:???]
普通limitだわな

207 名前:nobodyさん [2008/12/12(金) 11:46:01 ID:MaDVXqed]
if (!is_dir($dir)) {
$rc = mkdir($dir, 0755);
でディレクトリーを作ったら所有者がwwwになります
これをuserにして作ることはできないのでしょうか?
よろしくお願いします

208 名前:nobodyさん mailto:sage [2008/12/12(金) 12:32:00 ID:???]
そんなことができたらセキュリティホールになるでしょう。

しかし、対応としては
Webサーバーの実行ユーザーを変えるか
root権限wで実行してchownもしくは、mkdirのオプションを買うか
CGIモード+suexecで起動するか、
setuidした別のラッパーをかますか、

ま、そんなとこだろう。

209 名前:nobodyさん mailto:sage [2008/12/12(金) 12:51:31 ID:???]
パーミッション777にしとけば困ることないお^^

210 名前:nobodyさん mailto:sage [2008/12/13(土) 14:37:33 ID:???]
そんなことをしたらセキュリティホールになるでしょう。


211 名前:nobodyさん mailto:sage [2008/12/13(土) 15:33:14 ID:???]
>>210
使い方次第でしょ

212 名前:nobodyさん [2008/12/13(土) 22:52:57 ID:6AnKxTPA]
move_uploaded_fileでアップロードされたファイル保存するときに別ドライブを指定するパスの書き方がわからんorz



213 名前:nobodyさん mailto:sage [2008/12/13(土) 23:02:04 ID:???]
そうか

214 名前:nobodyさん mailto:sage [2008/12/14(日) 00:20:22 ID:???]
現在、Windows(XP)で自宅サーバを構築し簡単なphpを使ったサイト(システム)を運営しています。
ところが諸事情の為にレンタルサーバを借りて、自宅サーバで運営していいる物とは異なる
別のphpサイトを構築しようと思っているのですが、現在は自宅サーバで運営しているサイトは、

C:\Program Files\Apache Software Foundation\Apache2.2\htdocs

の直下に配置されたphpのみが起動する作りになっておりますが、
ASP.netの様にプロジェクトごとにディレクトリを分ける事は、出来ないでしょうか?

例)
 @C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\自宅サーバ\index.html
 AC:\Program Files\Apache Software Foundation\Apache2.2\htdocs\レンタルサーバ\index.html

要するに開発しているサイトによってディレクトリを分けたいです。






215 名前:nobodyさん mailto:sage [2008/12/14(日) 00:21:45 ID:???]
rewrite使えば?

216 名前:214 mailto:sage [2008/12/14(日) 00:38:16 ID:???]
ぐぐってみたところ

動的ページを静的ページにする (mod_rewrite)


というページがトップに表示されたのですが、いまいち私のやりたい事は実現出来なさそうです。
私の認識が誤っているだけかもしれませんが、その「rewrite」というのは
一体何なのでしょうか?

もし参考になうサイトをご存知でしたらお教え願います。

217 名前:214 mailto:sage [2008/12/14(日) 00:52:09 ID:???]
自己解決しました。
mod_rwrite
という方法を使わなくてもディレクトリをもう一つ用意するだけで事足りました。

218 名前:212 mailto:sage [2008/12/14(日) 01:50:36 ID:???]
>>213
もし知ってたら教えてくだされorz

219 名前:nobodyさん mailto:sage [2008/12/14(日) 01:51:30 ID:???]
いいよorz

220 名前:212 mailto:sage [2008/12/14(日) 03:24:13 ID:???]
>>219
かたじけないorz

221 名前:212 [2008/12/14(日) 12:58:16 ID:vrT8sAoj]
(´・ω・`)

222 名前:nobodyさん mailto:sage [2008/12/14(日) 13:21:34 ID:???]
教えてあげようか?



223 名前:212 mailto:sage [2008/12/14(日) 13:23:01 ID:???]
>>222
(*´д`;)はいっ

224 名前:nobodyさん mailto:sage [2008/12/14(日) 15:06:54 ID:???]
D:/
とかじゃだめなん?Windowsでやった事ないから勘だけど

225 名前:nobodyさん mailto:sage [2008/12/14(日) 15:11:30 ID:???]
で、でぃーどらいう゛っ?

226 名前:nobodyさん mailto:sage [2008/12/14(日) 16:29:22 ID:???]
>>224
ちょと試してみます

227 名前:nobodyさん mailto:sage [2008/12/14(日) 16:32:11 ID:???]
>>224
これでいけました!!
盲点だったorz

228 名前:nobodyさん mailto:sage [2008/12/14(日) 17:42:47 ID:???]
ほうほう,それで?

229 名前:nobodyさん mailto:sage [2008/12/15(月) 06:26:47 ID:???]
file_put_contents -- 文字列をファイルに書き込む

連続して fopen() , fwrite() , fclose() をコールすることと等価です。

この関数ってどうなの?

230 名前:nobodyさん mailto:sage [2008/12/15(月) 06:49:26 ID:???]
は?

231 名前:nobodyさん mailto:sage [2008/12/15(月) 06:52:34 ID:???]
短く書けるから便利といえば便利だがPHP4では使えない
PHP5なら好きなほう使えばいい

232 名前:nobodyさん mailto:sage [2008/12/15(月) 12:09:28 ID:???]
PHP5つかってます。
youtubeみたいな動画共有サイトを作りたいのですが、動画のアップロードは出来るのですが、
アップロードされた動画をサムネイルで表示する方法がわかりません。どなたか詳しい方いらっしゃったら
教えてください。



233 名前:nobodyさん mailto:sage [2008/12/15(月) 12:27:15 ID:???]
>>232
それよりも作るのはかまわないけど公開するならインフラ周りのこと考えろよ?
まわりに迷惑かけるのだけはやめてくれな

234 名前:nobodyさん mailto:sage [2008/12/15(月) 22:35:55 ID:???]
>>233
インフラを考えずに作ったって糞遅くなるのは目に見えてるよw
しかも維持費にどれだけ金が掛かると思ってるんだろうね。

一流のエンジニアが集まって作られているYouTubeですらあれだけ
重いのに。

235 名前:nobodyさん mailto:sage [2008/12/15(月) 22:42:38 ID:???]
>>234
> インフラを考えずに作ったって

それを言うなら、考えて、では。

236 名前:nobodyさん mailto:sage [2008/12/15(月) 23:16:47 ID:???]
インフラはAmazon EC2、S3とかがオススメだな
回線速度の面で微妙かもしれんが

237 名前:SF4マニア mailto:sage [2008/12/16(火) 01:03:15 ID:???]
本職ではクラサバをメインに開発しているPGですが、
趣味で2年程前からphpでWEBシステムを作っています。

私は、実務でphpを使ったWEBシステムの構築は行った事がないのですが、
実務ではどういった開発環境でphpを使ったWEBシステムの構築を行っているのでしょうか?

因みに、自分はsakuraエディタだけです。
正直、画面のレイアウト等プログラミング以外の部分で時間を取られており、
ASP.net(VS)での開発と比べて無駄に工数が掛かってしまう感が否めません。

皆さんは、どういった環境でphpWEBシステム(サイト)を構築しているのでしょうか?
開発工数を大幅に削減出来るお勧めソフトがあればぜひお教え願います。



238 名前:nobodyさん mailto:sage [2008/12/16(火) 01:10:54 ID:???]
>>237
普通はデザイナーを使うと思うが・・・

239 名前:nobodyさん mailto:sage [2008/12/16(火) 01:19:53 ID:???]
テキストエディタからレベルアップしてけ

240 名前:nobodyさん mailto:sage [2008/12/16(火) 01:22:14 ID:???]
>>238
という事は、画面の作成はデザイナに任せてシステム部分だけをphp(マ)が開発していいるのですか?


>>239
オススメのソフトはありますか?
VSのデザイナ画面は個人的に非常に使い易いです。

241 名前:nobodyさん mailto:sage [2008/12/16(火) 01:22:54 ID:???]
All-in-OneのPDTいれたらhtmlもデザイナでいじれるから楽チンや

242 名前:nobodyさん mailto:sage [2008/12/16(火) 01:23:38 ID:???]
>>240
EmEditorいいよ



243 名前:nobodyさん mailto:sage [2008/12/16(火) 01:41:30 ID:???]
>>241 >>242
参考にさせて頂きます。

244 名前:nobodyさん mailto:sage [2008/12/16(火) 01:51:06 ID:???]
デザイナーというのは、人のこと?
それとも、デザイナーという、ソフトのこと?

245 名前:nobodyさん mailto:sage [2008/12/16(火) 02:13:10 ID:???]
人名

246 名前:nobodyさん mailto:sage [2008/12/16(火) 02:20:37 ID:???]
>>244の意訳

ボタン配置とかして直感的にデザインしたものをコード変換する機能のことか、
職業としてのデザイナーのことかどっちなの?

247 名前:nobodyさん mailto:sage [2008/12/16(火) 03:06:22 ID:???]
>>244
238は職、241は機能


248 名前:nobodyさん [2008/12/16(火) 20:12:46 ID:XMobQjfA]
>>110で質問した者ですが
>>112さんの教えてくださった

$url = array(1 => "リンク1", 2 => "リンク2", ....
uksort($url, "cmp");
print_r($url);

のとこを、

$url = array(apple => "リンク1", banana => "リンク2", ....
uksort($url, "cmp");
print_r($url);

みたいにidを数字ではなく文字にしたい場合どう書けば同じように動作するか教えてほしいです
宜しくお願いします。

249 名前:nobodyさん mailto:sage [2008/12/16(火) 20:19:24 ID:???]
応用能力皆無なのな

250 名前:nobodyさん mailto:sage [2008/12/16(火) 20:46:30 ID:???]
>>248
function中の$a - $bのところ、strcmp($a, $b)に変える

251 名前:nobodyさん mailto:sage [2008/12/16(火) 21:20:01 ID:???]
>>250
ありがとうございます
説明不足ですみません。やってみましたがこれはアルファベット順で並ぶのでしょうか?
キー順でソートしたいのです。
一応自分なりに調べてはいるのですが
foreach ($url as $key => $value)
なんて文をどこかへ追加って感じで方向は合っているでしょうか?

252 名前:nobodyさん mailto:sage [2008/12/16(火) 21:22:18 ID:???]
応用能力皆無なのな



253 名前:nobodyさん mailto:sage [2008/12/16(火) 21:25:19 ID:???]
>>251
ちなみに並ぶけどさ、やってみたんなら並ぶかどうか確認できるでしょ?
配列の並べ替えが終わったら、foreachでもeachでも好きなループ組めば?

254 名前:nobadyさん mailto:sage [2008/12/17(水) 17:32:12 ID:???]
質問があります。PHP5でflvファイルの最初のコマを取得して、画像としてサムネイル化
する事って出来るのでしょうか?レベルが高いかも知れませんが、詳しい方がいらっしゃったら
教えてください。

255 名前:nobodyさん mailto:sage [2008/12/17(水) 17:42:39 ID:???]
なんかこないだからその質問を何回も見るんだけど。

256 名前:nobodyさん mailto:sage [2008/12/17(水) 17:52:54 ID:???]
とりあえず環境書いてないから適当に答えるけど
ffmpegインストールしてphpから呼び出して使えば出来ると思う。

257 名前:nobodyさん mailto:sage [2008/12/17(水) 18:01:15 ID:???]
ググれば簡単に出てくるのに

258 名前:nobodyさん mailto:sage [2008/12/18(木) 05:46:38 ID:???]
教えてください。

PDOでPostgreSQLにアクセスしています。
ところが、全部PDOメソッドだけで実現できないことがあり、
PDOとpg_*関数を混在使用するハメになりました。

そこで質問ですが、
PDOオブジェクトで、pg_*を使うためのデータベースハンドル
を得ることはできるのでしょうか?
できないのなら、PDOでのDB接続とは別に、pg_connectで
DB接続する必要があるということでしょうか?

259 名前:nobodyさん mailto:sage [2008/12/18(木) 07:10:30 ID:???]
実現できないことって何?

260 名前:nobodyさん mailto:sage [2008/12/18(木) 09:11:27 ID:???]
>>259
PDOで、PostgreSQLのbytea型に格納してあるバイナリデータを
読み出そうとすると、不具合があるようなのです。
(公式情報ではないので自分の勘違いかもしれませんけど)

そこでほとんどの処理はPDOで行い、bytea型のR/Wのみ
pg_*関数を使いたいと思っています。
(pg_escape_bytea()とか)


261 名前:nobodyさん mailto:sage [2008/12/18(木) 09:45:27 ID:???]
「PDO」つったら、普通はPECL::PDOの意味?

262 名前:nobodyさん mailto:sage [2008/12/18(木) 13:15:36 ID:???]
標準クラスのだろ



263 名前:nobodyさん mailto:sage [2008/12/18(木) 17:34:01 ID:???]
URLの最後が文字列にするにはどうしたらいいですか?
具体的には
test/user/favorite
のようなものを作るにはどうしたらよいですか?

264 名前:nobodyさん mailto:sage [2008/12/18(木) 18:26:00 ID:???]
>>263
mod_rewrite

265 名前:nobodyさん mailto:sage [2008/12/18(木) 19:28:42 ID:???]
>>264
ありがとうございました。

266 名前:nobodyさん mailto:sage [2008/12/20(土) 19:15:51 ID:???]
テキストボックスでセッションに入れた後、確認画面で表示させてみると
「ソ」と「\」を入力した場合には「\」がどんどん追加増加されるのですが
原因がわかりません。

以上の問題の解決の仕方や、検索でSQL文やPHP言語やHTMLを入力された場合の
表示にバグを発生させない方法をご存知の方、どうか教えて頂けないでしょうか

267 名前:nobodyさん mailto:sage [2008/12/20(土) 19:18:52 ID:???]
>>266
magic_quote_gpc

268 名前:nobodyさん [2008/12/20(土) 22:06:37 ID:maii3k3G]
pagerで
1 2 3 4 5
ではなく
0 1 2 3 4
とゼロから始めるにはどうすれば良いでしょうか?

269 名前:nobodyさん mailto:sage [2008/12/20(土) 22:21:47 ID:???]
>>267
ありがとうございました

270 名前:nobodyさん mailto:sage [2008/12/20(土) 23:15:27 ID:???]
>>268
何のpagerだよ
質問の仕方にも程があるぞw

271 名前:nobodyさん mailto:sage [2008/12/20(土) 23:16:59 ID:???]
PEARじゃね
俺なら迷ってる時間があったら丸ごと全部再実装する

272 名前:nobodyさん mailto:sage [2008/12/20(土) 23:18:25 ID:???]
全部再実装とか、よっぽど暇なのか。



273 名前:nobodyさん mailto:sage [2008/12/20(土) 23:18:35 ID:???]
結果を-1するかソースで-1すればいいじゃん

274 名前:269 mailto:sage [2008/12/21(日) 01:06:19 ID:???]
すみませんでした PEARのPagerです。
>>273さんのやり方で例えば
ttp://www.phpbook.jp/pear/pear_pager/index4.html
このページではどこで-1すれば良いでしょうか?

275 名前:nobodyさん mailto:sage [2008/12/21(日) 01:23:54 ID:???]
$naviの中かgetLinksメソッドの中

276 名前:269 mailto:sage [2008/12/21(日) 01:37:38 ID:???]
>>275
ありがとうございます。やってみます!

277 名前:nobodyさん mailto:sage [2008/12/21(日) 12:44:01 ID:???]
PEAR::Pagerの出力はHTMLタグだからいじりづらいんだよ。
入力はこっちでいじればいいが、出力はgetLinks()の結果を正規表現とかで置換するしかない。
どっちかっつーといじりたいのは変数の方じゃなくて画面表示の方だろうしな。
インターフェイスはおおむね決まってる(パクる)から、残りの作業は実装だけだしな。

278 名前:nobodyさん mailto:sage [2008/12/21(日) 12:51:30 ID:???]
別にソースいじればいいじゃん

279 名前:nobodyさん mailto:sage [2008/12/21(日) 18:50:29 ID:???]
HTMLからURLで変数をもらいその変数でrequireするtxtファイルを変え
ページの管理を楽にしようと思っているのですが
馴れていない人がやると、まずいことはありますでしょうか

280 名前:nobodyさん mailto:sage [2008/12/21(日) 18:58:59 ID:???]
ぐぐれ

281 名前:nobodyさん mailto:sage [2008/12/21(日) 19:06:00 ID:???]
>279
txtをrequireする、の意味がまったく分からん。

ファイル名に「../../../」とか指定されると、ヤバいファイルを開かれる危険がある(ディレクトリ・トラバーサル脆弱性)。
総じて、予期しないファイルを開かれないような対策が必要になる。

数種類しかないなら、決まった文字列以外は許可しないようにする。
たくさんあってそうするのが面倒なら、「/」を入力されたらエラーにする。
hoge.txtを開きたいなら「hoge」の部分だけ入力させる、などの対策が必要。
ファイル名は自分で決められるんだし、[0-9a-Z-_]あたり以外の文字列が来たら問答無用でエラーになるようにするのが無難だな。

282 名前:nobodyさん mailto:sage [2008/12/21(日) 19:34:34 ID:???]
>>281
ありがとうございます

HTMLで記述したファイルの拡張子をPHPに変え、
任意の部分にrequireでtxtファイルを読み込むと
メニューなどの管理が楽になると某サイトで読みました
それをメニューではなく内容に変えれば、
外観や増えていくページの管理が楽になるのかなってことで
初心者ながら、勉強もかねて質問をさせていただきました


自分の決めた文字列だけを対象にするということで

switch ((string)$page):
case 'log1':
case 'log2':



break;
default:
echo "ファイルが見つかりません";
endswitch;

こういった記述でよろしいのでしょうか



283 名前:nobodyさん mailto:sage [2008/12/21(日) 19:45:19 ID:???]
勉強なら自分で調べろやボケ

284 名前:nobodyさん mailto:sage [2008/12/21(日) 20:02:13 ID:???]
>>283
勉強は兼ねてるだけだろ?よく読めよ

285 名前:nobodyさん mailto:sage [2008/12/21(日) 20:04:15 ID:???]
>>283
頼むからコテつけてくれ

286 名前:nobodyさん mailto:sage [2008/12/21(日) 20:04:16 ID:???]
caseを使えば、たぶん安全。
コードがないとなんとも言えんわな。
やってみて、動くコードができてから来たほうがいい。
何もやらずにいきなり聞く姿勢は歓迎されんし。

287 名前:nobodyさん mailto:sage [2008/12/21(日) 20:09:44 ID:???]
これでいいんでしょうか
どう書けばいいんでしょうか
じゃ勉強の糞の足しにもなりゃしねぇよカス

288 名前:nobodyさん mailto:sage [2008/12/21(日) 20:12:29 ID:???]
>>287
おまえなんでこのスレにいんの?
いやむしろ何のために生きてんの?w

289 名前:nobodyさん mailto:sage [2008/12/21(日) 20:27:01 ID:???]
>>287
スレの趣旨すら分からないなら口出すな

290 名前:nobodyさん mailto:sage [2008/12/21(日) 20:38:48 ID:???]
>>283
努力します

>>286
中途半端でした、すみません

一応、問題なく動いたので評価をお願いしたいです

log001.txt
<b>表示されました</b>

index.html
<A Href="pagelog.php?log=log001">log1へ</A>

pagelog.php(head略)
<body>
<?php
$_GET['log'];

switch ((string)$log):
case 'log001':
case 'log002':
require($log.".txt");
break;

default:
echo "ファイルが見つかりません";
endswitch;
?>
</body>

291 名前:286 mailto:sage [2008/12/21(日) 21:01:57 ID:???]
>290
それが動く事に少なからず衝撃を受けた。

requireやincludeは、基本的にPHPプログラムを読み込むためのもの。
それだとたぶん、txtの中にPHPプログラムとして解釈可能な文字列があると、実行されてしまう。
単純にテキストファイルの中身を読み込む場合、file_get_contents()を使ったほうがいい。
動くなら問題ないっちゃあないんだが…

292 名前:nobodyさん mailto:sage [2008/12/21(日) 21:07:15 ID:???]
って、ああそうか、よく考えたら動いて当たり前か。

「評価されると危ないので避けたほうがいい」という意見は変わんないけどな。
txtは自分が編集するから、安全といえば安全なのだが、無駄な危険の芽は摘んだほうがいい。
いつの日かうっかりtxtにexit();とか書き込んだらエラーになるし。



293 名前:nobodyさん mailto:sage [2008/12/21(日) 21:39:17 ID:???]
>>292
うっかりが起きないとも限らないので
file_get_contents()について調べてみます。
勉強になりました。
ありがとうございました。

294 名前:nobodyさん mailto:sage [2008/12/21(日) 21:45:08 ID:???]
>>290
まぁ、動いているので問題ないけど、
コーディングのマナーとしてはよろしくないかもね
・require等の中に変数は入れない方がいい
・比較するときにキャストして使う時にキャストしないというのは問題になることがある。

前者は設定によってはリモートでのコード実行につながるから
後者は比較が通っても、問題のある変数で実行する可能性があるから

295 名前:nobodyさん mailto:sage [2008/12/21(日) 21:53:40 ID:???]
>>292
なんねーよ
echoと同じだ

296 名前:nobodyさん mailto:sage [2008/12/21(日) 22:28:16 ID:???]
>>294
参考になります

まだまだ馴れてない部分が多いので基礎から覚えるために
やはり、書籍を一つ買おうと思います

297 名前:nobodyさん mailto:sage [2008/12/21(日) 22:58:47 ID:???]
うむもう二度と来ないでくれ

298 名前:nobodyさん mailto:sage [2008/12/21(日) 23:00:10 ID:???]
>>297
来なければ、いいだけじゃね。

299 名前:nobodyさん mailto:sage [2008/12/22(月) 18:00:09 ID:???]
プログラミング初心者だけどPHP難しすぎて投げそう(';ω;`)
2週間位で基礎を学ぶには何したら良いんですか(';ω;`)ウォウォ…

300 名前:nobodyさん mailto:sage [2008/12/22(月) 18:02:13 ID:???]
教えてくれそうな男に体でも売ればいいんじゃね

301 名前:nobodyさん mailto:sage [2008/12/22(月) 18:06:33 ID:???]
もうウンコして寝込むしかねぇ・・・

302 名前:nobodyさん mailto:sage [2008/12/22(月) 18:21:33 ID:???]
マニュアル嫁



303 名前:nobodyさん mailto:sage [2008/12/22(月) 18:26:34 ID:???]
どっかから小さめなスクリプト落してきて、
「なんで?なんで?なんでこうなるの?」と思いながら丁寧に読んだり、
チョっとした機能を追加してみたりして、
いろいろもがくといいんじゃないだろうか。

304 名前:nobodyさん mailto:sage [2008/12/22(月) 20:08:10 ID:???]
初心者が読めるようなちょっとしたスクリプトは大抵がPHP4時代の糞CGIで変な癖がついたりする罠。
グローバル空間にexplodeしてたりするスクリプトが多すぎる。

305 名前:nobodyさん mailto:sage [2008/12/22(月) 20:09:08 ID:???]
explode→extract

306 名前:nobodyさん mailto:sage [2008/12/22(月) 20:09:52 ID:???]
>>304
それがどうしたの。

307 名前:nobodyさん mailto:sage [2008/12/22(月) 20:18:07 ID:???]
んなの読まなきゃいいだろ

308 名前:nobodyさん mailto:sage [2008/12/22(月) 22:15:31 ID:???]
>>299
初めてのプログラミングがPHPで、配列/連想配列でこけたけど、しばらくしてからやってみたらすぐ理解できた。
あんまり根詰めないで気楽にまったりやるといいよ。
読むだけじゃなくて手も動かすといい。
サンプル丸写しして、いろいろ自分で弄ってみるんだ。
エラー出ればメッセージ出て何が原因かすぐわかるしね。

309 名前:299 [2008/12/22(月) 22:16:58 ID:W3OrxKsT]
>>303
どっかから?
どっかから?そのどっかから?はどっかから?
つまり僕が言いたいのはどっかから?なんです。お願いします。



310 名前:299 [2008/12/22(月) 22:39:19 ID:W3OrxKsT]
>>308
( ´_ゝ`)フーン
「どうもありがとう」って言っといてだってお兄ちゃんが
妹より

311 名前:nobodyさん mailto:sage [2008/12/22(月) 22:51:01 ID:???]
で、どう書いたら>>304さんに変な癖がついてると言われない書き方なのよん
正しい書き方教えてくりっ

312 名前:nobodyさん mailto:sage [2008/12/22(月) 22:59:57 ID:???]
PHPの公式マニュアルで「非推奨です」「危険です」と書かれている書き方を全て避ける。



313 名前:nobodyさん mailto:sage [2008/12/22(月) 23:00:21 ID:???]
変な癖が付いてると言われなければいいのか

314 名前:nobodyさん mailto:sage [2008/12/22(月) 23:04:23 ID:???]
>>304 みたいな奴には何を見せても重箱の隅つつかれるよね。
スルーでいいとおもう。

315 名前:nobodyさん [2008/12/22(月) 23:15:14 ID:zcPu3Ss9]
PHP4用の開発ノウハウってのがあって、これは今となってはバッドノウハウ。
PHP5のみサポートの有名なFWで開発してみて、動いたらソースを読むのが吉

316 名前:nobodyさん mailto:sage [2008/12/23(火) 00:46:09 ID:???]
ノウハウ以前のレベルだろうに

317 名前:nobodyさん mailto:sage [2008/12/23(火) 02:41:59 ID:???]
いまだに共用鯖じゃPHP4主流だもんなあ。

318 名前:nobodyさん [2008/12/23(火) 03:56:34 ID:207JnJAg]
JavaScriptの"for〜in"構文をPHPで書くとどうなるのでしょうか
PHPはあまり分らないもので

319 名前:nobodyさん mailto:sage [2008/12/23(火) 04:00:08 ID:???]
>>299
漏れは先にperlを2ヶ月やってから
PHPに移動した。

320 名前:nobodyさん mailto:sage [2008/12/23(火) 04:13:36 ID:???]
>>318
マニュアル

321 名前:nobodyさん mailto:sage [2008/12/23(火) 13:04:10 ID:???]
>>318
$array=array('name'=>'aki','age'=>23,'karesi'=>'futsu');
foreach($array in $key=>$item) {
echo "$key $item\n";
}

322 名前:nobodyさん mailto:sage [2008/12/23(火) 13:54:23 ID:???]
単にforeach文て言えば済むじゃねぇかw



323 名前:299 mailto:sage [2008/12/23(火) 17:39:32 ID:???]
>>319
何でですの?教えてごらんなさい

324 名前:nobodyさん mailto:sage [2008/12/23(火) 17:43:37 ID:???]
ご先祖様だから

325 名前:nobodyさん mailto:sage [2008/12/23(火) 18:14:25 ID:???]
ご先祖様はCだろw

326 名前:nobodyさん mailto:sage [2008/12/23(火) 18:37:45 ID:???]
そこまで戻る必要は無い

ってか、Cは却って難しい

327 名前:nobodyさん mailto:sage [2008/12/23(火) 20:41:02 ID:???]
SQLite3ってPDOってやつを使ってアクセスするんですよね
マニュアルにあるSQLite3ってやつとは何が違うんでしょうか


328 名前:nobodyさん mailto:sage [2008/12/23(火) 20:45:19 ID:???]
別にPDOじゃなくてもアクセスできるけど

329 名前:nobodyさん mailto:sage [2008/12/23(火) 21:06:01 ID:???]
なるほど
ググってもPDOのことしか見当たらずそこからマニュアルに流れ着いて
SQLite3文?って物があるのを知ったのでどういった違いがあるのかなと思ったのですが
どっちを使っても構わないってことでしょうか

330 名前:nobodyさん mailto:sage [2008/12/23(火) 21:06:50 ID:???]
うん

331 名前:nobodyさん mailto:sage [2008/12/23(火) 21:19:15 ID:???]
わかりました
どちらがいいのかはわかりませんが、せっかくなのでSQLite3も使ってみます

332 名前:nobodyさん mailto:sage [2008/12/23(火) 21:44:59 ID:???]
DBっていうのは、MySQLとかSQLiteとかPostgreSQLとかOracleとか、似たようなのがたくさんある。
元々はそのそれぞれに対して、よく似てるけどちょっとずつ形の違う関数がいっぱいあった。
で、それが不便だからって事で、「同じ書き方でどれにでもアクセスできるような仕組みを作ろう!」となった。
それがPDO。

PDOを使って書かれたプログラムは、DBがSQLiteからMySQLに変わっても、PDOクラスをnewしてるところだけ書き換えれば普通に動く。
また、PDOひとう覚えれば、どのDBでも使えるようになる、というメリットもある。



333 名前:nobodyさん mailto:sage [2008/12/23(火) 21:50:29 ID:???]
普通DSNを書き換えるんだろ

334 名前:nobodyさん mailto:sage [2008/12/23(火) 21:50:51 ID:???]
じゃあ自由度は下がるってことでFA?

335 名前:nobodyさん mailto:sage [2008/12/23(火) 21:57:29 ID:???]
ひとう → ひとつ

これだけだとバランス取れないので、一応デメリットも。
全DBでなるべく共通の操作を提供する、という仕組みのため、一部のDBに固有の機能が使えなかったりする事がある。
よくある話だと、MySQLの持続的接続が使えなかったりな。あと、パフォーマンスでもPDOは若干劣る。

個人で使う最大のメリットは、プリペアドステートメントのサポートだと個人的に思う。
SQLインジェクションの危険性をほぼゼロにできる上に、プログラムの可読性も上がる。

336 名前:nobodyさん mailto:sage [2008/12/23(火) 21:58:54 ID:???]
> よくある話だと、MySQLの持続的接続が使えなかったりな。

それってパフォーマンスに影響するんだっけ?ベンチとった?

337 名前:nobodyさん mailto:sage [2008/12/23(火) 22:14:41 ID:???]
PDOは文字コード変更用の関数がないからなー……。
SET NAMES 危ないって聞くし。

338 名前:335 mailto:sage [2008/12/23(火) 22:49:27 ID:???]
>334
んな事いったら、sqlite関数やmysql関数を使ってしまえば、将来のDB変更の自由度が失われるわけだが。
俺は自由度や性能云々以前に、DB依存のコードがそこら中にあるのを気持ち悪いと感じる。そんなものはどっかで隠蔽されるべきだ。
(実際問題、DBを置き換えるなんて事態は普通ないだろうけどな)

339 名前:nobodyさん mailto:sage [2008/12/23(火) 22:58:50 ID:???]
>>338
あたまでっかちおっさんどっかいけよ

340 名前:nobodyさん mailto:sage [2008/12/25(木) 05:23:16 ID:???]
>>339
335, 338の発言を理解できないなら発言するな。
339的な発言は、このスレの害虫。

341 名前:nobodyさん mailto:sage [2008/12/25(木) 05:57:49 ID:???]
>>PDOを使って書かれたプログラムは、DBがSQLiteからMySQLに変わっても、
>>PDOクラスをnewしてるところだけ書き換えれば普通に動く

SQL文自体がDB固有になるだろうから、現実的にそれはあり得ないんじゃないか?
(標準SQLだけで書かないでしょふつう)

俺的なPDOのメリットは、DB関連関数をどのDBにも共通で使えるため開発の学習量を
減らせること。これはソースコードの可読性の向上、メンテ性の向上にもなる。


342 名前:nobodyさん mailto:sage [2008/12/25(木) 18:01:58 ID:???]
標準SQLだけで書かないのが普通という前提なら、共通で使える部分の学習量なんてほとんど0じゃないか?





343 名前:nobodyさん mailto:sage [2008/12/25(木) 20:20:04 ID:???]
DBを変更する予定があるとき、
単純にPDOだけで実現できるわけじゃぁないが、
PDOで標準SQLだけを使うか、
PDOよりも抽象化したFWを使うわけで、
素の関数を使うよりは汎用性が高い。

どっちの言うことも大きく間違っちゃいないわな

344 名前:nobodyさん [2008/12/29(月) 23:28:23 ID:hqhRjo69]
オブジェクトのメソッド名とプロパティ名の一覧ってどうやって取得したらいいんでしょうか?

345 名前:nobodyさん mailto:sage [2008/12/29(月) 23:37:49 ID:???]
リフレクション

346 名前:344 mailto:sage [2008/12/30(火) 12:21:58 ID:???]
>>345
有り難うございます
おかげで3週間越しの問題が解決しました
本当に有り難うございます

347 名前:nobodyさん mailto:sage [2008/12/31(水) 11:35:34 ID:???]
phpの質問かJavaScriptの質問か迷ったのですが、ボタン(button)がクリックされた時に
確認用のダイアログを出すにはどうすれば良いでしょうか?


実行しますか?
【OK】 【キャンセル】

※ダイアログを表示し【OK】が押された場合のみ
submit処理を行ういたいです。

348 名前:nobodyさん mailto:sage [2008/12/31(水) 11:47:59 ID:???]
>>347
超JavaScript
ググれば死ぬ程出てくる
一番最初に引っかかったページ promptbox.jp/blog/memo/index.php?itemid=785

お年玉くれw

349 名前:nobodyさん mailto:sage [2008/12/31(水) 12:38:49 ID:???]
>>348
ありがとうございます。
でもお金ないです。。。

350 名前:nobodyさん mailto:sage [2008/12/31(水) 12:39:59 ID:???]
つI

351 名前:nobodyさん mailto:sage [2008/12/31(水) 13:25:47 ID:???]
つD 御縁がありますように。

352 名前:nobodyさん mailto:sage [2008/12/31(水) 13:30:12 ID:???]
っH



353 名前:nobodyさん mailto:sage [2008/12/31(水) 16:42:47 ID:???]
htmlかphpかわからないのでこちらで質問です。
formのプルダウンメニューの値を送信ボタンで渡すのはわかるのですが
プルダウンで選択しておいてリンクをクリックしたときにその値を一緒に
送るような使い方はできるのでしょうか。
ようはメニューでレイアウトの種類を選択して、リンク先をそのレイアウトで
表示させるといったことをしたいのですが。


354 名前:nobodyさん mailto:sage [2008/12/31(水) 17:24:24 ID:???]
php関係無し

355 名前:nobodyさん mailto:sage [2008/12/31(水) 18:25:42 ID:???]
そうですか、phpで操作できたらよかったんですが。
その後ググってるとJavaScriptでメニューの値が取得できるようですので
これとonClickだかでどうにかできるのかなってことでJSはわからないんですが
少し勉強してみようとおもいます
スレ違い失礼しました。

356 名前:nobodyさん mailto:sage [2008/12/31(水) 18:29:31 ID:???]
JavaScriptのほうが最適ではあるだろうけど
工数増えるけどPHPでできないこともない
まぁガンガレ

357 名前:nobodyさん mailto:sage [2008/12/31(水) 18:57:38 ID:???]
素直にやるならJavaScriptだろうな。
プルダウンを変更した時点でリンク先を書き換えるか、クリック時にフォームのsubmitイベントを呼び出すか。

358 名前:nobodyさん mailto:sage [2008/12/31(水) 18:59:09 ID:???]
>>353
リンクにonclickといれてsubmitさせてやればいい

359 名前:nobodyさん mailto:sage [2008/12/31(水) 19:01:23 ID:???]
俺ならselectが変更された時点でJavaScript経由でcookieに表示設定を放り込む。
一度選択したら2回目以降は覚えていて欲しいだろうからな。

360 名前:nobodyさん mailto:sage [2008/12/31(水) 19:49:56 ID:???]
URLに数字等を入れる事により1つのphpページ画面をそのパラメータによりページの内容を
変えたいと思います。

どうすれば同一phpページをパラメータURLを指定する事により表示内容を変更する事が出来ますか?

www.test.php=1234
www.test.php=1235




361 名前:nobodyさん mailto:sage [2008/12/31(水) 19:52:15 ID:???]
httpのクエリストリングから調べろ

362 名前:nobodyさん mailto:sage [2008/12/31(水) 20:01:42 ID:???]
>>360
www.example.com/?page=1234
こういう形なら$_GET['page']で1234が取得できるから
これを使って切り替えれば良い
ただしpage=1234の1234は誰でも値を入れる事ができるから
チェック等は必ずするように



363 名前:360 mailto:sage [2008/12/31(水) 20:14:49 ID:???]
>>361
ヒントをありがとうございます。

>>362
詳しくご解説頂きありがとうございました。
早速「ガキ使い」を見ながらプログラミングしてみようと思います。

364 名前:nobodyさん mailto:sage [2009/01/03(土) 12:58:05 ID:???]
phpでシステム開発をする場合には通常次の階層の直下に*.phpファイルを置いて
動作確認を行いますよね?
  C:\Program Files\Apache Software Foundation\Apache2.2\htdocs

しかし、1つのPCで複数サイトの開発を行う場合には、次の用にフォルダを切った上で
開発を行っているのですが、この方法は正しいですか?

  C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\site1
  C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\site2

※要するに動作確認をする場合には次の用にしなくてはならないので。(まっ、これしか方法は無いかな?)

  localhost/site1/index.html
  localhost/site2/index.html

365 名前:nobodyさん mailto:sage [2009/01/03(土) 13:04:40 ID:???]
hosts にサイト名追加して、VirtualHost つかうとかもあるな。

366 名前:nobodyさん mailto:sage [2009/01/03(土) 13:12:49 ID:???]
俺はZF使ってるからmod_rewrite

367 名前:nobodyさん mailto:sage [2009/01/03(土) 13:20:37 ID:???]
使ってれば偉くなった気になるんですね。わかります。

368 名前:nobodyさん mailto:sage [2009/01/03(土) 13:31:35 ID:???]
お前は何を言ってるんだ

369 名前:nobodyさん mailto:sage [2009/01/03(土) 13:31:42 ID:???]
俺も毎日ちんこ使ってるので偉くなった気になっています。

370 名前:nobodyさん mailto:sage [2009/01/03(土) 13:45:12 ID:???]
>>365
LinuxじゃないとVirtualHostは使えないのではないですか?
それともWindows環境でも出来るのですか?

>>366
取り敢えず、
  tech.bayashi.net/svr/doc/apache/mod_rewrite.html
のサイトで勉強してみようと思います。

実務でphpを使ったWEBサイトの開発とかした事が無いのですが、
実務でphpで開発を行う場合にテキストエディタだけを使っているプロジェクトは少ないですか?

あと、複数サイトの開発を1台のPCで行う場合に、>>364みたいな感じで行うのは
能率が悪いでしょうか?

371 名前:nobodyさん mailto:sage [2009/01/03(土) 13:53:14 ID:???]
>>370
べつにWindows環境だってIPベースでも名前ベースでもできるさ

372 名前:nobodyさん mailto:sage [2009/01/03(土) 13:54:52 ID:???]
Apacheの話題はスレ違い



373 名前:nobodyさん mailto:sage [2009/01/03(土) 13:57:42 ID:???]
>>370
人の話を疑うぐらいなら聞くな >>364の形で運用するわけじゃないんならダメだろ。 >>365がFA

374 名前:nobodyさん mailto:sage [2009/01/03(土) 14:00:48 ID:???]
おれは常にテキストエディタ(Vim)と過去の開発資源(ライブラリ)だけで事足りてる

375 名前:nobodyさん mailto:sage [2009/01/03(土) 14:19:04 ID:???]
んんんだこのgdgdはw

複数サイトをプロジェクト(複数人数)でやるんだから、ファイルのアップロード方式の方が重要。複数の人間がftpでアップするのなら、それを管理しやすい方法で

あと、htdocs/aaa/bbb/ とかでやった場合、mod_rewrite の RewriteBase が後でアレな時あり

プロジェクトを管理できれば良いので、エディタは何でもいい





376 名前:nobodyさん mailto:sage [2009/01/03(土) 14:38:30 ID:???]
複数の人間が更新するならCVSとか使うかなあ
サイト側もcheckoutするのだ

377 名前:nobodyさん mailto:sage [2009/01/03(土) 14:55:16 ID:???]
checkoutじゃなくて、exportな

378 名前:nobodyさん mailto:sage [2009/01/03(土) 14:59:27 ID:???]
>>371 〜 >>375 あざーす。
ぐぐって勉強してみます。

379 名前:nobodyさん mailto:sage [2009/01/03(土) 15:57:48 ID:???]
Subversionを使っているのに何故かデプロイがftp経由ファイル単位なうちのプロジェクトは滅ぼしていいと思う。

>370
同時にいじるなら、何も考えずにやってるとアクセスログが同じファイルになってしまうので、やりづらいと思う。
そのままでもできるけど、バーチャルホストの方がエラーログの切り分けが簡単。
あとは両プロジェクトで同名のクッキーを使った場合衝突が発生する点かな。セッション周りが特に危険。
あと、本番環境に持っていく際に、相対リンク/絶対リンクとか周りで絶対いくつかリンク切れが発生すると思う。
以上のような点を気にしなくて良いのならば、そのままでもいいんじゃない?

380 名前:379 mailto:sage [2009/01/03(土) 16:44:44 ID:???]
ああ、そもそもセッション変数が共有されてしまう点の方が問題か。
クッキーは発行パスを適切に指定すれば混ざらないが、本番環境への移行の際に適切な修正をする必要がある。

381 名前:nobodyさん mailto:sage [2009/01/12(月) 12:35:49 ID:???]
パール互換の正規表現についてなのですが、
preg_matchなど公式マニュアルに出ている内容については理解したのですが、
Perlとは微妙に違うリテラルやトークンの使い方について詳しく説明してある
ドキュメント等はないでしょうか?

382 名前:nobodyさん mailto:sage [2009/01/12(月) 13:43:52 ID:???]
PHPって確か鬼車使っているんだっけ
だとしたら
ttp://www.geocities.jp/kosako3/oniguruma/doc/RE.ja.txt
補記 3. Perl 5.8.0と比較して存在しない機能
+ \N{name}
+ \l,\u,\L,\U, \X, \C
+ (?{code})
+ (??{code})
+ (?(condition)yes-pat|no-pat)
* \Q...\E
但しONIG_SYNTAX_PERLとONIG_SYNTAX_JAVAでは有効



383 名前:nobodyさん mailto:sage [2009/01/12(月) 15:24:30 ID:???]
ありがとうございます!
参考にメモさせていただきました

384 名前:nobodyさん mailto:sage [2009/01/13(火) 02:11:38 ID:???]
くだらない事なんですが、一つ気になっている事があります。
PEAR::Logでログでログ管理をしようと思っているのですが、
手元の参考書やWebで調べると、解説のサンプルプログラムが

<?php
require_once 'Log.php';
$file = &Log::factory('file', 'out.log', 'TEST');
$file->log('ログ内容');
?>

みたいな場合が多いのですが、この場合Log::factoryで作成した
インスタンス(?)の$fileは明示的にcloseか何かしなくて言いのでしょうか?
例えば、普通のファイル操作ならfopenしたら最後はfcloseをするので、
Log::factoryもそれに該当する操作が必要ないのか?と気になりましたので・・・・


385 名前:nobodyさん mailto:sage [2009/01/13(火) 03:08:48 ID:???]
マニュアル嫁

386 名前:nobodyさん mailto:sage [2009/01/15(木) 22:20:46 ID:???]
テキストファイルを読み込んで一行ごとに配列に入れ
配列を検索して特定の文字が含まれていた場合そのインデックスを返す
っていうのをやりたいのですが、わかりません。よろしくお願いします。
インデックス1を返して欲しいんですが、何も返ってきません。

***テキストファイルの中身*******
群馬県
栃木県
茨城県
埼玉県
東京都
****************************

<?php
//ファイルを開く
$filename="test.txt";
//配列に代入する
$f1=file($filename);
//特定の文字が含まれる要素を探す
$word="栃木県";
$key=array_search($word,$f1);
print($key);
?>

387 名前:nobodyさん mailto:sage [2009/01/15(木) 22:27:13 ID:???]
返り値
ファイルを配列に入れて返します。 配列の各要素はファイルの各行に対応します。改行記号はついたままとなります。 失敗すると file() は FALSE を返します


388 名前:nobodyさん mailto:sage [2009/01/15(木) 22:28:50 ID:???]
$word="栃木県\n";

389 名前:nobodyさん mailto:sage [2009/01/15(木) 23:00:30 ID:???]
>>387
>>388
レスありがとうございます。

この検索の場合は完全に一致するものしか検索できないんですね。
例えば
$word="玉";
とした場合に
埼玉県のインデックスの3を返すというのは無理なんでしょうか?

390 名前:nobodyさん mailto:sage [2009/01/16(金) 00:17:00 ID:???]
>>389
データーベースに入れて
「like」検索をすればできる。

391 名前:nobodyさん mailto:sage [2009/01/16(金) 07:02:26 ID:???]
>>389
DBなんて使わなくてもstrposでできる

392 名前:nobodyさん mailto:sage [2009/01/16(金) 15:17:30 ID:???]
>>391
strposって、最初に出てきた位置を返す関数じゃない?

「あるかどうか」を調べる関数のほうがいいんだけど。



393 名前:nobodyさん mailto:sage [2009/01/16(金) 15:19:44 ID:???]
最初に出てくる=ある

394 名前:nobodyさん mailto:sage [2009/01/16(金) 16:25:58 ID:???]
strposで位置取得
そこまでに\nがいくつあるか
ウマー

395 名前:nobodyさん mailto:sage [2009/01/16(金) 23:23:04 ID:???]
俺なら何も考えず配列に格納→foreachでループ→中でstrpos

>392
strposは文字列検索としては最速の部類。
他の選択肢はpreg_match位しかないが、preg関数とstr関数じゃお話にならんほど速度が違う。

396 名前:nobodyさん mailto:sage [2009/01/16(金) 23:24:33 ID:???]
説得力を持たせるためにベンチマークを載せてはどうかね?

397 名前:nobodyさん mailto:sage [2009/01/16(金) 23:28:16 ID:???]
自分でやれ

398 名前:nobodyさん mailto:sage [2009/01/17(土) 11:25:45 ID:???]
>>396
395ではないが暇なので作ってみた

$imakara_ikude = microtime(TRUE);

$dokowo_sawatte_hosiinya = '検索対象にしたい任意の文字列';
$kokoga_eenka = '検索したい任意の文字列';
$kokoga_eenka_pattern = '/' . preg_quote($kokoga_eenka, '/') . '/';
$itte_itte_ikimakuru = 100000;

for ($i = 1; $i <= $itte_itte_ikimakuru; $i++) {
if (strpos($dokowo_sawatte_hosiinya, $kokoga_eenka) !== FALSE) {}
// if (strstr($dokowo_sawatte_hosiinya, $kokoga_eenka)) {}
// if (preg_match($kokoga_eenka_pattern, $dokowo_sawatte_hosiinya)) {}
}

$doya_yokattaka = microtime(TRUE) - $imakara_ikude;
echo $doya_yokattaka;

■結果 - Windows XP(ペン4 3.2GHz)+XAMPP(PHP5.2.2)
strpos():0.060ぐらい
strstr():0.052ぐらい
preg_match():0.28ぐらい

strstr()の方が微妙に早いが、公式マニュアルでstrstr()の説明見ると
strpos()使えカスと書いてるので俺は素直にstrpos()使う。

399 名前:nobodyさん mailto:sage [2009/01/17(土) 11:38:45 ID:???]
>>392
というわけで、
if (strpos($str, 'search') !== FALSE)
を使え。必ず「!== FALSE」にするように。理由は説明ダルいからマニュアル見れ。

>>389
$index = FALSE;
$word = '玉';

if ($ary = file('test.txt')) {
foreach ($ary as $key => $val) {
if (mb_stripos($val, $word) !== FALSE) {
$index = $key;
break;
}
}
}

var_dump($index);


strpos()はマルチバイト対応してないので、mb_系使うように。

400 名前:nobodyさん mailto:sage [2009/01/17(土) 11:43:51 ID:???]
>>399で書き忘れたが、大規模検索なら素直にDB使う。

>>384
気持ち悪いなら明示すりゃいい。というか、色んな意味で明示したほうが良いと俺は思う。
phpは、リソースのオープンは明示しなくても自動的に閉じてくれる。(ファイルであれDBであれ)

>>382
PHP5から鬼車。mb_ereg()系で。
preg_match()では使われてないのでは?

401 名前:nobodyさん mailto:sage [2009/01/17(土) 11:53:04 ID:???]
お前らJavaとPHPのスキルを比率で示してくれ。

俺の場合

Java : PHP = 5 : 5

ただ、レンタルサーバ代がJavaだと高いから力配分を
1:9程度に持って行こうかと思ってる。



402 名前:nobodyさん mailto:sage [2009/01/17(土) 12:00:27 ID:???]
>>399
最初にifしてるのはなんで?



403 名前:nobodyさん mailto:sage [2009/01/17(土) 12:05:09 ID:???]
>>402
$a = array('a', 'b', 'c');
foreach ($b as $k => $) {}
実行すれば分かる

404 名前:nobodyさん mailto:sage [2009/01/17(土) 12:06:47 ID:???]
>>398
変数ワロタwww

405 名前:400 mailto:sage [2009/01/17(土) 12:11:35 ID:???]
>>384
あ、ひょっとしたらデストラクタで閉じてるのかもね。と一応>>400に付けたし。
連レスウザいだろうからこの辺で。

406 名前:nobodyさん mailto:sage [2009/01/17(土) 12:23:28 ID:???]
>>403
だったら普通初期化するかキャストするもんだよ

407 名前:nobodyさん mailto:sage [2009/01/17(土) 12:25:11 ID:???]
>>406
開こうとしているファイルが必ず開けるとは限らないわな。

408 名前:nobodyさん mailto:sage [2009/01/17(土) 12:26:13 ID:???]
>>407
foreach((array)file('〜') as ...)

409 名前:nobodyさん mailto:sage [2009/01/17(土) 12:29:37 ID:???]
phpごときで何細かいことウダウダやってんだかww

410 名前:nobodyさん mailto:sage [2009/01/17(土) 12:30:34 ID:???]
>>406
エラー処理がしやすいとかじゃね?

411 名前:nobodyさん mailto:sage [2009/01/17(土) 12:34:40 ID:???]
あと
$ary = file('test.txt') or array();
$ary = file('test.txt') or exit;
とか。もしくは例外使う。

何か関数からの出力を得る度にifで1ブロック使うなんてナンセンスすぎ。

412 名前:nobodyさん mailto:sage [2009/01/17(土) 12:38:43 ID:???]
399は最近学び始めてphpが分かってきたから答えたくてたまらないお子ちゃまか



413 名前:399 mailto:sage [2009/01/17(土) 12:39:51 ID:???]
>>411が糞ウザくなってきたから一言。


あのな。
言っておくが、>>399みたいな処理は普通はクラスのメソッド通すなりするわ。
めんどくさいからはしょってるだけだろーが。分かるか?あ??


なんか>>411見てると、俺の会社の全然使えないカスPGにそっくりで殴り倒したくなるわw

414 名前:nobodyさん mailto:sage [2009/01/17(土) 12:40:56 ID:???]
いやお前のコードが使えないんじゃん

415 名前:nobodyさん mailto:sage [2009/01/17(土) 12:41:35 ID:???]
お前ら、質問があっても誰も答えないくせに
誰かが答えるとそれには文句つけないと気がすまないんだな。
どうしようも無いカスだなw

416 名前:nobodyさん mailto:sage [2009/01/17(土) 12:42:27 ID:???]





たかがPHPでしょ






動けばいいじゃん




ばか?

417 名前:nobodyさん mailto:sage [2009/01/17(土) 12:43:17 ID:???]
能力ないのに見栄を張るとは恥ずかしい奴だなw

418 名前:nobodyさん mailto:sage [2009/01/17(土) 12:46:56 ID:???]
さすがPHPスレ。お前ら目糞鼻糞。

419 名前:nobodyさん mailto:sage [2009/01/17(土) 12:50:26 ID:???]
          ____        ) 『 実行すれば分かる 』っと、
        /⌒  ⌒\      ) 『 開こうとしているファイルが必ず開けるとは限らないわな』っと。
      /( ●)  (●) \    )/⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y丶
     / ::::::⌒(__人__)⌒::::: \
    |      |r┬-|     |
     \       `ー'´     /
     ノ            \
   /´               ヽ                 カ
  |    l   l||l 从人 l||l      l||l 从人 l||l   カ    タ
  ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.     タ
   ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))
      ┌┬┬┐┌┬┬┬┐┌┬┬┬┐┌┬┬┬┐
   ,. - ''"| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ρ ̄`l
    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ ̄ ̄


       ____                 
    /::::::─三三─\            foreach((array)file('〜') as ...)
  /:::::::: ( ○)三(○)\          
  |::::::::::::::::::::(__人__)::::  |  _____
   \:::::::::   |r┬-|  ,/ .| |        
   ノ::::::::   `ー'´  \ |


420 名前:nobodyさん mailto:sage [2009/01/17(土) 12:52:06 ID:???]
やぱりphpしか使えない奴ってバカっ事でOK?

Java使いが一番

421 名前:nobodyさん mailto:sage [2009/01/17(土) 12:52:28 ID:???]
>>419
ウケルwwwww

422 名前:nobodyさん mailto:sage [2009/01/17(土) 12:53:47 ID:???]
アホな奴もいるもんだなw



423 名前:nobodyさん mailto:sage [2009/01/17(土) 13:03:06 ID:???]
自演煽りのクオリティが低すぎて吹いた

424 名前:nobodyさん mailto:sage [2009/01/17(土) 13:46:03 ID:???]
書き込み時間と日頃のレスの伸びからして2名が暴れていただけらしいな
PHPやってると頭だけではなく性格まで悪くなるらしいから気をつけようww

融通利かないやつやコミュニケーション能力無いやつは
PGだろうが何だろうが使えん
うちにも1名いて給料の査定も下がったはずだが、はやくその理由に気付いて辞めてくれ

425 名前:nobodyさん mailto:sage [2009/01/17(土) 17:45:47 ID:???]
一週間を表示する関数を作ってみたんですが、
どういうわけか土曜日だけ文字化けしてしまいます。
解決策はないでしょうか?

<?php
write_day();

//一週間を表示する関数
function write_day(){
while($i<7){
print($f1[$i]);
$ts=getDay($i);
print(date("m/d".getYoubi(date("w",$ts)),$ts));
$i++;
}
}

//曜日を漢字に変換
function getYoubi($wday) {
$arr = array("(日)","(月)","(火)","(水)","(木)","(金)","土");
return $arr[$wday];
}

//日にちを取得する関数
function getDay($day){
$now = time();
return mktime(date("H",$now),date("i",$now),date("s",$now),date("m",$now),date("d",$now)+$day,date("Y",$now));
}
?>

426 名前:nobodyさん mailto:sage [2009/01/17(土) 18:23:30 ID:???]
>425
コードをShift_JISで書かないでUTF-8にするだけで解決。

427 名前:nobodyさん mailto:sage [2009/01/17(土) 18:52:25 ID:???]
>>426
一発で解決しました。ありがとうございます。
本当文字コードって難しい。
スクレイピングでサイト作る人とか超尊敬。

428 名前:nobodyさん mailto:sage [2009/01/17(土) 23:41:37 ID:???]
>>425
まったく関係ないんだけど
土曜日だけ()が付かないのはなんでなんだろうと思った。


429 名前:nobodyさん mailto:sage [2009/01/18(日) 07:29:09 ID:???]
>>428
土曜日だけどうしても文字化けで表示できず
いろいろと試行錯誤した結果わからなかったので
質問しました。

()除いたりといった試行錯誤の名残をそのまま
書いてしまいました。ごめんなさい。

430 名前:nobodyさん mailto:sage [2009/01/18(日) 11:24:28 ID:???]
>>424
自己紹介乙

431 名前:nobodyさん mailto:sage [2009/01/18(日) 20:28:36 ID:???]
プログラム経験無しで、今からPHPを勉強しようと思っています。
そんな俺に、一冊買うならコレ!っていうPHPの参考書を教えてください。



432 名前:nobodyさん mailto:sage [2009/01/18(日) 20:32:39 ID:???]
>>431
www.php.net/manual/ja/



433 名前:nobodyさん mailto:sage [2009/01/18(日) 21:03:22 ID:???]
>>432
本をonegaisimasu

434 名前:nobodyさん mailto:sage [2009/01/18(日) 22:30:36 ID:???]
まずマニュアル嫁

435 名前:nobodyさん [2009/01/18(日) 23:59:27 ID:542zz2rd]
アンケートプログラムなんかでよくある、全部の項目が入力されているかを
submitボタンが押されたときに調べて、それが通ればsessionに入力項目を追加して次のページへ
ってことをやりたいんですが、
全部の項目が入力されているかを調べるのはonclickにJavascriptでチェック出来ますが、
そのあと動的に選んだ値をphpのsession変数に追加するのってどうしたら良いのでしょうか?

436 名前:nobodyさん mailto:sage [2009/01/19(月) 00:03:08 ID:???]
$_SESSION['hoge'] = $hoge;

437 名前:nobodyさん [2009/01/19(月) 00:11:48 ID:jnDZLn2z]
>>436
すいません、えっとどう言ったら良いのか;
質問のニュアンスを伝えるためにわざと無茶苦茶に書くと、

<input type="submit" onclicke="check()" />
<script type="text/javascript">
function check(){
//checkコード
if(allchecked){
$SESSION['age']=document.getElementsById("age");
}
}
</script>

こんな風な意味合いのことをする方法を聞きたかったのです。

438 名前:nobodyさん mailto:sage [2009/01/19(月) 00:16:55 ID:???]
PHPとJavascriptの違い分かってないの?

439 名前:nobodyさん [2009/01/19(月) 00:21:05 ID:jnDZLn2z]
>>438
あくまでニュアンスを伝えるために上記のような書き方をしているだけで、
サーバサイドphpとユーザサイドJavascriptの違いは分かってます。
ただphpではこういうチェックが出来ないのでどうしたものかと迷ったので。

440 名前:nobodyさん mailto:sage [2009/01/19(月) 00:21:42 ID:???]
よく分からんがGETで取れば?

441 名前:nobodyさん mailto:sage [2009/01/19(月) 00:22:12 ID:???]
いやPOSTでもいいけど

442 名前:nobodyさん mailto:sage [2009/01/19(月) 04:21:49 ID:???]
>>437
よく意味がわからんが・・・

<form name="form1" method="post" action="hoge.php">
<input type="submit" onclick="return check();" />
名前:<input type="text" name="name" />
</form>
<script type="text/javascript">
function check(){

  //checkコード
  if (document.form1.name=='') {
    alert('名前が入力されていません');
    return(false);
  }

  return(true);

}
</script>


あとはhoge.phpでnameを受けとってセッション変数に放り込むなり好きにするヨロシ。



443 名前:nobodyさん mailto:sage [2009/01/19(月) 04:44:39 ID:???]
ただのjavascriptの話になってるw

444 名前:nobodyさん mailto:sage [2009/01/19(月) 17:58:38 ID:???]
うわわわわ。。。
issetでもisSetでも書けるくさいなぁ(´・ω・`)

445 名前:nobodyさん mailto:sage [2009/01/19(月) 20:15:28 ID:???]
str_replaceよりpreg_replaceが速いのか

446 名前:nobodyさん mailto:sage [2009/01/20(火) 00:26:44 ID:???]
>>445
それはありえない
preg_replaceは正規表現の処理が入る分遅くなる
ついでにいうと、単純な置換ならstrstrよりstr_replaceの方が速い

447 名前:445 mailto:sage [2009/01/20(火) 00:28:42 ID:???]
>>446
じゃあここのはウソってことか。。。

ttp://phpspot.org/blog/archives/2006/11/12php.html

448 名前:nobodyさん mailto:sage [2009/01/20(火) 00:37:17 ID:???]
うん

449 名前:nobodyさん mailto:sage [2009/01/20(火) 00:58:56 ID:???]
>>447
そのサイトは検証もせずコピペしてるだけだからあまり鵜呑みにしない方がいい

450 名前:nobodyさん mailto:sage [2009/01/20(火) 01:55:00 ID:???]
原文はこう書いてある。
str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4

PHPの勉強の前に、まず英語勉強しようぜ

451 名前:nobodyさん mailto:sage [2009/01/20(火) 06:28:50 ID:???]
>>450
その原文の出典ってどこ?

452 名前:nobodyさん mailto:sage [2009/01/20(火) 07:38:55 ID:???]
>>447のリンク先



453 名前:nobodyさん mailto:sage [2009/01/20(火) 12:58:32 ID:???]
>>447
記事がうそじゃないとしても、2年も前だとあまり当てにならないな。
5.1.x時代だっけ

454 名前:nobodyさん [2009/01/20(火) 14:17:46 ID:auDP4Xko]
sql文の中に多数の変数を入れるにはどうしたらよいのでしょうか?

455 名前:nobodyさん mailto:sage [2009/01/20(火) 14:24:08 ID:???]
普通に文字列連結じゃだめなの?
意図がいまいちわからない。

あ、エスケープはしっかりしろよな。


456 名前:454 mailto:sage [2009/01/20(火) 20:16:30 ID:???]
>>455
はい普通に . でした
6時間前の自分にゲンコツしときました

457 名前:nobodyさん [2009/01/20(火) 23:14:20 ID:FkFXLWeK]
php5.seesaa.net/category/3813207-1.html

ここを見ながら勉強中で、ひとつ前の
Step9・入力された値をPHPでチェックする
まではうまくいったんですが、
Step10・入力された値をJavaScriptでチェックする
が、うまくいきません。イントラネットとかいうのが関係してるんでしょうか。。
何度も確認したんですけど、警告ウインドウが出てきません

458 名前:nobodyさん mailto:sage [2009/01/20(火) 23:21:44 ID:???]
問題の切り分けすべし

459 名前:nobodyさん mailto:sage [2009/01/21(水) 03:11:36 ID:???]
まずなにも入れないで計算してみて。
あとjavascript有効になっている?


460 名前:nobodyさん [2009/01/21(水) 09:46:52 ID:VkT7uFdT]
>>459さん
javascriptは、セキュリティのところでいじればいいんですよね。
それでしたら有効になってます。
なにも入れないで計算すると
-------------------
+=0

前の画面へ戻る
-------------------
って出ます。IEから見るソースは
-------------------

<html>
<head>
<title>calc.php</title>
</head>
<body>
+=0
<br/>
<br/>
<a href="#"onclick="history.back();return false;">前の画面へ戻る</a>

</body>
</html>
------------------------------
です。
書いてるソースのほうは
php5.seesaa.net/category/3813207-1.html
にあるとおりだと思います。

461 名前:nobodyさん mailto:sage [2009/01/21(水) 10:44:16 ID:???]
calc.htmlはどうなっているの?
最初に実行するプログラムはなに?
calc.htmlだよね?
そこからcalc.phpで処理してってことだけど、
form action とか大丈夫これどうり記述しているよね?
jsも読み込んでいるよね。
パスもあっているよね?



462 名前:nobodyさん [2009/01/21(水) 13:51:32 ID:ruw5pBd2]
<input type="text" name="名前" size="20" />
<?
$line = "==名前==";
$line = ereg_replace("==(.*)==", $_REQUEST["\\1"], $line);
?>
上記スクリプトで $line を name="名前" のフォーム値に置換したい
のですができません。どうすれば置換できるでしょうか?



463 名前:nobodyさん mailto:sage [2009/01/21(水) 14:09:33 ID:???]
マニュアル見れ
あとeregよりpreg

464 名前:nobodyさん [2009/01/21(水) 14:58:58 ID:VkT7uFdT]
>>461さん
calc.htmlのソースは

---------------------------
<html>
<head>
<script type="text/javascript"src="calc.js"></script>
<title>calc.html</title>
</head>
<body>
<form name="form1"action="calc.php"method="post">
<input type="text"name="txtA"id="txtA">

<select name="selOpe"size=1>
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>

<input type="text"name="txtB"id="txtB">=?
<br>
<input type="submit"value="計算">
<input type="reset"value="クリア">
</form>
</body>
</html>
-------------------------------------
です。パスがあっているかどうかは、どこを見るとわかりますか?

465 名前:nobodyさん mailto:sage [2009/01/21(水) 15:12:50 ID:???]
>>464のソースの中を見ればわかりますよ!( ^∀^)b

466 名前:nobodyさん mailto:sage [2009/01/21(水) 15:27:54 ID:???]
sample012
の中にはなにが入っている?
sample011までPHPは動いていたんだよね?
わからん。
ほんと。php5.seesaa.net/category/3813207-1.html
と同じことしているんでしょう?
calc.jsもsample012のフォルダの中にはいっているんでしょう?
ソースはコピペしてやっているんでしょう?



467 名前:nobodyさん [2009/01/21(水) 16:23:54 ID:VkT7uFdT]
>>465さん
>>466さん
コピペしなおしたらできるようになりました。
でもどこが悪かったのかわからに・・

468 名前:nobodyさん mailto:sage [2009/01/21(水) 19:35:45 ID:???]
考えられるのは、どっかに空白がはいってしまったこと。
なんか変な文字がどこかにはいってしまったか。
おれもコピペでそういうことになったことは
よくある。
見たとこミスはないので、あのソースをきちんと理解
して次進んでいいと思うよ


469 名前:nobodyさん [2009/01/21(水) 21:43:57 ID:VkT7uFdT]
空白もいけないんですか
先生ありがとう

470 名前:nobodyさん mailto:sage [2009/01/21(水) 22:33:22 ID:???]
いやあくまでも想像だけど、でも間違っているところがないから。
以後もし動かったら再度コピペすることを望みます。


471 名前:462 [2009/01/22(木) 10:25:52 ID:PnoeEoeZ]
>>463
すみません、マニュアル見直しました。
ところで、

$line = "==名前==";
//$line = preg_replace("/==(.*)==/e", "$_REQUEST['$1']", $line);
$line = preg_replace("/==(.*)==/e", "rep('$1')", $line);
function rep ($text) { return $_REQUEST["$text"]; }

コメント行の置換が動作せずに下記エラーが発生するのですが、
いちいちrepのようなfunctionを用意しなきゃいけないのでしょうか?

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'
in /************/index.php on line 340

472 名前:nobodyさん mailto:sage [2009/01/22(木) 10:36:31 ID:???]
preg_replace_callback じゃないのか



473 名前:nobodyさん mailto:sage [2009/01/22(木) 12:54:40 ID:???]
$line = "==名前==";
$line= preg_replace("/==(\S*)==/e", 'sprintf("<input type=\"text\" name=\"$1\" value=\"%s\" />", isset($_REQUEST["$1"]) ? $_REQUEST["$1"] : "")', $line);

こうやりたいのか?

キー文字は==全角==じゃなくて==半角==がいいと思うが

474 名前:473 mailto:sage [2009/01/22(木) 13:16:38 ID:???]
htmlspecialcharsも使わないとやヴぁいか。。。

475 名前:462 [2009/01/22(木) 13:23:02 ID:PnoeEoeZ]
>>473
すいません、解決しました。バカみたい・・・
$line = preg_replace("/==(.*)==/e", 'sprintf("%s", $_REQUEST["$1"])', $line);

476 名前:nobodyさん [2009/01/23(金) 05:27:52 ID:L5uKYwrL]
今初めてのPHP+mysqlを勉強しているのだが、
17章のサンプルアプリケーションが動かない。
これって仕様かな?
おれはcent os5でやったんだが、画面真白で。
linuxで誰かやってくれませんか?すいませんが
お願いします。ソースは一応レンタルサーバーと
ホームページ上に貼り付けているんで、
ソースダウンロードできないんだ。
gichioka.web.fc2.com/source.zip←ソースをダウンロード
www.krautgrrl.com/learningphp/index.php/site/C17/←データベース
とかもろもろ貼ってあります。
お手数ですが、よろしくお願いします



477 名前:nobodyさん [2009/01/23(金) 05:29:33 ID:L5uKYwrL]
日本語へたで申し訳ないですが、まあ両方見てやってみてください。
ほんとはphpの本のスレに行きたかったんだけどなくなってしまった
みたいで。
すいませんが、よろしくお願いします


478 名前:nobodyさん [2009/01/23(金) 05:34:48 ID:L5uKYwrL]
すいません。
サンプルコードありました。
昔はなかったのに
www.oreilly.co.jp/books/9784873113654/
ここです。


479 名前:nobodyさん mailto:sage [2009/01/23(金) 07:37:08 ID:???]
オライリー本、
読んで理解できたためしがない

480 名前:nobodyさん mailto:sage [2009/01/23(金) 08:08:21 ID:???]
>>478
エラーメッセージは?

481 名前:nobodyさん mailto:sage [2009/01/23(金) 16:01:37 ID:???]
<?php
session_start();
$anc = array('anc1' => 'one', 'anc2' => 'two', 'anc3' => 'three'); $html = '<html><body><form action="">';
switch ($_REQUEST['m']) {
case '1':
$html .= 'confirm<br />';
foreach ($anc as $k => $v) { $_SESSION[$k] = $_REQUEST[$k]; if ($_REQUEST[$k]) { $html .= $v . '=checked! '; } }
$html .= '<br /><input type="hidden" name="m" value="2"><input type="submit" value="go!">';
break;
case '2':

482 名前:nobodyさん mailto:sage [2009/01/23(金) 16:04:18 ID:???]
$html .= 'finish<br />'; $param = ''; foreach ($anc as $k => $v) { $_SESSION[$k] = $_REQUEST[$k]; if ($_REQUEST[$k]) { $param .= $v . '=checked! '; } }
if ($fp =@ fopen('anc.dat', 'a')) { fputs($fp, date("Y/m/d H:i:s ") . ' ' . $param . ' ' . $_SERVER["REMOTE_ADDR"] . "\n"); fclose($fp); } $html .= 'thank you!';
break;
default:
$html .= 'question<br />'; foreach ($anc as $k => $v) { $html .= '<input type="checkbox" name="' . $k . '" value="1">' . $v . ' '; }



483 名前:nobodyさん mailto:sage [2009/01/23(金) 16:08:55 ID:???]
$html .= '<br /><input type="hidden" name="m" value="1"><input type="submit" value="next">';
}
$html .= '</form></body></html>'; echo $html; exit;
?>

パソコンが今使えないので携帯で消化してしまってごめんなさい
このプログラムのoneやtwoを別のファイルに記録したいんですが
どうすればよいでしょうか?
すごい初心者なので、良ければ具体的に教えていただければ嬉しいです
スレチや失礼あればごめんなさい

484 名前:nobodyさん [2009/01/23(金) 16:11:58 ID:Jr51+scJ]
あと、これを一時間くらいでやらなきゃなので
テンパってます…
お待ちしてます

485 名前:nobodyさん mailto:sage [2009/01/23(金) 16:34:47 ID:???]
初心者とかじゃなくて、
「oneやtwoを別のファイルに記録したいんですが 」
日本語か?それ。

486 名前:nobodyさん [2009/01/23(金) 16:40:52 ID:Jr51+scJ]
すいません
やはり分かりにくかったですか


questionの解答がoneやtwoになっていて
その解答を記録したいんです
解答した日付時刻などはanc.datに記録されますが
なにを答えたかが記録出来てないと思うのですが

487 名前:nobodyさん mailto:sage [2009/01/23(金) 16:58:18 ID:???]
>>486
なんかエラー出てると思うけどねぇ。
エラーを確認するのが解決への近道だよ。

たぶん、原因は↓かと。
$param .= $v . '=checked! ';

$param .= "{$v}=checked! ";
に変えてみたらどうかな?

488 名前:nobodyさん [2009/01/23(金) 17:08:51 ID:Jr51+scJ]
>>487
あれ
paramじゃなくてそこはhtmlにではないですかね
僕の方では一応エラーは出てません

489 名前:nobodyさん mailto:sage [2009/01/23(金) 17:21:03 ID:???]
>>486
セッションが引き回せていないだけ、ってオチじゃないの?
case '2'のところで、print_r($_SESSION)ってやってみれば?

490 名前:nobodyさん [2009/01/23(金) 17:27:13 ID:Jr51+scJ]
>>489
すいません
どの辺りに入れたらいいかよろしければおねがいします
セッション引き回す?の意味がよく分からないのですが
…念のためお聞きしますが、このプログラムでは解答をファイルに書き込めないですよね?

491 名前:nobodyさん mailto:sage [2009/01/23(金) 17:37:42 ID:???]
>>486
もう少し頭を整理したら?
回答はどのファイルに書き込むの?
> oneやtwoを別のファイルに記録したいんですが
回答毎に別のファイルを作るってことかい?

492 名前:nobodyさん mailto:sage [2009/01/23(金) 17:39:39 ID:???]
//$_SESSION[$k] = $_REQUEST[$k];
//if ($_REQUEST[$k]) {
if ($_SESSION[$k]) {



493 名前:nobodyさん mailto:sage [2009/01/23(金) 17:52:40 ID:???]
>>490
デバッグなんだから、どこでもいいよ。
とりあえず、聞く前に試したら?

セッションに代入した(はずの)後、
代入された(はずの)セッションを使う前

494 名前:nobodyさん [2009/01/23(金) 17:58:15 ID:Jr51+scJ]
>>491
これをwebアンケートのようにしたときに
これを解答した人が何を選んだのか記録するファイルを作りたいんです
今はanc.datをつくればそこに日付等が記録されますが
できれば加えてone,two,threeのどれにチェックをつけたかも記録したいということです
記録するのがanc.datファイルでなくてもよいです

>>492
ありがとうございます!
それで上記みたいな事ができるでしょうか?
今は分かりませんが、夜に試してみます

495 名前:nobodyさん [2009/01/23(金) 18:00:35 ID:Jr51+scJ]
>>493
自分でさっきいろいろ挿入してみました
どうしてもエラーが出てしまったので
あとで>>492を試してみます
ありがとうございます!

496 名前:476です。 [2009/01/23(金) 19:42:52 ID:L5uKYwrL]
エラーメッセージは
Warning: Unknown: Failed opening '/var/www/html/login.php' for inclusion (include_path='.:/usr/local/include/php/libs') in Unknown on line 0
でした。
わかる人いますか?
ぜんぜんわかりません。
ちなみにsmartyはhangar5.blog48.fc2.com/blog-entry-27.html
でインストールしました。



497 名前:nobodyさん mailto:sage [2009/01/23(金) 20:01:20 ID:???]
すんまそん、どなたか教えて下さい

あるphpで書かれたスケジューラを使っているのですが、ユーザ認証の際に
POSTで パスワードを受け取り($pwd)、これの一部をsaltとして使い、crypt()でパスワードを暗号化しています。
おおまかな処理は以下の様な感じで行っています(htmlspacialchars等は省きました)。

/* $userid, $pwd => POSTから受け取ったユーザ名・パスワード */
$ pwd_cr = crypt( $pwd, substr( $pwd, 3, 2 ) );

/* SQL文作成 */
$sql = "SELECT id, passwd FROM users ";
$sql .= "WHERE id='".$userid."' AND password='".$pwd_cr."'";

/* SQLの結果セット取得 */
$res = pg_query($conn, $sql);
$cnt = pg_num_rows($res);


教えてもらいたい事ですが、この crypt( string $str [, string $salt ] ) について、
$str と $salt が完全に同じものである場合、どのような環境でも、生成される文字列は常に同一のものになるのでしょうか?

なんでまたこんな事を聞くかと言うと
Windows ServerにApacheとPHPをぶちこんで動かしていたら、Apache再起動のタイミングで
何故か 同一の $str ・ $salt から生成される文字列が変わってしまった経験が今日を含めて2回起きたからです。
そりゃ確かに php.netのマニュアルには

> そのシステム上で使用できるその他のアルゴリズムを使用します

と書いてあるんですが…ンなcryptの動作がコロコロ変わるものなんでしょうか?


498 名前:nobodyさん mailto:sage [2009/01/23(金) 20:04:21 ID:???]
連投すみません、追記。

crypt の挙動が変わる辺りで Windows Update を挟んでいたかどうかは、情けない事にわかりません。
むしろ、 Windows Update で crypt の挙動が変わる可能性があるなら、どのHotfixが怪しいか教えてもらえるとありがたいです。


499 名前:nobodyさん mailto:sage [2009/01/23(金) 20:10:33 ID:???]
>>496 (>>476)
「 /var/www/html/login.php 」について、下の2つの確認まじおすすめ
・確実に存在しているのか
・Apacheを実行しているユーザが読めるのか(パーミッションを確認)


500 名前:476です。 [2009/01/23(金) 20:41:49 ID:L5uKYwrL]
>>499さんへ
/var/www/html/login.php
確実にあります。
パーミッションもユーザーが読めるようにしています。
smartyもできてます。
if (class_exists('Smarty')) {
$smary =& new Smarty;
printf("you can use Smarty(version %s).\n", $smary->_version);
} else {
echo "you can't use Smarty.\nplease install Smarty library.";
}
で確認をとりましたし、テストデータもいれました。
ってことはlinuxだからだめってことですよね?
ほかに考えられないんですよ。
基礎からのphpのサンプルアプリケーションもlinuxでだめでした。




501 名前:nobodyさん mailto:sage [2009/01/24(土) 21:09:15 ID:???]
>>476
・ DB関連の記述は間違っていないか
  MySQLみたいだけど、特に $db_host 等
・ php自体の記述が間違ってないか
  つーかphpの文法はわかってる?あとファイル始端終端の無用な空白行やコメント、文字コードとかにも注意。
・ 最初に $test = 0; を、随所に echo "TEST".$test.": OK";$test++; を入れて止まってるところを探せ
  php勉強するなら結局はコレ大事。

あとは、本気でどうにも出来ないけどどうにかしたい、って言うなら↑の3つを試した後で
今使ってるMySQLの中身と、今のDocumentRootのディレクトリ構成、php.ini、httpd.conf を、ディレクトリ構成ごとまとめて
zipでうpする位は必要だな。レスが付くかどうかは知らんけど。

>>476 の source.zip だけじゃ db_login.php とか、Auth/HTTP.php とか入ってないっしょ。
ドキュメント見たらなんか、学習に沿って自分で作って配置するものらしいけど…そんなんわからんがな。
これじゃ相当なヒマ人かエスパーじゃない限りレスも何もでけん。

502 名前:476です。 [2009/01/24(土) 22:31:06 ID:M+3olz+y]
>>501
Auth/HTTP.php これはpearだぜ。
db_login.php はつくったけど、結果はだめでした。
もういいです。すいませんでした。
Warning: Unknown: Failed opening '/var/www/html/login.php' for inclusion (include_path='.:/usr/local/include/php/libs') in Unknown on line 0
これも連日ぐぐっているけど、だめ。
orellyに聞いたところ確認するって。
誰か持っていてアプリをlinuxで試した人いるかなって
思ったんだけど、いないみたいですね。
スレ汚しすいません。
持っている方はぜひやってみて。
報告待っています
souce.zipは削除しますので、
暇なエスパーの方でおれやってみようかな?っていう方
www.oreilly.co.jp/books/9784873113654/
からダウンロードしてみてください。
ではすいませんでした。




503 名前:nobodyさん mailto:sage [2009/01/24(土) 22:41:25 ID:???]
もっかい自分が今扱っているコードと関連ファイル(ディレクトリ構成そのままで)をうpしてくれ

504 名前:nobodyさん mailto:sage [2009/01/24(土) 23:08:37 ID:???]
"Unknown on line 0"
そのエラー、稀に文字コードの問題はあるにしてもソースの問題じゃないと思うけど。
サーバー設定で権限がなくて読みに行けないとか、だな。

505 名前:nobodyさん mailto:sage [2009/01/24(土) 23:11:53 ID:???]
元ファイルがUnknownなのにlogin.phpがincludeできないというのもおかしいな

506 名前:nobodyさん mailto:sage [2009/01/24(土) 23:21:55 ID:???]
>>505
おかしくない。よくあること。

507 名前:nobodyさん mailto:sage [2009/01/24(土) 23:23:43 ID:???]
なぜに?

508 名前:nobodyさん mailto:sage [2009/01/24(土) 23:49:33 ID:???]
Unknown on line 0
Unknownとは、読みに行く側のリソースが特定できていないということ。
Web経由のアクセスの場合、login.phpはあるが、権限が不足していたりすると404じゃなく、
phpハンドラーに渡されて、そのエラーになる。普通によくあること。
>>500は「パーミッションもユーザーが読めるようにしています。 」って書いてるが、
読めなくなる原因はファイルパーミッションだけじゃないからね。

509 名前:nobodyさん mailto:sage [2009/01/24(土) 23:56:53 ID:???]
実際のところ、>>501のアドバイスの3つ目をやってみてないわけだな。
とりあえず、最初に叩くファイルの冒頭にecho "hoge";exit();これでどうなるか。
そっからデバッグしてけば別のエラーになるさ。

510 名前:nobodyさん mailto:sage [2009/01/25(日) 01:33:09 ID:???]
>最初に $test = 0; を、随所に echo "TEST".$test.": OK";$test++;
だせぇw

511 名前:476です。 [2009/01/25(日) 02:01:51 ID:esMzMmSN]
>>503さんへレスくれた方へ
gichioka.web.fc2.com/source.zip
すべてのファイルとデータベースとphp.iniを入れました。
よろしくお願いします。

512 名前:nobodyさん mailto:sage [2009/01/25(日) 02:15:21 ID:???]
どれ実行して>>502が出んの?



513 名前:nobodyさん [2009/01/25(日) 02:28:51 ID:esMzMmSN]
login.phpとposts.phpです。


514 名前:nobodyさん mailto:sage [2009/01/25(日) 02:41:42 ID:???]
>>510
ださくない、ださくないよ

515 名前:nobodyさん mailto:sage [2009/01/25(日) 02:44:07 ID:???]
>>513
login.phpの中で/var/www/html/login.phpなんてincludeしてんの?

516 名前:nobodyさん mailto:sage [2009/01/25(日) 03:08:45 ID:???]
ダブルクォーテーションで囲んだ文字列に改行をいれてもエラーにならないのですが、
これって文章化されたPHP仕様に含まれてますか?
てっきりヒアドキュメントを使わなくてはならないものだと思っていたのですが…

$multiline = "
LINE 1
LINE 2
LINE 3
";

517 名前:nobodyさん mailto:sage [2009/01/25(日) 03:24:57 ID:???]
PHPだけじゃなくて一般の言語全てがそうだと思われます(pyなんとかは一般でないから除く)

518 名前:nobodyさん mailto:sage [2009/01/25(日) 03:58:37 ID:???]
>>516-517

VBだと改行で認識するよね。
だからVBからきた人だと、改行入れても
エラーにならない、という仕様のほうが
不思議に思うんでしょう。

519 名前:516 mailto:sage [2009/01/25(日) 04:22:47 ID:???]
ありがとうございます。

有名どころのフレームワーク等でも

$multiline = "LINE1\n"
. "LINE2\n"
. "LINE3\n"

と書いているものがほとんどなので、使ってはいけないのかなと疑問を持った次第です。
SQLとか埋め込む時は>>516の方が断然楽ですよね…

ヒアドキュメントはいらない子?

520 名前:nobodyさん mailto:sage [2009/01/25(日) 04:37:23 ID:???]
いる子

521 名前:nobodyさん mailto:sage [2009/01/25(日) 05:48:15 ID:???]
>>519
ヒアドキュメントは、"をエスケープしなくてすむのがいい。

522 名前:nobodyさん mailto:sage [2009/01/25(日) 05:59:54 ID:???]
多次元配列の要素数を返す関数はありませんか?
例えば
$test['a'][1];
$test['a'][2];
$test['b'][1];
$test['b'][2];
$test['b'][3];
この配列で要素数5を返したいのですが
countでは3が返ってきます。
何かほかの関数や手段はありますか?



523 名前:nobodyさん mailto:sage [2009/01/25(日) 06:07:51 ID:???]
>>522
array_merge_recursive

524 名前:nobodyさん mailto:sage [2009/01/25(日) 06:08:42 ID:???]
array_walk_recursive
すまんこっちのほうだ

525 名前:nobodyさん mailto:sage [2009/01/25(日) 07:39:19 ID:???]
echo count($test, 1)

ttp://jp2.php.net/manual/ja/function.count.php

526 名前:nobodyさん mailto:sage [2009/01/25(日) 08:17:33 ID:???]
>>476
>>515
だからさ、login.phpのファイルはあるけど何らかの問題で読めてないんだって。

たとえば、お前らのサーバでも試せるからやってみ。
test.php作ってパーミッションを000にしたファイルにアクセス。

したら、
Warning: Unknown: Failed opening ・・・
になるから。

527 名前:nobodyさん mailto:sage [2009/01/25(日) 08:29:44 ID:???]
おいおい、マルウエアかよ

528 名前:476です。 [2009/01/25(日) 11:45:32 ID:esMzMmSN]
だからさ、login.phpのファイルはあるけど何らかの問題で読めてないんだって。

なんででしょうか?


529 名前:nobodyさん mailto:sage [2009/01/25(日) 11:56:54 ID:???]
なんでて、言う前に試してみた?
login.phpの中身を空っぽにしてアクセスしてみ?

530 名前:nobodyさん mailto:sage [2009/01/25(日) 12:04:32 ID:???]
>>528
原因はパーミッション以外にいろいろあるよ。
パーミッションだってあってるのかどうか。

他にはopen_basedirとかsafe_modeとか、
CGIで動いてるレンサバなんかならそれに合わせた設定が必要だし。

531 名前:nobodyさん mailto:sage [2009/01/25(日) 12:08:36 ID:???]
>>526
上と被るけどそれじゃ単純なhello worldスクリプトも動かないってこと?

532 名前:nobodyさん mailto:sage [2009/01/25(日) 12:09:07 ID:???]
>>528宛てね



533 名前:nobodyさん mailto:sage [2009/01/25(日) 12:14:51 ID:???]
>>531
Hello Worldが動くかどうかなんて、エスパーじゃあるまいしわからないさ。
が、とりあえず、それを試せば問題は次に移るってこと。

Warning: Unknown: Failed opening '/var/www/html/login.php' for inclusion (include_path='.:/usr/local/include/php/libs') in Unknown on line 0
冗長だけどもっかい書くとね。
Apache:login.phpにリクエスト来ました。ファイルありました。phpハンドラー、後はよろしく。
php:了解、じゃ、ファイルをインクルードして処理します〜。あ、ファイル、インクルードできません。

で、エラー
from:不明なリソース to: login.php action:include result:無理

534 名前:nobodyさん mailto:sage [2009/01/25(日) 12:19:12 ID:???]
こういうケースでよくあるのは
パーミッションが間違ってる。
open_basedirの設定にtypoがあって動かない。
include_pathに問題がある
safe_modeの設定に問題がある
PHPがsuexecで動いてて、ファイルの所有ユーザーかグループに問題がある
などなど。

535 名前:nobodyさん mailto:sage [2009/01/25(日) 12:20:35 ID:???]
>>533
いやお前さんに聞いてるだけじゃなくて本人に聞いてるんだよ

536 名前:nobodyさん mailto:sage [2009/01/25(日) 12:21:27 ID:???]
まぁ、login.phpの冒頭にphpinfo(INFO_CONFIGURATION);
とでも書いて結果を貼ってもらうってのがいいのかもしれないね。この場合。

537 名前:nobodyさん mailto:sage [2009/01/25(日) 12:22:17 ID:???]
>>535
あぁ、そういうことね。

538 名前:476です。 [2009/01/25(日) 13:36:25 ID:esMzMmSN]
>>536
phpinfo(INFO_CONFIGURATION);
かいたやつを入れましたのでよろしくお願いします。


539 名前:476です。 [2009/01/25(日) 13:42:05 ID:esMzMmSN]
source.zipの中にはいっています。


540 名前:nobodyさん mailto:sage [2009/01/25(日) 13:44:10 ID:???]
source.zipアクセスできなかったよ?
ところで、login.phpでecho "Hello World!";はしてみたの?

541 名前:nobodyさん mailto:sage [2009/01/25(日) 13:44:40 ID:???]
てか、そのURL貼っちゃえw

542 名前:nobodyさん mailto:sage [2009/01/25(日) 13:45:57 ID:???]
>>538
なぜ531はシカト?



543 名前:nobodyさん mailto:sage [2009/01/25(日) 13:49:36 ID:???]
え、シカトされて怒ってんの?

544 名前:nobodyさん mailto:sage [2009/01/25(日) 13:50:22 ID:???]
これは、マルウエアをインストールさせるための釣りだな。たぶん。

545 名前:476です。 [2009/01/25(日) 14:46:06 ID:esMzMmSN]
login.phpでecho "Hello World!";
はできました。
source.zipアクセスできるようになりましたので、よろしくお願いします。

>>マルウエアをインストールさせるための釣りだな。たぶん。
変なこといわないでください


546 名前:nobodyさん mailto:sage [2009/01/25(日) 14:53:00 ID:???]
>>545
そしたら、元のソースにして、エラーが出る個所を特定すればいい。
1行でも解釈できれば例のエラーにはならないから。
で、リダイレクトループとかで問題が出ているケースもあるから、
error_log(__LINE__);とかを怪しいところにはさんで行って、どこまで処理が進んでるかチェック。

547 名前:476です。 [2009/01/25(日) 15:00:45 ID:esMzMmSN]
error_log(__LINE__);
の使い方がわかなんね。
どうやって使うの?


548 名前:nobodyさん mailto:sage [2009/01/25(日) 15:04:41 ID:???]
それ書いて、エラーログ見れば、行番号が出力されてくる。
コマンドラインが使えるならエラーログでtail -f /var/log/httpd/error_logとかで見張ってればよくわかる。
エラーログが見れないんならechoでもいいけど、要するにどこまで処理が進んでるかチェックして
そのエラーメッセージを出せば、新しい情報がとれるでしょ?

549 名前:nobodyさん mailto:sage [2009/01/25(日) 16:08:16 ID:???]
なんで原因を特定しようとせんの?
Hellow World→動く
サンプルコードをそのまま挙げた→動かない
これしかやってないでできないできない言うとかありえないっす

550 名前:476です。 [2009/01/25(日) 20:01:42 ID:esMzMmSN]
みなさん。ありがとうございます。
error_log(__LINE__); でいろいろ調べてみたいと思っています


551 名前:476です。 [2009/01/25(日) 20:12:36 ID:esMzMmSN]
エラーがでました。

PHP Fatal error: require_once() [function.require]: Failed opening required 'config.php' (include_path='.:/usr/local/include/php/libs') in /var/www/html/login.php on line 3
だそうです。
調べてみてもわからん。


552 名前:476です。 [2009/01/25(日) 20:13:47 ID:esMzMmSN]
ひとつ事例があり、SELINUXが原因かと思いましたが
SELINUXは切ってありました。




553 名前:476です。 [2009/01/25(日) 20:51:19 ID:esMzMmSN]
すいません。質問です。
無事動いたのですが....動いたといえるのか。
HTTP/AUTH.PHPが作動したのですが、
Member Area のサーバーにはユーザー名とパスワードが必要です。
と普通でます。
で、db_login.phpのデータを入れたんですがだめでした。
もしかして
$AuthOptions = array(
'dsn'=>"mysql://$db_username:$db_password@$db_host/$db_database",
'table'=>"users", // テーブル名
'usernamecol'=>"username", // ユーザ名の列
'passwordcol'=>"password", // パスワード列
'cryptType'=>"md5", // パスワードの暗号化形式
'db_fields'=>"*" // 他の列も取得可能にする
のどこかにデータを入れなくてはいけないのでしょうか?


554 名前:nobodyさん mailto:sage [2009/01/25(日) 21:17:56 ID:???]
とりあえず、初期の問題は片付いたわけだな。よかったよかった。

>>553
聞きたいことをもう少し整理してくれ。

555 名前:476です。 [2009/01/25(日) 21:24:21 ID:esMzMmSN]
Member Area のサーバーにはユーザー名とパスワードが必要です。
とでるんですがユーザー名とパスワードを入れてもうごきません。
初歩的ですいませんが、
>>553のどの部分に自分のデータを記載すればいいのでしょうか?
僕はdb_login.phpにデータが入っているのでなにもいれてなく>>553
のままなんですが。
ここの部分がおかしいんですよね?



556 名前:nobodyさん mailto:sage [2009/01/25(日) 21:31:42 ID:???]
mysqlでしょ?
usernameっていうユーザいるの?

557 名前:nobodyさん mailto:sage [2009/01/25(日) 21:35:07 ID:???]
まず、こんだけ色々アドバイスもらってんだから、動くに至った経緯を書け。
ここはお前専用の質問スレじゃないんだ。

で、login.phpが動かないとか、そもそも入力されたユーザ名・パスワードが間違ってた時の挙動が
どうなるのかを把握してんのか?
それと自分でうpした中のDB.txtの中身を理解してるのか?
具体的には62・63行目。

…もしかしてNG推奨だったのか

558 名前:nobodyさん mailto:sage [2009/01/25(日) 21:35:50 ID:???]
データベースのレコードに自分のユーザー名とパスワード、md5ハッシュを保存
db_login.phpにはそのデータベースにアクセスするための権限情報を保存

559 名前:476です。 [2009/01/25(日) 21:38:41 ID:esMzMmSN]
'usernamecol'=>"username", // ユーザ名の列 ←変更
'passwordcol'=>"password", // パスワード列 ←変更 
すればいいですか?
あ、mysqlに入っているusernameとpasswordはすでに試しましたが
だめでした。
それがいまいちよくわからないんですよね
なんでだめなのか


560 名前:nobodyさん mailto:sage [2009/01/25(日) 21:39:56 ID:???]
パスワードはちゃんとハッシュしてんの?

561 名前:nobodyさん mailto:sage [2009/01/25(日) 21:47:18 ID:???]
しっかし、よく釣れるなぁw

562 名前:476です。 [2009/01/25(日) 22:23:02 ID:esMzMmSN]
>>557さんへ
マスまずパスが違っていました。
僕のパスはinclude_path = ".:/usr/local/include/php/libs"
なので、ここにpearとconfig.phpを入れてやりました。
そしたら動きました。
>>560さんへ
パスワードはちゃんとハッシュしていますよ。



563 名前:nobodyさん mailto:sage [2009/01/25(日) 22:34:43 ID:???]
>>562
PEAR入れて無かったってこと?

564 名前:476です。 [2009/01/25(日) 22:43:40 ID:esMzMmSN]
いや、pearのパスが間違っていました。


565 名前:nobodyさん mailto:sage [2009/01/25(日) 23:06:00 ID:???]
元はどこにあったの?

566 名前:522 [2009/01/26(月) 01:07:02 ID:Ihgtqp1K]
>>525
それだと、a・bという項目もカウントしてしまい、7を返すようです。5を返す方法はないですか?

567 名前:nobodyさん mailto:sage [2009/01/26(月) 01:16:16 ID:???]
>>566
>>524


568 名前:522 [2009/01/26(月) 05:09:38 ID:Ihgtqp1K]
>>567
すみません、バージョンが4なのでarray_walk_recursiveは使えないみたいです。
他にありませんか?

569 名前:nobodyさん mailto:sage [2009/01/26(月) 05:10:14 ID:???]
引き算すりゃいいでしょ。countとcountで

570 名前:nobodyさん mailto:sage [2009/01/26(月) 05:48:20 ID:???]
>>522
$count = 0;
foreach ($test as $value) {
 $count += count($value);
}
echo $count;

571 名前:570 mailto:sage [2009/01/26(月) 05:58:46 ID:???]
ちなみに>>570の方法は2次元配列の場合で
それ以上になると再帰(リカーシブ)でやったほうがいい
(foreachのネストでも可能だが読みやすさに限界がある)
ただし再帰は頭の回転が速くないと何やってるかわからなくなるので
苦手なら無理して使う必要はない

572 名前:nobodyさん mailto:sage [2009/01/26(月) 06:13:09 ID:???]
>>570-571
発想はいまいちだが、初心者にしちゃぁ、よくできたな。



573 名前:nobodyさん mailto:sage [2009/01/26(月) 06:26:30 ID:???]
巣にお帰り
pc11.2ch.net/test/read.cgi/php/1231850905/

574 名前:nobodyさん mailto:sage [2009/01/26(月) 06:30:54 ID:???]
自己紹介乙

575 名前:nobodyさん mailto:sage [2009/01/26(月) 10:12:51 ID:???]
>>570
わざわざそんなことしなくてもこれでいけるっぽ

echo count($test, 1) - count($test);

576 名前:nobodyさん mailto:sage [2009/01/26(月) 10:29:32 ID:???]
html拡張子でPHP5が動くように設定しつつ、
404エラーの際に自作エラーページを表示させるには
どうすれば良いかご存知の方いませんでしょうか。

.htaccessで「AddType PHP5-script html」を指示してしまうと
「ErrorDocment 404 error.html」で指定したページが表示されません。
PHP4の時は両立できたんですが…

577 名前:nobodyさん [2009/01/26(月) 10:41:26 ID:2xglnPYy]
>>576

AddType php5-script .html

578 名前:nobodyさん mailto:sage [2009/01/26(月) 10:44:39 ID:???]
>>575
3次元以上の場合は?

579 名前:nobodyさん mailto:sage [2009/01/26(月) 11:03:14 ID:???]
>>577
あー大文字で書いてしまったのはここに書き込む際の記載ミスです。
実際の.htaccessではご指摘のように記載してます。html拡張子でPHP5は動いてます。
でもそうすると404エラーで自作ページが表示できなくて困ってます。
AddTypeでやってもAddHandlerでやっても結果は同じで、
「AddType application/x-httpd-php .html」でPHP4の環境では両立できるんです。

580 名前:nobodyさん mailto:sage [2009/01/26(月) 11:05:47 ID:???]
エラーページが表示されないのならどんなページが表示されてる?
まっちろ?

581 名前:nobodyさん mailto:sage [2009/01/26(月) 11:14:50 ID:???]
>>580
IEならIE、FireFOXならFireFOXのフツーの404NotFoundページが出ます

582 名前:nobodyさん mailto:sage [2009/01/26(月) 11:19:56 ID:???]
そのエラーのソースの中でheader("HTTP/1.0 404 Not Found");してみるとどうなる?



583 名前:nobodyさん mailto:sage [2009/01/26(月) 11:22:02 ID:???]
だったら例のあれじゃない?
自作エラーページのサイズが小さ過ぎるとか。。。

584 名前:nobodyさん mailto:sage [2009/01/26(月) 11:27:03 ID:???]
>>582
変化ありませんでした。
IEのHTTP 404 未検出の画面が出ます。

>>583
ファイルサイズは1Kbありました。

585 名前:nobodyさん mailto:sage [2009/01/26(月) 11:29:13 ID:???]
>>584
404header返せばいけるはずなんだがな。
どんなソースになってるよ。

586 名前:nobodyさん mailto:sage [2009/01/26(月) 11:46:12 ID:???]
>>585
単純なHTMLページの1行目に↓をぶち込んだんですが…
<?php
header("HTTP/1.0 404 Not Found");
php?>

.htaccessで拡張子指定しているのは今は.htmlだけなのですが
存在しない.htmファイルを探させると自作エラーページへ行くことがわかりました。
が、.htmlファイルだとIE規定のページになっています。
.htmlでPHPが動くように指定してしまうとErrorDocmentが
狙った動きをしてくれない、という事でしょうか。

ちなみに今、直接自作エラーページを指定したらIE規定のページが出ましたので
404headerはちゃんと返ってきているようです。

587 名前:nobodyさん mailto:sage [2009/01/26(月) 11:54:43 ID:???]
Apacheスレかhtaccessスレあたりで聞いたほうがいいぞ

588 名前:nobodyさん mailto:sage [2009/01/26(月) 12:06:45 ID:???]
htaccessスレが見つけられなかったのと
PHPで何とか似たような事をやる技があったりしないかなーと
思ったりしたんですが、やっぱ無理すよね。スイマセンでした。
Apacheスレの方で聞いてみます。ありがとうございました。

589 名前:nobodyさん [2009/01/26(月) 14:26:16 ID:7H1IWdV1]
>>586
> php?>

何これ。

590 名前:589 mailto:sage [2009/01/26(月) 14:27:55 ID:???]
と思ったら関係ないな、すまん。

591 名前:nobodyさん mailto:sage [2009/01/26(月) 21:42:45 ID:???]
右から読んでもphp

592 名前:nobodyさん mailto:sage [2009/01/26(月) 23:07:21 ID:???]
左から読んでもphp

なんて言うと思ったか



593 名前:nobodyさん mailto:sage [2009/01/27(火) 06:21:30 ID:???]
前から読んでも(ry

594 名前:nobodyさん mailto:sage [2009/01/27(火) 10:00:43 ID:???]
<?山本山
タケヤブヤケタ
山本山?>

595 名前:nobodyさん mailto:sage [2009/01/29(木) 04:21:55 ID:???]
ttp://free-p.ddo.jp/tools/enc4php_e.php
こことおなじものを自分のローカルサーバに設置したいのですがどこかに置いてないでしょうか?

596 名前:nobodyさん mailto:sage [2009/01/29(木) 04:32:25 ID:???]
なぁにこれ?

597 名前:nobodyさん mailto:sage [2009/01/29(木) 07:06:35 ID:???]
>>595
サイトの中身良く見りゃわかんだろ・・・
evalは、文字列の中身をphpのコードとして解釈して実行するもの。
base64_decodeしてからgzinflateしてるんだから
base64_encodeしてからgzdeflateすれば、期待の物が出来るんじゃね?

これでわからないんだったら、プログラミングやめた方が良いかもな

598 名前:nobodyさん mailto:sage [2009/01/29(木) 10:51:02 ID:???]
性格悪いな

599 名前:nobodyさん mailto:sage [2009/01/29(木) 12:03:24 ID:???]
>>597
最初と最後の1行ずつは要らんだろ常識的に考えて。

600 名前:nobodyさん mailto:sage [2009/01/29(木) 12:10:04 ID:???]
>>597
pc11.2ch.net/test/read.cgi/php/1221471692/l50
ここの995=997だろ

601 名前:nobodyさん mailto:sage [2009/01/29(木) 13:24:49 ID:???]
>>600
フイタww
淡々と技術情報の交換を2chでしたいってそりゃ無理だろw
2chってそういうとこだとおもうべきだな

602 名前:nobodyさん mailto:sage [2009/01/29(木) 17:55:36 ID:???]
質問です!
サーバーがPHP5になってしまい
今まで使っていたフリーのメールフォームが使えなくなりました。
PHP5のフリーのメールフォームを探したのですが全然わからず
ここにたどり着きました。
フリーのメールフォームのサイトを教えて頂けないでしょうか?



603 名前:nobodyさん mailto:sage [2009/01/29(木) 18:20:03 ID:???]
スレ違いで内科?

604 名前:nobodyさん mailto:sage [2009/01/29(木) 18:24:41 ID:???]
まともな人がいないのでこちらでも質問を

//$_SESSION['abc']; は前ページで123を代入

//ここから
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 42000, '/');
}
session_destroy();

echo $_SESSION['abc'];//123

と表示したいのですが何か方法はないのでしょうか?クッキーとか使わずに。


605 名前:nobodyさん mailto:sage [2009/01/29(木) 18:29:17 ID:???]
頭痛くなってきた。
要点をまとめてくれないか

606 名前:nobodyさん mailto:sage [2009/01/29(木) 18:40:48 ID:???]
$_SESSION['abc'] にはすでに123が入ってるが
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 42000, '/');
}
session_destroy();
とすると123も消えるけど、それを消さずに

echo $_SESSION['abc'];//123
と後でも表示させたい。

理想としては
$abc = $_SESSION['abc'];
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 42000, '/');
}
session_destroy()
$_SESSION['abc'] = $abc;
echo $_SESSION['abc'];

と表示できればいい。

607 名前:nobodyさん mailto:sage [2009/01/29(木) 19:53:27 ID:???]
>>604 == >>606 だよな?
「どうしても$_SESSION['abc']を使いたい理由」ってのがわからんと、普通のPGは他の手段を考えると思うぞ。
>>606 の中で $abc に入れてるんだったら、そのまま echo $abc; すりゃ良いじゃん、的な。
つーかsession_start()しなくて良いんかな。

長ったらしくない程度に、もう少し質問の背景を含めて、かつ要領良くまとめて質問すれば回答が返って来ると思う。

608 名前:nobodyさん mailto:sage [2009/01/29(木) 20:07:16 ID:???]
釣りだよ。
ttp://oshiete1.goo.ne.jp/qa3224862.html

609 名前:nobodyさん mailto:sage [2009/01/29(木) 20:25:30 ID:???]
pc11.2ch.net/test/read.cgi/php/1158647441/672
pc11.2ch.net/test/read.cgi/php/1231850905/880

理由はどうあれこういうマルチするアホは相手にしないほうがいい

610 名前:nobodyさん mailto:sage [2009/01/29(木) 23:28:49 ID:???]
何回読んでも>>604のやりたいことがわからない

611 名前:nobodyさん mailto:sage [2009/01/29(木) 23:37:26 ID:???]
前よく出没してた基地外だろ

612 名前:nobodyさん mailto:sage [2009/01/29(木) 23:41:37 ID:???]
やりたいことは見えてる。
「ログイン・ログアウトとは別にセッションデータを引きまわしたい」ってことだろ。
で、普通は>>604みたいなソースにはならないのに、わざわざ教えてgooだか、
phpのマニュアルでセッション破壊用のソースをそれだと勘違いして質問してるだけ。

すでに回答ついてるのに、人の意見を聞けない困ったチャンか、単なる荒し



613 名前:nobodyさん mailto:sage [2009/01/30(金) 10:09:33 ID:???]
>>607
ログインログアウトとは別に、スタイルシートをセッションで持ち歩いていて、
ログアウト>>606で書いたようにログアウトとしたときセッションに保存してあるスタイルシート変数も消えてしまいます。
なので、セッション(ログアウト)を消す前に$abc = $_SESSION['abc']; として消した後再び、$_SESSION['abc'] = $abc; などにして再度セッションにいれればなと考えていますが、
うまくいきません。
そこで何かいいほうほうは無いものかと。



614 名前:nobodyさん mailto:sage [2009/01/30(金) 12:27:38 ID:???]
悔しいっ・・・でも・・・触っちゃう・・・っ(ビクビク

>>613
cookie使えよ。sessionなんかにそんなん入れんな。
sessionに入れるならログアウト=専用スタイルシート破棄として使え。
$_SESSION と session_*()を勉強し直して来い

615 名前:nobodyさん [2009/01/30(金) 23:37:15 ID:gxYTwHzL]
epg.2ch.net/tv2chwiki/subject.txt
から、別サーバー(自分のブログとか)に
スレの勢いと局、番組名だけを取得して表示させることってできますか?

616 名前:nobodyさん mailto:sage [2009/01/30(金) 23:39:57 ID:???]
うん

617 名前:nobodyさん [2009/01/31(土) 00:20:10 ID:Zjr5MV5E]
<form action="<?= $_SERVER['PHP_SELF']; ?>" method="POST">
<input type="text" name="textbox" value="">
<input type="submit" value="送信">
</form>

<?php

$text = htmlspecialchars( $_POST["textbox"] );

if ( get_magic_quotes_gpc() ) {
$text = stripslashes( $text );
}
print $text;
?>

これ、ゲストの人がコメント書き込むくらいならいいんだけど、自分が投稿しようと思った時に
$_SERVER['PHP_SELF'];が入っているからエディットページ(管理人専用の編集ページ)かなんかでindex.phpに書き込めないと思うんだ。
エディットページでindex.phpに反映させる方法ってない?

618 名前:nobodyさん mailto:sage [2009/01/31(土) 00:28:12 ID:???]
エディットページで$_SERVER['PHP_SELF']にしなければいいのでは?

619 名前:nobodyさん [2009/01/31(土) 00:41:31 ID:Zjr5MV5E]
お!というとどういう風に記述すればいいですか?

620 名前:nobodyさん mailto:sage [2009/01/31(土) 00:42:37 ID:???]
ファイル名

621 名前:nobodyさん mailto:sage [2009/01/31(土) 00:42:41 ID:???]
>>615 $rtn = file_get_contents( 'epg.2ch.net/tv2chwiki/subject.txt ' );

>>617 漏れは神様でもエスパーでもないんだから、
おまいのやりたいことを補完して理解なんかできない。
質問は相手に理解できるように書こう。

でも <input type=hidden name=action value=edit>
とか場合わけしる

622 名前:nobodyさん mailto:sage [2009/01/31(土) 00:43:50 ID:???]
なぜにhidden使う必要が?



623 名前:nobodyさん [2009/01/31(土) 01:07:34 ID:Zjr5MV5E]
>>621 説明足らずで すまん ありがとう。要は管理人専用ページでこのスクリプトを使用した時に$_SERVER['PHP_SELF']だと現在いじってる(管理人専用ページ)でスクリプトが実行されてしまうんではないかと。
あくまで表示したいのはindex.phpなので、そこんとこどうなんかなーと思いまして。

>>620
と、いうことは$_SERVER['PHP_SELF']を$_SERVER['index.php']にしたらいいってことですか?

624 名前:nobodyさん mailto:sage [2009/01/31(土) 01:09:00 ID:???]
お前は何を言ってるんだ?

625 名前:615 [2009/01/31(土) 01:27:06 ID:myPf0iH/]
>>621
<?php
$temp = "epg.2ch.net/tv2chwiki/subject.txt";
$html_f=file_get_contents($temp);
$replace = "(2)";
$scriptphp = "<br />";
$word = str_replace($replace, $scriptphp, $html_f);
$hogeru = ".dat<>";
$gogeta = "<br />";
$yabai = str_replace($hogeru, $gogeta, $word);
print $yabai;
print($word1_a);
?>

から、偶数行だけ表示するにはどうしたらいいんでしょうか?



626 名前:nobodyさん [2009/01/31(土) 01:27:12 ID:Zjr5MV5E]
すみません。ようやく分かってきました。
$_SERVER['PHP_SELF'] これ書かなきゃいいんですね。

じゃあそのかわりformのactionにはなんて書けばいいんですかね?

627 名前:nobodyさん mailto:sage [2009/01/31(土) 01:28:37 ID:???]
actionの意味知らんの?

628 名前:nobodyさん [2009/01/31(土) 01:30:22 ID:Zjr5MV5E]
正直なところform処理いじったことがありませんもので…。非常に申し訳ないんですが教えてくれると助かります…

629 名前:621 mailto:sage [2009/01/31(土) 01:35:09 ID:???]
>>625 最初からそれをいいたまへ

$rtn = file( 'epg.2ch.net/tv2chwiki/subject.txt ' );
for ( $n = 0; $n < count( $rtn ); $n = $n + 2 ) echo $rtn[$n];


630 名前:621 mailto:sage [2009/01/31(土) 01:38:56 ID:???]
>>623 やっと意味がわかった。管理人は管理人ようのページを作り給え

631 名前:nobodyさん [2009/01/31(土) 01:46:56 ID:Zjr5MV5E]
>>630ありがとうございます。じゃあ$_SERVER['PHP_SELF']はいらないってことですかね?

632 名前:nobodyさん mailto:sage [2009/01/31(土) 01:55:22 ID:???]
>>631

<? // index.php
if ( $_POST['textbox' != '' ) { なんか処理 }
?>
<html><body>
<form action="index.php" method="post>
<input type="text" name="textbox" value=""><input type="submit"
</form>
</body></html>



<? // kanri_index.php
if ( $_POST['textbox' != '' ) { なんか処理 }
?>
<html><body>
<form action="kanri_index.php" method="post>
<input type="text" name="textbox" value=""><input type="submit"
</form>
</body></html>

を作れ



633 名前:nobodyさん mailto:sage [2009/01/31(土) 01:59:14 ID:???]
いやindex.phpでいいだろ

634 名前:nobodyさん mailto:sage [2009/01/31(土) 02:06:10 ID:???]
色んなやり方あるけど初心者だそうだからいちばん新ぷりに

635 名前:nobodyさん [2009/01/31(土) 13:18:26 ID:Zjr5MV5E]
ありがとうございます!ようやくわかった気がします。actionって動作させたいファイル名を指定したらいいんですね。
これでなんとかなりそうです。ありがとうございました!

636 名前:nobodyさん mailto:sage [2009/01/31(土) 19:25:28 ID:???]
prepareの使い方で質問があります。
下記のコードを実行すると
Call to a member function prepare() on a non-object
とエラーが返ってきます。

$sql = "insert into table (column2,column1) values(?,?)";
$sth = $this->db->prepare($sql);
$result = $this->db->execute($sth, array($column2_value,$column1_value));

プレースホルダを使わずqueryを発行すると問題なくdbが更新されるのですが、
どこかおかしいのでしょうか

637 名前:nobodyさん mailto:sage [2009/01/31(土) 19:26:42 ID:???]
すみません、環境書き忘れました。
php5,postgresです

638 名前:nobodyさん mailto:sage [2009/01/31(土) 19:28:26 ID:???]
>636
どのクラスのprepareだよこの馬鹿馬鹿まんこ!

$this->dbが接続失敗か何かで初期化されていないように思われる。

639 名前:nobodyさん mailto:sage [2009/01/31(土) 20:01:51 ID:???]
レスどうもありがとうございます。
そのあたりを探ってみます。


640 名前:nobodyさん mailto:sage [2009/01/31(土) 20:02:31 ID:???]
いや$dbのnewしてるとこ見れば一発だろw

641 名前:nobodyさん mailto:sage [2009/01/31(土) 20:16:52 ID:???]
出来ました。どうもありがとうございます。
さっきのエラーは昔書いたクラスコピペして直したら出なくなったのですが、
dbが更新されなくて悩んでいたら文字コードの違いが原因でした。

mb_convert_encodingで挿入する値をdbの文字コードに直して解決しました。
お世話様でした。

642 名前:nobodyさん [2009/01/31(土) 20:23:42 ID:QDNvJIlq]
sqlite php5 利用です。
登録メールアドレスの重複チェックをしたいのですが、うまく動きません。
if(!$db=sqlite_open("database/database.sqlite",0666,$err)){
die("データベース接続エラー".$err."<br>");
}
////////////////////////////データベース二重登録防止////////////////
$check_sql="SELECT * FROM add_table WHERE add = '$mailadd'";
if($abc = sqlite_query($db,$check_sql)){
header("Location: mail.php?miss=miss&miss_naiyou=sumi");
    //登録済みの場合は飛ばす
}
sqlite_close($db); //データベースクローズ



643 名前:nobodyさん mailto:sage [2009/01/31(土) 20:26:51 ID:???]
>>642
jp2.php.net/sqlite_query

644 名前:nobodyさん [2009/01/31(土) 20:31:10 ID:lgngjuqH]
<?php
$temp = "epg.2ch.net/tv2chwiki/subject.txt";
$html_f=file_get_contents($temp);
$br = "<br />";
$replace = "(2)";
$word = str_replace($replace, $br, $html_f);
$replace = ".dat<>";
$word = str_replace($replace, $br, $word);
$replace = "res/min";
$word = str_replace($replace, $br, $word);
$replace = "] ";
$word = str_replace($replace, $br, $word);
$a = explode( "<br />", $word );
$b[0]= "g";
print $a[2]; print $br; //…(1)
print $b[0]; print $br;
$strs[0] = "srename :"+ $a[2] +",";//…(2)
$strs[1] = $b[0];
print $strs[0]; print $br;//…(3)
print $strs[1];
?>
出力
[NHK総合]探検ロマン世界遺産
g
0
g


(3)の$strs[0] が0になってしまうのはなんでですか?
おねがいします。

645 名前:nobodyさん [2009/01/31(土) 20:33:43 ID:QDNvJIlq]
>>643
マニュアル見てもさっぱりわかりません


646 名前:nobodyさん mailto:sage [2009/01/31(土) 20:39:00 ID:???]
>>644
+を.にかえてみ

647 名前:nobodyさん mailto:sage [2009/01/31(土) 20:40:47 ID:???]
>>645
じゃ諦めれ

648 名前:nobodyさん mailto:sage [2009/01/31(土) 20:42:10 ID:???]
>>646
おーできました
ありがとうございます!!

649 名前:nobodyさん [2009/01/31(土) 20:59:19 ID:QDNvJIlq]
>>642
解決しました。
if(sqlite_fetch_array(sqlite_query($db,$check_sql))){
header("Location: mailmagazine.php?miss=miss&miss_naiyou=sumi");
}

>>643
ありがとうございます

650 名前:nobodyさん mailto:sage [2009/02/01(日) 21:04:08 ID:???]
質問です
elseif (preg_match("/^\d{8}$/", $_GET["id"])){
$id = $_GET["id"];
}
GETで8桁の数字のみ受け取るように↑のようにしましたが
if文でマッチしてても変数に代入する際はpreg_matchなりで
GET変数内を数字のみとなるように変換した方がいいものなんでしょうか

651 名前:nobodyさん mailto:sage [2009/02/01(日) 21:10:26 ID:???]
お前は何を言ってるんだ

652 名前:nobodyさん mailto:sage [2009/02/01(日) 21:11:12 ID:???]
>650
俺ならctype_digit($str) && strlen($str) === 8
まあそれはそれとして、別にいいんじゃね。その正規表現にマッチしてるなら間違いなく数字だけだし。



653 名前:nobodyさん mailto:sage [2009/02/01(日) 21:16:32 ID:???]
末尾の$は改行にもマッチするから数字だけとは限らないんじゃ?

654 名前:nobodyさん mailto:sage [2009/02/01(日) 22:42:37 ID:???]
ググってたら遅くなりました
>>652
matchに漏れがなければ問題ないように思たんですが
あげてもらった関数の方が確実 でしょうか
>>653
正規表現はまだよくはわかってないのですがググったところ
\r\nのことでしょうか。
scripting.cocolog-nifty.com/blog/2008/12/post-c9b4.html
ここを参考に一応"/^\d{8}\r?$/"としてみましたが
>hoge$に掛かりません
の理屈が今一わかりません。

655 名前:650 mailto:sage [2009/02/01(日) 22:56:05 ID:???]
よく考えたら\rが混じる時点で正常なデータではないので
もとの"/^\d{8}$/"で問題なしな気がしますがどうなんでしょう


656 名前:652 mailto:sage [2009/02/01(日) 23:22:37 ID:???]
重視したのは分かりやすさ。正規表現だと、何を意味しているのか分かりづらい。
パターンがよほど複雑な時以外は正規表現は避けたほうがいい。

>653-654
改行とか忘れてたわ。
if(preg_match("/^\d{8}$/", "12345678\n")){
 echo 'match';
}

657 名前:nobodyさん mailto:sage [2009/02/03(火) 00:43:02 ID:???]
半年ロムってろと言われてずっと見てきたが
もうPHP諦めることにした。さっぱり分からん。

このスレのどこが超初心者用なんだ。

658 名前:nobodyさん mailto:sage [2009/02/03(火) 01:51:58 ID:???]
3年ROMってろ

659 名前:nobodyさん mailto:sage [2009/02/03(火) 02:00:14 ID:???]
もう、諦めたんだ放って置いてくれw
プログラムなんて嫌いだ。

660 名前:nobodyさん mailto:sage [2009/02/03(火) 09:47:26 ID:???]
何が分かんないんだよ

661 名前:nobodyさん mailto:sage [2009/02/03(火) 10:34:27 ID:???]
放っておいてやれよ

662 名前:nobodyさん mailto:sage [2009/02/03(火) 14:10:58 ID:???]
なんか残念だな...。

このスレだけ読み続けても、超初心者が分かるようにはならないと思う。
このスレは、超初心者も質問していいというだけで、来る質問が全部、
超初心者向けというわけではないから。

もう見てないかもしれないけれど、入門書を図書館とかで借りてきたほうが
いいと思うよ。




663 名前:nobodyさん mailto:sage [2009/02/03(火) 14:18:03 ID:???]
PHPなんってググって触ってみりゃ、どうにでもなるものを、
半年もROMってわからないなんて、ネタに決まってるだろ
もしネタじゃないなら、10年はROMるべき。
そうして人生が終わるさ

664 名前:nobodyさん mailto:sage [2009/02/03(火) 20:28:48 ID:???]
人生も諦めたらスッキリするのに

665 名前:nobodyさん mailto:sage [2009/02/04(水) 06:33:54 ID:???]
>>664
全く原因が分からないのでお聞きしたいのですが…

$im=createimagefromjpeg(image.jpg);
imagejpeg($im);
destroy

上記の様な単純な記述で画像を開きたいのですが、
ローカルならできるのになぜかインターネット経由だと
できないのです…
実行すると半角で「リ」と表示されるだけで
print hoge;などを付け足しても何もかわりません

phpinfoでGDが使えることは確認したのですが、
他に原因が思いつきません
初心者丸出しすいませんが教えていただければ尻丸出しにしますのでどうかお願いします

666 名前:nobodyさん mailto:sage [2009/02/04(水) 06:34:18 ID:???]
>>664
全く原因が分からないのでお聞きしたいのですが…

$im=createimagefromjpeg(image.jpg);
imagejpeg($im);
destroy

上記の様な単純な記述で画像を開きたいのですが、
ローカルならできるのになぜかインターネット経由だと
できないのです…
実行すると半角で「リ」と表示されるだけで
print hoge;などを付け足しても何もかわりません

phpinfoでGDが使えることは確認したのですが、
他に原因が思いつきません
初心者丸出しすいませんが教えていただければ尻丸出しにしますのでどうかお願いします

667 名前:nobodyさん mailto:sage [2009/02/04(水) 06:50:26 ID:???]
image.jpgがないんでね?

668 名前:nobodyさん mailto:sage [2009/02/04(水) 08:17:43 ID:???]
>>666
MIMEヘッダー出してる?

669 名前:nobodyさん mailto:sage [2009/02/04(水) 10:03:22 ID:???]
ああそれだな

670 名前:nobodyさん mailto:sage [2009/02/04(水) 17:18:03 ID:???]
>>667
確かにファイルは存在しています・・・
>>668
MIMEヘッダーは
header("content-type: image/jpeg");
で出力できてますでしょうか?
ご指摘の後にこれを追加してやってみてのですがだめでした。
ただ、文字化けのような表示から画像を表示できていないマーク?
のような表示にはかわりました・・・

671 名前:nobodyさん mailto:sage [2009/02/04(水) 17:25:29 ID:???]
>>670
imagecreatefromjpeg
にしてみたら?
それで、$imがfalseになってないかチェック
それから、imageやheaderを出力する前に余計な出力をしないように、ソースの冒頭でob_startして、直前で破棄



672 名前:nobodyさん mailto:sage [2009/02/04(水) 17:39:12 ID:???]
ところで皆さんPHPとMYSQLは勉強し始めて
どれくらいの期間で使えるレベルになりましたか?



673 名前:nobodyさん mailto:sage [2009/02/04(水) 17:41:17 ID:???]
使うだけなら書籍読みつつ1日でカバーできる範囲
使いこなすまでは相当かかったが

674 名前:nobodyさん mailto:sage [2009/02/04(水) 17:50:34 ID:???]
>>670
「image.jpg」→「"image.jpg"」

675 名前:nobodyさん mailto:sage [2009/02/04(水) 18:10:51 ID:???]
"imagejpg"になってたりするのか

676 名前:nobodyさん mailto:sage [2009/02/04(水) 18:32:32 ID:???]
そもそもcreateimagefromjpegなんて標準関数はないわけだが
imagecreatefromjpeg(string $filename)ならあるけど

677 名前:nobodyさん mailto:sage [2009/02/04(水) 18:33:11 ID:???]
単純にサーバにGDライブラリがはいってないだけなんじゃね?
phpinfoみてみれ

678 名前:nobodyさん mailto:sage [2009/02/04(水) 18:37:31 ID:???]
>>677
>>666

679 名前:nobodyさん mailto:sage [2009/02/04(水) 18:37:52 ID:???]
>>676
>>671

680 名前:nobodyさん mailto:sage [2009/02/04(水) 18:38:31 ID:???]
書いたとおりに載せないで情報小出しにしてる時点でもう答えようがない

681 名前:nobodyさん mailto:sage [2009/02/04(水) 18:38:39 ID:???]
要するに釣り

682 名前:666 mailto:sage [2009/02/04(水) 20:04:43 ID:???]
お騒がせ致しました

釣りではないのです

広告自動表示のレンタルサーバーを使用していたためにうまくいかなかったようです

広告無しのサーバーでは問題なく表示できました。

ありがとうございました




683 名前:nobodyさん mailto:sage [2009/02/04(水) 22:08:23 ID:???]
広告自動挿入のサーバーだと
ヘッダー情報ってだめなの?

684 名前:nobodyさん mailto:sage [2009/02/04(水) 22:09:01 ID:???]
PHPの講師やりたいんだけど、
どこの学校がおすすめ?

685 名前:nobodyさん mailto:sage [2009/02/04(水) 22:31:36 ID:???]
学校行ってまでPHP学びたいと思うか?

686 名前:nobodyさん mailto:sage [2009/02/04(水) 22:37:41 ID:???]
>>685
だって一日で20万もらえるってよ
バカらしくてコーダーなんかやってられないよ

687 名前:nobodyさん mailto:sage [2009/02/04(水) 22:41:25 ID:???]
SQL(SQLite)なんですが単対多のデータを取得したら
|A|a|1|
|A|a|2|
|A|b|1|
|A|b|2|
|B|c|1|
|B|d|1|
みたいになるじゃないですか。
重複した項目をまとめて(A,(a,b),(1,2)),(B,(c,d),1)な感じにする関数てあるんでしょうか。


688 名前:nobodyさん mailto:sage [2009/02/04(水) 22:46:57 ID:???]
>>685
pdoj.wordpress.com/2009/02/04/fetch-modes/

とりあえず翻訳やってみたけど、どう?

689 名前:nobodyさん mailto:sage [2009/02/04(水) 22:50:36 ID:???]
>>687
pdoとかMDBとかにあるよ
sqliteは知らんけど

690 名前:nobodyさん mailto:sage [2009/02/04(水) 22:52:37 ID:???]
>>688
ドキュメントの翻訳で「〜と思う」なんて普通使わない

691 名前:nobodyさん mailto:sage [2009/02/05(木) 00:20:18 ID:???]
>>689
ありがとうございます。
探したらfetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP)がそれらしいです。
ただマニュアルの例で例えると
array(3) {
["apple"]=>
array(2) {
[0]=>
string(5) "apple"
[1]=>
string(5) "apple"
}
みたいな感じにカラム0の値しか取得できてないようです。
自分がどこか間違ってるのかSQLiteが対応してないのか...
もう少し試してみます。

692 名前:nobodyさん mailto:sage [2009/02/05(木) 00:47:17 ID:???]
>>691
ほい
jp2.php.net/manual/ja/pdostatement.fetchall.php



693 名前:nobodyさん mailto:sage [2009/02/05(木) 00:49:12 ID:???]
$str = '4,980 円';

↑みたいなフォーマットの価格データを整数値にしたいんだけど
↓よりシンプルにやる方法ってある?

$str = str_replace(array(' ', ',', '円'),array('', '', ''),$str);

694 名前:nobodyさん mailto:sage [2009/02/05(木) 00:51:20 ID:???]
$str = (int)str_replace(',','',$str)

695 名前:nobodyさん mailto:sage [2009/02/05(木) 00:54:43 ID:???]
ありがとうg

696 名前:nobodyさん mailto:sage [2009/02/06(金) 21:22:00 ID:???]
>>692
MySQLでも試してみたのですが結果は同じでサンプルのような結果にならないのですが
どこか捉え違いしているのでしょうか。
PHP 5.2.6/MySQL 5.0.4
|apple|red|
|banana|yellow|
|apple|green|
という内容として、
$dbh = new PDO('mysql:〜','root','root');//もしくは'sqlite:〜'
$sql = "SELECT name,color FROM table1";
$sth = $dbh->prepare($sql);
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP,0);
var_dump($result);
$stmt = null;
結果
array(2) {
["apple"]=>
array(2) {
[0]=>
string(5) "apple"
[1]=>
string(5) "apple"
}
["banana"]=>
array(1) {
[0]=>
string(6) "banana"
}
}
となります。

697 名前:nobodyさん mailto:sage [2009/02/06(金) 21:29:26 ID:???]
サンプルのような結果と言われても、サンプルのような結果がどんなもんだかわからんからね。

とりあえず、FETCH_GROUPなんだし、結果が正しいように思うが?

698 名前:nobodyさん mailto:sage [2009/02/06(金) 21:34:36 ID:???]
まぁ、試しに
PDO::FETCH_COLUMN|PDO::FETCH_GROUP
じゃなく
PDO::FETCH_ASSOC|PDO::FETCH_GROUP
にしてみたら?

699 名前:nobodyさん mailto:sage [2009/02/06(金) 21:39:06 ID:???]
>>697
失礼、サンプルは>>692にもあるPDOStatement->fetchAllの例3です。
期待した結果は
["apple"]=>
array(2) {
[0]=>
string(5) "red"...
なんですが、>>696が正しいということはやっぱりなにか勘違いしてるのかなぁ

700 名前:nobodyさん mailto:sage [2009/02/06(金) 21:43:25 ID:???]
あぁそれか、fetchAllの第2引数に0が入ってるじゃん、だから、カラムが制約されてる
それ、外したらどうなる?


701 名前:nobodyさん mailto:sage [2009/02/06(金) 21:48:42 ID:???]
array(2) {
["apple"]=>
array(2) {
[0]=>
string(3) "red"
[1]=>
string(5) "green"
}
["banana"]=>
array(1) {
[0]=>
string(6) "yellow"
}
}

になったけど

702 名前:nobodyさん mailto:sage [2009/02/06(金) 21:49:22 ID:???]
ああすまん本人じゃなくて俺の環境でやったらってことね




703 名前:nobodyさん mailto:sage [2009/02/06(金) 22:07:01 ID:???]
>>700
あれ?どうも。0がなくてもうまく取得できなかった気がしたんですが
今0を外したらPDO::FETCH_ASSOC|PDO::FETCH_GROUP同様うまくいきました。
|PDO::FETCH_GROUPがついたときは第2引数で指定したPDO::FETCH_COLUMNを基準に
グループ化するのかと勘違いを…
実際は複数のカラムが必要なのでPDO::FETCH_NUM|PDO::FETCH_GROUPで
思った通りの結果が得られるようになりました。ありがとうございました。
>>701も確認ありがとうございます。

704 名前:nobodyさん mailto:sage [2009/02/06(金) 22:11:15 ID:???]
fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP,0); で普通に取得できたが?
後進のために原因を明らかにしといてくれ

705 名前:nobodyさん mailto:sage [2009/02/06(金) 22:21:43 ID:???]
>>704
もし、第2引数に0が入ってても第2カラムを取得できたんならバグだと思うよ

706 名前:nobodyさん mailto:sage [2009/02/06(金) 22:26:54 ID:???]
お前は何をいっちょるんだ?
第2引数に0を入れるということは1番目のCOLUMNを用いて残りのカラムをGROUP化するってことだぞ

707 名前:nobodyさん mailto:sage [2009/02/06(金) 22:29:53 ID:???]
>>778
何も問題ないが

708 名前:nobodyさん mailto:sage [2009/02/06(金) 22:30:55 ID:???]
すまん誤爆した

709 名前:nobodyさん mailto:sage [2009/02/06(金) 22:57:48 ID:???]
>>706
デマ書いてすまん、よくわかってなかった。
そのはずだよねぇ。

710 名前:nobodyさん mailto:sage [2009/02/08(日) 19:09:17 ID:???]
<?php
try {
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");

fntest();
function fntest() {echo "call function";}

} catch (ErrorException $exception){
echo "何かエラーだよ<br />";
echo $exception->getMessage()."<br />";
echo "line:".$exception->getline();
exit();
}
?>
これを実行するとFatal error: Call to undefined function fntest() in〜と出ます
定義を先にするかtry〜catchをなくすとエラーは出ません
何がいけないんでしょうか


711 名前:nobodyさん mailto:sage [2009/02/08(日) 19:26:17 ID:???]
定義が後でtry〜catchの中だからでは?

712 名前:nobodyさん mailto:sage [2009/02/08(日) 20:00:14 ID:???]
>>711
まんまやん というかだめなんですか?
>次の二つの例のように、ある条件下でのみ関数が定義される場合には、その関数定義は関数がコールされる前に行われていなければなりません。
に当てはまるということでしょうか
とりあえずそういうものだということで前方で定義するようにします



713 名前:nobodyさん mailto:sage [2009/02/08(日) 20:00:15 ID:???]
>>710
いったいどうしたらそういう書き方ができるのか知りたいわ

714 名前:nobodyさん mailto:sage [2009/02/08(日) 20:35:03 ID:???]
Perlから入った奴なんかはそういう書き方をする事があるな。
Perlは書き方によっては、関数の宣言や定義より先に呼び出しが来てもちゃんと動く。

715 名前:nobodyさん mailto:sage [2009/02/08(日) 21:05:08 ID:???]
PHPだって、パース対象がグローバルなら、普通にfunctionの後置定義は有効だよ。
ifやwhileやtryやfunctionの中などの節の中は後置できないだけ。

>>710なんてそんなの百も承知で釣り質問してるに決まってるだろ。
釣られてへぼい回答してんじゃねぇぞ

716 名前:nobodyさん mailto:sage [2009/02/08(日) 21:07:39 ID:???]
ツン?

717 名前:nobodyさん mailto:sage [2009/02/09(月) 00:04:48 ID:???]
PHPとMySQLで学習用のWEBシステムを作っているのですが

' % 等のDBにとっては迷惑な文字列が入力された場合に、それとHTML上の特殊文字に変換する
にはどうすれば良いですか?

簡単な掲示板を作ったのですが' %が入力された場合にエラーが発生し困っています。


718 名前:nobodyさん mailto:sage [2009/02/09(月) 00:12:47 ID:???]
基礎中の基礎すぐる

719 名前:nobodyさん mailto:sage [2009/02/09(月) 08:41:31 ID:???]
>>717
mysql_real_escape_string
addslash


720 名前:nobodyさん mailto:sage [2009/02/09(月) 08:53:51 ID:???]
addslash ? syntax error

721 名前:nobodyさん mailto:sage [2009/02/09(月) 09:16:28 ID:???]
データーベースにデーターをつっこむ直前に
データーベース専用のエスケープ処理をするのが普通

722 名前:nobodyさん mailto:sage [2009/02/09(月) 09:20:54 ID:???]
データー(笑)



723 名前:nobodyさん mailto:sage [2009/02/09(月) 21:42:26 ID:???]
>717
使える箇所ならプリペアドステートメント。これが一番安全。
ttp://jp2.php.net/manual/ja/mysqli.prepare.php
ttp://jp2.php.net/manual/ja/pdo.prepare.php

使えない箇所ならmysql_real_escape_stringなど。
どの文字が危険かはDBによって違うので、MySQLにはMySQLの、OracleにはOracleの、SQLiteにはSQLiteの専用の関数がある。

724 名前:nobodyさん mailto:sage [2009/02/11(水) 12:21:22 ID:???]
htmlの<base>のようにユーザのトップディレクトリを指定したいんですが、
ユーザのトップディレクトリを調べる方法はありますか?


725 名前:nobodyさん mailto:sage [2009/02/11(水) 13:56:50 ID:???]
環境は?OSとか

726 名前:nobodyさん mailto:sage [2009/02/11(水) 14:12:44 ID:???]
>>725
ああすみません。
開発環境はPHP5.2.6でOSXなんですがWebサーバはまだ借りてないのでどうなるかはわかりません。
PHP5でApachサーバのところを借りようとは思ってます。
なので開発環境との違いや引っ越し時のことを考えて汎用的な関数がないかと質問しました。
一応マニュアルのファイルシステム関数は目を通したんですが…

727 名前:nobodyさん mailto:sage [2009/02/11(水) 14:24:23 ID:???]
exit()ってスクリプト終了のために多用してもいいのでしょうか?
たとえばエラーチェック時にdieの代わりに自作関数呼び出して終了みたいな場合など

function return_json($flag, $data){
 if($flag == true)
  $result = $data;
 else
  $result = "ERR:".$data;
 $res = array(
  "status" => $flag,
  "result" => $result );
 print(json_encode($res));
 exit();
}

if(エラーチェック1) return_json(false,"エラー1です"); //エラーなら終了

if(エラーチェック2) return_json(false,"エラー2です"); //エラーなら終了

//最後に
return_json(true,"成功です。");

728 名前:nobodyさん mailto:sage [2009/02/11(水) 14:33:34 ID:???]
別にいいんでは?

729 名前:nobodyさん mailto:sage [2009/02/11(水) 15:13:35 ID:???]
関数はあくまで何かを返すだけにして、制御を握っているのは「メインのルーチン」ひとつにした方がいい。
あちこちの関数で好き勝手に処理を中断したり画面出力してたりすると、そのうち管理しきれなくなる。
同じ理由で、printするよりは文字列を返す(printは「メインのルーチン」で行なう)方がいいと思う。

俺ならreturn_json()はjsonを返すだけ(exitもprintもしない)にして
function generare_json(){
 if(isError1()){
  return return_json(false,"エラー1です");
 }
 if(isError2()){
  return return_json(false,"エラー2です");
 }
 return return_json(true,"成功です。");
}
とし、echo generate_json()を最後に呼び出す。
exit()はスクリプトの末尾のみ、出力はこの文のみになる。

730 名前:nobodyさん mailto:sage [2009/02/11(水) 15:20:37 ID:???]
つうか、正しいjson出力とエラー出力を別の関数にするかな。
boolを渡すより、return_error_json()の方が分かりやすい。

731 名前:nobodyさん mailto:sage [2009/02/11(水) 15:23:03 ID:???]
>>719
ヒントをサンクス。

>>723
詳しいありがとうございます。
参考にさせて頂きます。

732 名前:nobodyさん mailto:sage [2009/02/11(水) 17:07:46 ID:???]
>>726
ああもしかして、http://〜/~user/ の部分の実ディレクトリが知りたいってこと?



733 名前:nobodyさん mailto:sage [2009/02/11(水) 17:30:07 ID:???]
実ディレクトリでいいのかな?ローカルでいえば
/Applications/MAMP/htdocs/
となります。
実行ファイルがトップにあるわけではないので相対パスでのファイル指定より
基点からの絶対パスのほうがわかりやすいかなと。

734 名前:724,733 mailto:sage [2009/02/11(水) 17:31:27 ID:???]
>>732
アンカーわすれてたので念のため

735 名前:nobodyさん mailto:sage [2009/02/11(水) 17:45:24 ID:???]
>>733
dirname(__FILE__) とか getcwd() とか

そういうこと?

736 名前:nobodyさん mailto:sage [2009/02/11(水) 17:47:36 ID:???]
>>733
$_SERVER['DOCUMENT_ROOT']

737 名前:nobodyさん mailto:sage [2009/02/11(水) 18:00:00 ID:???]
ユーザー関係ないじゃんw

738 名前:724,733 mailto:sage [2009/02/11(水) 19:15:46 ID:???]
>>735,736
$_SERVER['DOCUMENT_ROOT']で希望のパスを得ることができました。
ありがとうございました。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<180KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef