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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/07/23(日) 20:00:03ID:???
PHPに関するくだらねぇ質問用スレです。
ここならお前の下らない質問に回答があるかも知れません。

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

過去スレは>>2
0266nobodyさん2006/07/28(金) 07:59:42ID:???
DBに入れる前(フォームから投稿された直後)と、
DBから取り出した後(HTMLで表示する直前)、
この2回のタイミングでhtmlspecialcharsをかけると・・・
0267nobodyさん2006/07/28(金) 08:00:50ID:???
>>266
普通だろ?何か問題あるか?
0268nobodyさん2006/07/28(金) 08:04:20ID:???
>>266
なぜ、2回実行する?
一度で十分だと思うが。
0269nobodyさん2006/07/28(金) 08:04:27ID:???
>>266
> DBに入れる前(フォームから投稿された直後)と、
マテ。DBに入れる前に何故htmlspecialcharsなんてかけるか。

フォームから投稿
→確認ページでhiddenにセットするときにhtmlspecialchars
→再投稿(アンエスケープされた状態になる)
→そのままDBに格納

でいいだろが。
0270nobodyさん2006/07/28(金) 09:56:54ID:???
>>259
投稿内容をhiddenに埋め込むなよ
ローカルからでも他サーバからでも勝手に自由なデータを投稿されるぞ
0271nobodyさん2006/07/28(金) 09:59:52ID:???
>>243
なるほど。ありがとうございます。
ちなみにC言語はやったことがないので、違いを認識することはできません。

そのページの著者の予定では、C言語をやったことがない人は罠には引っかからないはずなんだけど、
fgetsのマニュアルのページで、4096バイトずつとりだすやり方のみ例文となっており、
Lengthを指定しない形での例がないことから、
そのままそこに載っているバイト指定で取り出すルーチンを使ってしまうという結果になってました。

これはC言語をやったこがある人ならば、その注意書きにより気づくかもしれませんが、
やったことがない人は何の疑問も抱かずその例1のルーチンをそのまま使う罠にはまりやすいと思います。
0272nobodyさん2006/07/28(金) 10:09:38ID:???
>>271
オマエだけ
他人のルーチンを理解せずそのまま使う方が悪い
普通はどういう処理をしてるか理解して、自分が望む処理でない場合は修正してから使うもんだ
0273nobodyさん2006/07/28(金) 10:42:36ID:???
>>270
そんなことはないだろ
0274nobodyさん2006/07/28(金) 10:49:50ID:???
>>270
Yahooでもhiddenで持たせてるんだが、キミはどうやって埋め込んでるんだ?
全部セッションとか?w
0275nobodyさん2006/07/28(金) 10:50:41ID:???
Webページの構成は フレーム分割をしており、上と下の2段構成です

上のページは「フォーム認証」画面
認証後、下のページに「正」ならA.html、「誤」ならB.html

と表示させたいのですが、上手くいきません
PerlではWindow-taegetなる関数があるのでPHPでやってみたのですが無駄でした
どのような方法がありますでしょうか?おながいしまつ

//現状のソース
switch($userExists[0]) {
case 1:
 $_SESSION['username'] = $username;
  header('Location: MAIN.html Window-target:right');
   break;
   default:
  header('Location: ERROR.html Window-target:right');
}
0276nobodyさん2006/07/28(金) 10:56:13ID:???
>>270
確認画面のhiddenで勝手な投稿がされてしまうんなら、
元々の投稿フォームだって勝手な投稿ができちゃうってば。
内部データを外に出してるわけじゃないんだよ?
0277nobodyさん2006/07/28(金) 11:04:25ID:???
>>274
わかった、きっと仮投稿段階ですでにDB上にデータを置いてだな、
それを認証する形なんじゃないか?
で、一定時間を過ぎて認証がなされなかった仮投稿データは破棄される…と。
マンドクセー
0278nobodyさん2006/07/28(金) 11:06:51ID:???
>>271
> fgetsのマニュアルのページで、4096バイトずつとりだすやり方のみ例文となっており、
> Lengthを指定しない形での例がないことから、
君は大きな思い違いをしている。
今回の問題はEOFの認識の問題であってLengthなんて「全く」関係ない。

> これはC言語をやったこがある人ならば、その注意書きにより気づくかもしれませんが、
C言語とか関係なく、例では無条件に全ての結果をechoで表示してる(これは最後に空行を出力する)を、
君が何の疑問も抱かずにそのまま配列に格納するよう改造してしまっただけの話。
単に、君が関数の説明文の意味を理解できてないだけ。
自分で解釈せず、何でもコピペで済ますからそうなる。

マニュアルの例文は、実際に実行してみればファイルに存在しない空の1行を出力するので、
EOFの扱いとfgetsの挙動について理解しやすいものとなっている。
それを実際に試しもしないで使う方が悪い。
0279nobodyさん2006/07/28(金) 11:18:33ID:???
>>275
> PerlではWindow-taegetなる関数がある
そんな関数は無いよ。Window-targetってのはHTTPヘッダの1種。
header('Location: MAIN.html');
header('Window-target: right');
という風にすれば使える。
でもこれIEでも使えるんだっけ?Netscape独自拡張だと思ってたけど。

> どのような方法がありますでしょうか?おながいしまつ
上のフォームで<form action="〜" target="right">と指定するだけ。
0280nobodyさん2006/07/28(金) 11:23:24ID:???
>>271
>>233のソースではfgetsでバイト指定してない件について
0281nobodyさん2006/07/28(金) 11:23:45ID:???
>>279
できました!!
非常に簡潔な文面、感謝です
0282nobodyさん2006/07/28(金) 12:19:19ID:???
>>278
まあいままでファイル全部を書き直す場合があるのは、
任意行の削除と、任意行のデータ変更のみで、
この場合、配列の最後にstring評価した場合の空文字が入っていても、
echo ""; が実行され、ファイルには何の影響も与えず、
結果的にまったく動作に問題なかったため気づきませんでした。
0283nobodyさん2006/07/28(金) 12:41:41ID:???
ウオおオオマニュアルに繋がらねぇぇっぇぇ
0284nobodyさん2006/07/28(金) 12:50:34ID:???
>>282
なかなか大した量の経験ですね。
02852352006/07/28(金) 13:03:50ID:brf1+TV+
>>237さん
ありがとうございます。
無事、意図した動作をするようになりました。
経験豊富な貴方みたいな方に教わりたかた
0286nobodyさん2006/07/28(金) 13:06:06ID:???
ttp://jp.php.net/manual/ja/
こっちはつながるよ
0287nobodyさん2006/07/28(金) 13:10:00ID:???
>>286
サンクス
0288nobodyさん2006/07/28(金) 14:17:00ID:???
>>269
> →再投稿(アンエスケープされた状態になる)

えっっっ!!!!???? ・・・そうなの!?
エスケープされた状態のデータをhiddenで埋め込んで再POSTすると
アンエスケープされるなんて、初耳だぞ。
そんなのマニュアルに載ってたっけ??(もしかしてPHPじゃなくてHTTPの話かな?)
0289nobodyさん2006/07/28(金) 14:33:44ID:???
>>283
最新のマニュアルを公式で落としてパッチ当てとけ。
0290nobodyさん2006/07/28(金) 15:02:53ID:???
>>276
少なくとも自動書き込みには対応できるよ
0291nobodyさん2006/07/28(金) 15:08:06ID:???
>>290
出来ない。

hiddenのほうから直接やればいいんだし。
ワンタイムチケットとかRefererチェックやれば対応できるがどちらも一長一短
0292nobodyさん2006/07/28(金) 15:12:10ID:???
自前でアクセス解析作ろうと思うんですが
ログの保存はファイルに書くのとMySQLに入れるのどちらが負荷小さいですか?
0293nobodyさん2006/07/28(金) 15:14:17ID:???
>>292
アクセスログを全て記録しっぱなしでランダムアクセスするならデータベースのが有利だな。
100件とか1000件で固定するならファイルで充分
0294nobodyさん2006/07/28(金) 15:23:15ID:???
入れるだけならファイルが一番負荷小さいだろう
0295nobodyさん2006/07/28(金) 15:36:37ID:???
アクセス解析ならせめて1か月分ぐらいのログは保持したいだろうし
データベースの方がいいんじゃないか。
0296nobodyさん2006/07/28(金) 16:38:07ID:???
あの。ローカルサーバーでメールを配信したりしたいのですが、
どのような設定が必要なんでしょうか。。。?
0297nobodyさん2006/07/28(金) 16:40:22ID:???
$temp_file = md5_file($temp_file);

$temp_file はテンポラリに入っています。書き出す前です。
この様な段階でme5_file する事は無理なのでしょうか?

現在は move_uploaded_file chmod で一度書き出し me5_file した後 unlink で消しています。
この様な面倒な方法以外の方法があればご教示ください。
0298nobodyさん2006/07/28(金) 16:53:52ID:???
>>296
OSは何か言えよ
0299nobodyさん2006/07/28(金) 17:17:42ID:???
>>298
WindowsXPです。
0300nobodyさん2006/07/28(金) 17:19:05ID:???
>>299
まずはググって参考になるサイトでも探した方が有益
0301nobodyさん2006/07/28(金) 19:32:50ID:qH9kRSG5
やりたい事は、セカンドメールサービスのようなもので、
登録したユーザー同士でセカンドメールを与えるという物です。

[email protected]に[email protected]
[email protected]に[email protected]を与え、

[email protected]から[email protected]宛てに送られたメールを
From: [email protected]として、[email protected]に送るような感じです。
1対1のメーリングリストのようなイメージです。

環境は、mod-perl+MySQL+qmail+vpopmailで、vpopmailのユーザー管理はMySQLにしています。

現在はSubjectに送りたい方のidを入力してもらって、[email protected]を窓口にして転送してます。
パイプでperlに標準入力としてメールを渡し処理しています。

もっと直感的なシステムを作りたく、ご相談します。
こういう場合、各ID毎のメールアカウントを作る必要はないのでしょうか?
03023012006/07/28(金) 19:33:57ID:qH9kRSG5
スレ違いでした。すいません。<(_ _)>
0303nobodyさん2006/07/28(金) 20:27:58ID:???
掲示板みたいに投稿してもらうシステムで、
投稿内容に半角英数字で途切れない長い一文(たとえば長いURLなど)があると、
それをテーブルで表示したときにピクセル指定してあるテーブルの幅で自動改行されずに
どこまでも延びていってしまい、レイアウトが崩れます。

英数字だけならchunk_splitやwordwrap関数で対処できるのですが、
日本語も混じっている文章の場合だと、それらの関数では文字化けしてしまいます。
この場合どうやって一行の長さを制御すれば良いのでしょうか?
0304nobodyさん2006/07/28(金) 20:37:06ID:???
>>303
どの程度のレベルでやりたいのかは知らないけど、
一文字づつ走査していきつつ、
半角か?全角か?
半角から全角に(全角から半角に)文字が変わったか?
スペース(全角含む)か?
を調べ、文字列に追加していけばいいんじゃない?
0305nobodyさん2006/07/28(金) 20:51:29ID:???
<?php
 フォルダからファイル名と数の取得
 ファイル数が0ならこれより下の処理を行わない
 ファイルの処理
?>

このような順番で処理を行いたいのですが、


if(!ファイル数==0){
ファイルの処理
}

でもいいと思うのですが、

”ファイル数が0ならこれより下の処理を行わない”
ここはどんな命令を書けばいいでしょうか?

関数内ではないのでreturnはつかえないですし、
caseでもないのでbreak文もつかえないみたいです。
0306nobodyさん2006/07/28(金) 20:52:09ID:???
>>304
え〜、そこまで回りくどい方法でやらないと実現できないのかな?
逆にPHPで解決するんじゃなくて、HTMLやCSSのレベルで解決できないもんかな。

ミクシィの日記とかはしっかりテーブルの幅で英数字が自動改行されるけど、
あれはどうやって実現してるのだろうか・・・。
0307nobodyさん2006/07/28(金) 20:56:34ID:???
>>306
みくしのがhtmlやcssならソースみればわかるんじゃない?
0308nobodyさん2006/07/28(金) 20:58:22ID:???
>>305
そこでスクリプトが終わりでいいなら、
if(ファイル数==0){
Exit;
}
0309nobodyさん2006/07/28(金) 20:59:49ID:???
>>308
ありgと
0310nobodyさん2006/07/28(金) 21:00:35ID:???
exit;
だった。
03113062006/07/28(金) 21:04:51ID:???
自己解決しますた。

td { word-break : break-all; }
0312nobodyさん2006/07/28(金) 21:06:19ID:???
>>311
俺もそれ使わせてもらうぜ
0313nobodyさん2006/07/28(金) 21:44:50ID:???
>>311
なるほど!
おまい・・・じゃないか、mixiて頭いいな!
0314nobodyさん2006/07/28(金) 22:08:46ID:???
>>313
別にmixiが考えたわけじゃないけどな。
「word-break」でググってみるべし。
0315nobodyさん2006/07/28(金) 22:13:44ID:???
>>300
すみません、探しているのですが何をすればよいのか
0316nobodyさん2006/07/28(金) 22:21:20ID:???
>>315
まずさ、PHPでメールを送信ってことになると、メールサーバに送信を依頼するわけだ。
という事はまずメールサーバをたてなきゃならない。
でも、ここはPHPスレだ。分かるな?

まぁ、とりあえずメールサーバをたてる説明が載ってる簡単な解説本買ってきたほうが良いんじゃないか?
0317nobodyさん2006/07/28(金) 22:25:10ID:???
メール→メールサーバー→他のアドレスにメールが届く

という仕組みなんですか?
0318nobodyさん2006/07/28(金) 22:29:42ID:???
あ!つまり、Outlookと同じ設定すればよいのですね!
0319nobodyさん2006/07/28(金) 22:32:20ID:???
>>318
一行なので斜め読みが出来ませんが・・・
0320nobodyさん2006/07/28(金) 22:35:41ID:???
>>317
つまり、メールサーバーのヘルプを読まなきゃいけない。分かるな?
0321nobodyさん2006/07/28(金) 22:47:26ID:???
>>320
メールサーバーはYahooでも良いのでしょうか?
0322nobodyさん2006/07/28(金) 22:51:07ID:???
; For Win32 only.
SMTP = smtp.mail.yahoo.co.jp
smtp_port = 25

; For Win32 only.
sendmail_from = *****@yahoo.co.jp

とすると、

SMTP server response: 521 smtp.mail.yahoo.co.jp closing transmission channel. You must be pop-authenticated before you can use this smtp server,
and you must use your yahoo mail address for the Sender/From field. in

と返ってきました。Yahooじゃだめなんですね・・・。
0323nobodyさん2006/07/28(金) 23:30:55ID:???
2chと同じトリップの出し方はどうすれば良いですか?
0324nobodyさん2006/07/28(金) 23:31:57ID:???
>>321
つまり、メールサーバでぐぐらなきゃいけない。分かるな?

あなたは根本的に調べる努力が足りない。
節度ある人なら、調べてから質問するものだ。
0325nobodyさん2006/07/28(金) 23:37:29ID:???
>>323
これでも参考にしろ:
http://pc8.2ch.net/test/read.cgi/php/1017456911/647-659
0326(^ω^)2006/07/29(土) 00:06:35ID:???
>>322
エラーメッセージの1行目は
http://e-words.jp/w/POP20before20SMTP.html
を参照
0327nobodyさん2006/07/29(土) 00:54:29ID:o/NOOu9z
http://example.com/index.php
ここに、<A href="sample.php">で、
http://example.com/sample.phpへのリンクが貼られますけど、

http://example.com/index.php/hogehoge/
ここに、<A href="sample.php">で、
http://example.com/index.php/sample.phpになってしまいます。

どちらからアクセスしても、
http://example.com/sample.phpへのリンクを貼ることはできないのでしょうか?

また、http://example.com/がhttp://abc.example.com/やhttp://test.example.com/に変わったりを
すること前提でお願いします。(相対パス)
0328nobodyさん2006/07/29(土) 00:55:54ID:???
ンアー ンアー
0329nobodyさん2006/07/29(土) 00:57:30ID:???
>>327
どこにphpが関係するのでしょうか?
0330nobodyさん2006/07/29(土) 00:58:33ID:o/NOOu9z
>>329
<? $_SERVER['PHP_SELF'];?>を使ったり、似たような感じで
0331nobodyさん2006/07/29(土) 01:00:58ID:???
hinto
/
0332842006/07/29(土) 01:04:06ID:3hlZJo6T
おしえてください。PHPの初心者ですが、phpからIBM-DB2のデータベース
を使ってwebプログラムを作りたいのですが、設定の方法がわかりません。
WindowsXPProSP2,Apache2,php5.1,を使っています。php.iniとhttp.confを
いじるのでしょうか?その手のsiteの情報でもかまいません。お願いします。
0333nobodyさん2006/07/29(土) 01:05:53ID:???
>>332
PHP DB2 でググってから来た?
0334nobodyさん2006/07/29(土) 01:13:23ID:???
何事にもググれググれいうやつ多すぎ
ググって参考になるサイトがなかったから書き込みしてるんだろ
0335nobodyさん2006/07/29(土) 01:15:18ID:3fQzY82m
.txt内で変数指定してそのままphpに持ち込むことってできる?
0336nobodyさん2006/07/29(土) 01:16:11ID:???
>>334
ググり方が悪い
0337nobodyさん2006/07/29(土) 01:20:50ID:???
俺は2chで質問なんかしたことなんか一度も無いけどね
PEARとか文献少なくて苦労したけど、ソース読めば分かるしね
0338nobodyさん2006/07/29(土) 01:20:59ID:???
>>334
はぁ? ググったら DB2 知らん俺にもすぐ出来そうだったぞ。
ググって分かりそうだからググれって書いたまでだ。
情報検索能力を磨け。
0339nobodyさん2006/07/29(土) 01:33:10ID:???
>>337
要するにソース読むのがしんどい時に訊くんだろ
0340nobodyさん2006/07/29(土) 02:30:05ID:???
他人にその労力を押し付けてんじゃねぇ
0341nobodyさん2006/07/29(土) 02:49:30ID:???
>>340
ここはそういうスレだからなぁ。
押し付けられるのがイヤなこのスレに来るんじゃねぇ。

>>332
初心者がどうしてわざわざDB2? 素直にMySQL使いなさい。
0342nobodyさん2006/07/29(土) 03:05:59ID:br9tPqMJ
おれがググレカスと言う時は、明らかにググってないような質問の時だ。
最近特にそんなのが多いな。
0343nobodyさん2006/07/29(土) 03:12:17ID:???
>>342
まあ別にいいじゃん。
初心者はググり方が分からない、または良いググり方を考えるのがめんどくさい時もある。
そんなときの質問スレ。
答えるのは義務じゃないんだから、イヤだったらスルーしれ。
0344nobodyさん2006/07/29(土) 03:25:10ID:???
確かにそうだな〜
くだ質なんだし、マッタリ行こうぜ

ただ、PHPとかじゃなくてプログラミングの仕方が分からないってのはどうしたものかな?
0345nobodyさん2006/07/29(土) 03:39:28ID:???
あとPHP以前にサーバーってなに?通信ってどういう仕組みでやってんの?レベルってのも
どうしたもんか悩んでしまうな。

>>317とか。
0346nobodyさん2006/07/29(土) 03:42:39ID:???
>>288
こんなのもな。PHP以前にHTTPレベルの話。
0347nobodyさん2006/07/29(土) 06:59:35ID:???
>>346
別に「以前」でも「以後」でもないと思うが。
ただ単に種類が違う話なだけで。

そしてWebアプリではHTTPやサーバ周り等も密接に関連するので、このスレで質問してOK。
厳密にPHP以外の話題が来るとすぐに「スレ違い」とか言うヤツはウザい。というか考え方が間違っている。
イヤなら見なけりゃいいのに。
0348nobodyさん2006/07/29(土) 07:09:50ID:???
おk、俺がまとめておく。

ここはPHPスレです。Webアプリ全般や、HTTP等プロトコルレベルの話題はそれらのスレへどうぞ。

ってことだな。
0349nobodyさん2006/07/29(土) 10:01:24ID:???
自作のログファイルは
どうやって作るのでしょうか?

画面に表示させないで
実行結果だけをファイルに出力する方法?
0350nobodyさん2006/07/29(土) 10:07:23ID:???
>>349
デスクトップの何もない部分を右クリックして、
新規作成 → テキスト ドキュメント
を選び、出来たファイルの名前を log.txt にする。
0351nobodyさん2006/07/29(土) 10:32:49ID:???
>>344
PHPどころか、基礎の基礎をすっとばして、いきなり *実用* しようとしている人が増えてきているからじゃないの?
0352nobodyさん2006/07/29(土) 11:04:36ID:???
>>350
ありがとうございます。できました。
0353nobodyさん2006/07/29(土) 13:28:30ID:???
確かに初心者だからこそマニュアルには目を通すべきだな。
最近の人ってマニュアル呼んでないのかな?
03543272006/07/29(土) 13:40:04ID:o/NOOu9z
echo "<A href=\"".str_repeat("../",substr_count($_SERVER['PHP_SELF'],"/")-2)."log.txt\">リンク</A>";

で解決しました。
0355nobodyさん2006/07/29(土) 13:47:31ID:???
>>354
随分面倒くさい解決方法を選んだな
03563272006/07/29(土) 13:48:40ID:o/NOOu9z
>>355
何かもっと良い解決法があるのでしょうか?
0357nobodyさん2006/07/29(土) 13:55:43ID:???
>>356
echo "<A href=\"/log.txt\">リンク</A>";
03583272006/07/29(土) 14:01:05ID:o/NOOu9z
>>357
試してみましたが、どの階層から飛んでも
http://localhost/log.txtに固定されてしまいます。
0359nobodyさん2006/07/29(土) 14:08:41ID:???
>>358
しかしお前はアホだな。
0360nobodyさん2006/07/29(土) 14:14:28ID:???
>>358
>>327ってそういうことじゃないのか??
03613272006/07/29(土) 15:03:05ID:o/NOOu9z
>>360
http://localhost/test/test.php
ここにリンクが貼ってあり、
http://localhost/test/test.php/a/i/u/e/o/
http://localhost/test/test.php/hogehoge/hogehoge/
http://localhost/test/test.php/012/3456789/

どれから飛んでも

http://localhost/test/log.txt

に飛ぶような感じです
0362nobodyさん2006/07/29(土) 15:04:11ID:???
>>361
お前はしね!
0363nobodyさん2006/07/29(土) 15:13:59ID:???
夏だなぁ
0364nobodyさん2006/07/29(土) 15:26:42ID:???
>>348みたいなキモヲタは氏ね!!
この手のバカは、W3CとかGPLとかでも厳密さを求めて大騒ぎするタイプだな。
あ〜〜〜〜〜キモっっっ!!!!!!! こういう宗教の狂信者は氏んだらいいんだよ。

正しくは↓
ここはPHPスレです。Webアプリ全般や、HTTP等プロトコルレベル、データベース、サーバー関係の話題も絡めてどうぞ。
0365nobodyさん2006/07/29(土) 15:28:44ID:???
>>362,364
おまえも十分キモイわけだが
0366nobodyさん2006/07/29(土) 15:36:32ID:???
perl厨だった俺が、(仕事で)phpをやりはじめて数ヶ月…。

で、本スレどこよ?
"php" でこの板を検索するとメッサ出てくるんだが…

あと、クライアントの都合で Windows 環境でも動作するもの作るときあるんだけど、
http://www.php.net/download-docs.php ここにある、chm の文字化けなんとかならんのか?
以前、php-docs ML に話題に上っていたけど…。

あとさぁ…配列で戻り値返す関数、こういう使い方できないのね
$child = hoge( $sexmachine )[ 'oral' ]

仕事上、perl <---> php を行ったり来たりするから、混乱してかなわん
■ このスレッドは過去ログ倉庫に格納されています