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

【PHP】質問スレッドpart31【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/11/27(日) 00:07:12ID:eBvjdczp
PHP全般の質問スレです。
【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。

過去スレ、関連リンク、FAQ等>>2-10辺り
0478nobodyさん2005/12/14(水) 14:35:39ID:???
>>477
DBから、category を order にしてデータを取り出し、
ループ中で前カテゴリ名を保存する変数を容易する。

っていうか、同じ category なら、idも同じなのそれって。
04794772005/12/14(水) 19:20:14ID:???
>>478
idはプライマリキーです、その方法でもやってみたんですがなんか途中で訳分かんなくなって止めました

とりあえず最初にカテゴリだけSelectしてwhile中にnameをselectって方法でいけました
0480nobodyさん2005/12/14(水) 19:53:30ID:???
>>479
賢くない方法だね。クエリがカテゴリの数だけ発行されてシマウマ。
0481nobodyさん2005/12/14(水) 20:23:26ID:???
そうなんですけど、他の処理方法が思いつかなくて・・・
0482nobodyさん2005/12/14(水) 20:47:41ID:???
>>481
DBがMySQLでバージョン4.1以降であれば、group_concatを使えばスッキリ書けるかもね。
他のDBならストアドで一時テーブルに書き出すとか。
categoryが重複した時、どのレコードのidを出力しているのか良く判らんが。。。
0483nobodyさん2005/12/14(水) 20:52:18ID:WftevBRF
fopenをftp関数経由で使用する場合どんな感じにすればよかとでしょうか?
ftp_fopenみたいな関数があればいいんですが。
0484nobodyさん2005/12/14(水) 21:22:53ID:???
ftp_fget,ftp_fput
ただしLocalファイル
0485nobodyさん2005/12/14(水) 22:17:34ID:???
セッションを使って入力フォームを作ってるのですが、
入力画面と確認画面を行ったり来たりしていると、
セッションが消えたり、古いセッション値が表示されたりします。
このような現象の対策はありますか?

バージョンはPHP 4.3.11です。
PHP 4.2.4では大丈夫でした。

■入力画面
session_start();
if ($_POST['hoge']) $SESSION['hoge'] = $_POST['hoge'];
header("Location: 確認画面");

■確認画面
session_start();
echo $_SESSION['hoge'];

0486nobodyさん2005/12/14(水) 22:24:58ID:???
header()使って確認画面にすっ飛ばす理由が分からん。
<form>のターゲットを確認画面にすればいいのに。

>セッションが消えたり、古いセッション値が表示されたりします。
$_POST[hoge']が空の時の動作がないからでしょ。
0487nobodyさん2005/12/15(木) 05:47:17ID:???
最近フォームの質問、それも同じような質問ばかりだが、同一人物か?
無理なことは無理
あ き ら め ろ
0488nobodyさん2005/12/15(木) 12:40:13ID:UeTwmalZ
>>485
ブラウザの戻るボタンで行き来してるのなら
何が起きるかわからんと思ったほうがいいかも
04894852005/12/15(木) 14:06:50ID:???
>>486
入力チェックが入るので、headerで飛ばしています。

>>487
同一人物ではありません。

>>488
戻るときはリンクで戻っています。

下記でも試してみましたが、b.phpとc.phpをリンクで行ったり来たりしていても、
「ほげ」が表示されたりしなかったりします。
どこが悪いのでしょうか?

■a.php
session_start();
$SESSION['hoge'] = "ほげ";
print $_SESSION['hoge'];

<a href="b.php">Bへ</a>

■b.php
session_start();
print $_SESSION['hoge'];

<a href="c.php">Cへ</a>

■c.php
session_start();
print $_SESSION['hoge'];

<a href="b.php">Bへ</a>
0490nobodyさん2005/12/15(木) 14:25:45ID:???
まずセッションの有効時間はデフォで1440秒
最終アクセス時間をセッションに入れといてそれから何秒たったら再パスワード入力画面に飛ばすとかしたらいいんじゃ
0491nobodyさん2005/12/15(木) 16:31:20ID:???
>>489
とりあえず

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta equiv="expires" content="0">

とか書いてる?
0492nobodyさん2005/12/15(木) 18:33:48ID:???
>490
そんなことしてんの?
0493nobodyさん2005/12/15(木) 18:42:01ID:???
--------------------------------------
■a.php
session_start();
$SESSION['hoge'] = "ほげ";
print $_SESSION['hoge'];

<a href="b.php">Bへ</a>
--------------------------------------

とりあえず.......
$SESSION['hoge'] = "ほげ";

$_SESSION['hoge'] = "ほげ";
なのだが


誰か突っ込め
0494nobodyさん2005/12/15(木) 20:26:32ID:???
>>493
そっとしといた方がいいんじゃないのか
0495nobodyさん2005/12/16(金) 20:00:21ID:FlVjXK6k
掲示板の連続投稿禁止させたいと思ってますが、
COOKIEを使った連続投稿禁止ができません。

if("hoge"==$_COOKIE['entry']){
  print("連続投稿のため、しばらくたってから投稿してください。");
  exit;
}else{
  setcookie("entry", "hoge", time()+60);
}


何卒、よろしくお願いします
0496nobodyさん2005/12/16(金) 20:03:21ID:???
ハァ!?
0497nobodyさん2005/12/16(金) 20:19:47ID:???
>>495
せめて「どうできないのか」位は書こうな
0498nobodyさん2005/12/16(金) 20:29:55ID:???
>>495
いや、どう見てもそれでできるよ
0499nobodyさん2005/12/16(金) 20:32:59ID:???
495は下質と同じ人かな
どうせクッキー蹴ってたりクッキー発行する前に何か吐いてたりするんでしょ
エラー表示を出してないだけな気ガス
0500nobodyさん2005/12/17(土) 01:27:33ID:5Cdk6RwA
execを使ってjavaコマンドを実行しようとしているのですが
戻り値にint(1)が帰ってきてエラーがおきています
このエラーの内容を知る方法ってありますか?

PHP 4.4.0
Java 1.4.2_10-b03
0501nobodyさん2005/12/17(土) 01:33:43ID:???
>>500
お願いだから、マニュアルくらい読んでくれるかな?
0502nobodyさん2005/12/17(土) 01:47:31ID:???
最初からjavaで作ればいいのに。
phpしか知らないの?
0503nobodyさん2005/12/17(土) 01:58:16ID:???
>>500
>>501-502は無視するとして、もうちょっと詳しく状況書いてみ。
0504nobodyさん2005/12/17(土) 02:05:59ID:???
>>503
おまいももうちょっと詳しくマニュアルを読んでみ。
0505nobodyさん2005/12/17(土) 02:08:52ID:???
>>504
おまいよりは読んだお^^;
0506nobodyさん2005/12/17(土) 03:06:03ID:???
>>505
回数の問題じゃねぇっ
0507nobodyさん2005/12/17(土) 05:03:10ID:???
とりあえず500は
http://jp.php.net/manual/ja/ref.exec.php
ここ読んで好きなの選べ
0508nobodyさん2005/12/17(土) 11:11:45ID:???
>>500
Internal Server Error
0509nobodyさん2005/12/17(土) 11:25:44ID:UrRJ5TVl
PHPの勉強を初めて1ヶ月ぐらい経つのですが、
初心者にお勧めのリファレンスってありますか?
0510nobodyさん2005/12/17(土) 11:36:30ID:???
>>509
1ヶ月も勉強したならば、あなたはもうルーキーFじゃなくビギナーDです。
0511nobodyさん2005/12/17(土) 12:32:40ID:???
ぱにゃ!
0512nobodyさん2005/12/17(土) 13:27:54ID:BoimMDuj
長年ブランクがあった。3年間だけど。。

以前は、経歴詐称常駐会社につとめていて、
ぼろぼろにされて、5ヶ月でやめた。Javaをやっていた。

全くのプログラム初心者なら話は別だが、他の言語を多少なりとも
やっていた人には、お奨めできるものがある。

一番、その言語に早く慣れたいなら、オライリーの一番簡単な本を読むのが
一番手っ取り早いし、安上がり。

PHPなら「始めてのPHP5」という本がある。
Perlなら「初めてのPerl」という本がある。ちなみにC++にも同シリーズは
ある。

JavaとCは知らん。。
0513nobodyさん2005/12/17(土) 13:28:51ID:???
>>512
リクエストは「リファレンス本」らしいよ
0514nobodyさん2005/12/17(土) 13:40:22ID:???
リファレンスってあんまりないよな〜。

でも、重宝するのが
http://www.amazon.co.jp/exec/obidos/ASIN/4798008850/250-0988500-3279408
だよな。やっぱ。初心者レベルから中級者くらいまでは、これが役に立つでしょ。

俺は、OracleとJavaのこのシリーズもってたけど、
かなり役立ったよ。
0515nobodyさん2005/12/17(土) 13:42:03ID:???
ちなみにページを下にスクロールすると見えると思うんだけど、
PostgreSQL&MySQLリファレンス。

MySQLとPostgreSQLの最初の設定とかはネットで調べるなり
本を買うなりしないとダメだけど、その後役に立つよ。

0516nobodyさん2005/12/17(土) 14:04:05ID:???
Perlの時は、青ラクダを買ったなぁ。
Perlだけでなく、Webアプリのための一般的なプログラミング知識も得られた。

PHP版もあるの?
0517php4(sax)でのxmlの処理2005/12/17(土) 14:06:49ID:???
ブラウザから入力されたデータを、
決まった形式のxmlに変換して保存しようと思っています。

htmlタグが入力されたとき、
1:タグをエスケープしてxmlに変換
して保存してる訳ですが、そのログをxmlパーサで読むとき、
2:エスケープされたタグ文字が解釈されて"<"とかに戻る
ので、
3:タグ文字をエスケープし直してブラウザに出力

3回も変換処理が入っていて、なんだかものすごく無駄なことしてる気がするんですが、
うまい方法ないですかね。
cdata使うと、終端文字が入力できないし……
0518nobodyさん2005/12/17(土) 14:08:49ID:???
なにはなくとも、公式マニュアル。
どうしても本がよければ「技術評論社刊:PHPポケットリファレンス」
これでOK
0519nobodyさん2005/12/17(土) 14:32:55ID:nttpIBA6
本の話題があるんで便乗して聞きたいんですけど、
PHPでプログラムする際にセキュリティに関して詳しい本ってありますか?
0520nobodyさん2005/12/17(土) 14:41:32ID:???
file関数で配列に一旦格納してから
再度配列を一つのファイルに戻したいと考えています。
何かグッドな関数や方法があったらキボンヌ
0521nobodyさん2005/12/17(土) 14:46:21ID:???
>>519
PHPじゃないけどこれ。
ttp://www.ipa.go.jp/security/awareness/vendor/programming/

同じ事をPHPでもやればいい。
0522nobodyさん2005/12/17(土) 14:48:07ID:???
>>520
改行コードで implode してファイルに書き戻せば良いのでは?
05235522005/12/17(土) 14:49:59ID:???
fileで読み込んだときに改行コードがそのままなら、何も足さずにimplodeすればいいな。
確認してね。
0524nobodyさん2005/12/17(土) 15:19:20ID:???
フォームによる入力ページで、一度POSTで違うページに行っても
ブラウザの戻るボタンで戻ると必ずフォームの値が残っているサイトが
あるような気がしますが、どのように実現してるのでしょうか

あるいは、こうしたフォームページでの入力値の
ブラウザ側での保持時間というのはこちらでコントロールできる
ものなんでしょうか
0525nobodyさん2005/12/17(土) 15:25:25ID:???
送信フォームのhtmlページでsendmail.phpファイルを
読み込ませて入力結果などを表示させるスクリプト使用なのですが
テストサイトでは何の問題もなく送信結果などが実行されていたのに
いざ先方のドメインサーバーにupしてみて試しに記入せず送信ボタン
押してみると*必須記入欄の未入力エラーとして実行されるべき
画面に以下の表示結果が出て困っています。

Warning: Invalid argument supplied for foreach() in /home1/○○○.ne.jp/WWW/sendmail.php on line 132

Fatal error: Call to undefined function: mb_convert_encoding() in /home1/○○○.ne.jp/WWW/sendmail.php on line 141



ちなみに上の方Warning: 〜とかかれた行は数字違いで同じ内容であと3っつ程ありますが略してます。
もちろんphp対応のサーバーです。
WWWというのが先方サーバーの先頭ディレクトリーなんです。


0526nobodyさん2005/12/17(土) 15:28:22ID:???
>>524
つブラウザキャッシュ
つHTMLのMETAタグ
0527nobodyさん2005/12/17(土) 15:30:30ID:Hbd/Rmjf
fopen→freadでよみこんだテンプレはeregとかで置換できるのに
includeで読み込んだファイルは置換できません。


同じ「読み込む」なのに後者だけできないのはなぜですか
0528nobodyさん2005/12/17(土) 15:43:29ID:???
>>525
くだらない。実にくだらない。
せっかくメッセージを出しているのに、なぜそれを理解しようとしないの?
0529nobodyさん2005/12/17(土) 15:45:39ID:???
下らない質問文は「ドラえも〜ん」で書き始めるとよい
0530nobodyさん2005/12/17(土) 15:50:44ID:???
>>527
テンプレって何ですか?
あと、freadとincludeは”同じ「読み込み」”ではありません。
http://jp.php.net/manual/ja/function.fread.php
http://jp.php.net/manual/ja/function.include.php
どこが違うかは、日本語が理解できる人ならばマニュアルを読めばわかります。
0531nobodyさん2005/12/17(土) 15:51:26ID:???
質問する前にテンプレくらいは見ような。
>>4とか>>5とか。

>>529
不覚にもワロタ
0532nobodyさん2005/12/17(土) 16:00:56ID:???
リンクチェッカー http://www.ai2x.com/
みたいなものをPHPでも作ることって可能ですか?
0533nobodyさん2005/12/17(土) 16:03:23ID:Hbd/Rmjf
>>530
サンクス日本人なので今から理解してきます
0534nobodyさん2005/12/17(土) 16:16:35ID:???
ドラえも〜ん。
うちのパソコンは優秀だから「どらえもん」と入力すると
「ドラえもん」とドラがカタカナの正しいドラちゃんが出てくる。
0535nobodyさん2005/12/17(土) 16:30:27ID:???
>>522
それってグッドなのか?
確かに見た目スマートでかっこよさげなコードになるけど、
普通にroopして1行ずつ書くほうが所要時間はやくね?
0536nobodyさん2005/12/17(土) 16:33:06ID:???
バッファリングやOSの実装にも影響されるが
速くなる要素はないな
0537nobodyさん2005/12/17(土) 16:51:44ID:???
>>535
パフォーマンスが気になるならベンチ取るなりして確認してくれ。
そいでその結果を公表してもらえるとありがたいな。
05385202005/12/17(土) 16:56:25ID:???
>>522
うぉーありがとう!!
このためだけに10数行のコードを書いちゃうところでした。
0539nobodyさん2005/12/17(土) 16:56:27ID:???
roopってどうやるんですか?
0540nobodyさん2005/12/17(土) 16:59:40ID:???
for
0541nobodyさん2005/12/17(土) 17:02:19ID:???
http://en.wikipedia.org/wiki/ROOP
0542nobodyさん2005/12/17(土) 17:04:23ID:???
>>539
roopは擬音か何かじゃないかな
0543nobodyさん2005/12/17(土) 17:08:35ID:???
>>54
0544nobodyさん2005/12/17(土) 17:10:13ID:???
いやみな奴らだなぁ…
05455202005/12/17(土) 17:15:20ID:???
linux上で implode("\n", $array) でやってみたら
余分に改行されてしまいます。

-------
1
2
3
-------

-------
1

2

3
-------
になってしまいました。
改行コードあたりの問題の気がしますが・・・。
0546nobodyさん2005/12/17(土) 17:15:25ID:???
>>541
オンラインの情報がまるで見つからないんだけど
0547nobodyさん2005/12/17(土) 17:16:17ID:???
>>545
>>523
05485202005/12/17(土) 17:29:30ID:???
>>547
サンクス、上手くはいったんだけど、
理由がよくワカラソ。
めんどくないひと居たら教えてクリ
05495202005/12/17(土) 17:35:48ID:???
あ、理解できただす。ありがとう
0550nobodyさん2005/12/17(土) 17:38:58ID:???
>>548
file関数は配列に読み込むとき行末の改行コードを削除しないんよ。
つttp://jp2.php.net/manual/ja/function.file.php

常にマニュアルを見て確認する癖をつけたほうが、上達早いよ。
0551nobodyさん2005/12/17(土) 17:40:08ID:???
520はそそっかしい奴だな。
0552nobodyさん2005/12/17(土) 17:45:35ID:???
ここで聞くべきなのかLinux板に行くべきなのか微妙なところですが・・・
Fedra以外のディストリビューションでPHP5が公式パッケージとして用意されているものはありますか?
0553nobodyさん2005/12/17(土) 17:51:46ID:???
>>552
つFreeBSD
0554nobodyさん2005/12/17(土) 18:35:45ID:???
>>532
作れる。ヒント:PEAR HTTP
0555nobodyさん2005/12/18(日) 00:32:43ID:???
phpである関数を1秒間に1回しか使えなくして、
仮に1秒間に複数回、関数が呼び出されたら、
1秒ごとに順に関数を実行する方法はありますか?
0556nobodyさん2005/12/18(日) 02:42:42ID:???
>>555
そのようにプログラミングすればできるんじゃね?
つシングルトン
0557nobodyさん2005/12/18(日) 05:35:07ID:???
sesseion.use_trans_sidが1に設定されているのですが、
リンクに自動でSIDが付きません。
クッキーをオフにしてやっても付きません。

これは何が原因なのでしょうか?
0558nobodyさん2005/12/18(日) 05:42:41ID:???
勘違いじゃないかねぇ。
現象が再現する短いソースを見せてちょ。
0559nobodyさん2005/12/18(日) 05:46:31ID:???
.htaccessでuse_trans_sidを設定 (phpinfoで確認済み)
同じディレクトリでindex.phpをおいて

<?php
session_start();
if (!is_set($_SESSION['count'])) $_SESSION['count'] = 0;
else $_SESSION['count']++;
?>

<html>
<body>
<?=$_SESSION['count']?><br>
<a href="index.php">link</a><br>
</body>
</html>
0560nobodyさん2005/12/18(日) 06:17:09ID:???
ついでにphpinfoの内容もコピペしとけ。
0561nobodyさん2005/12/18(日) 15:55:42ID:???
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 72000 1440
session.gc_probability 1 1
session.hash_bits_per_character 4 4
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path no value no value
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 1 0

あとこれかな

url_rewriter.tags a=href,area=href,frame=src,form=,fieldset= a=href,area=href,frame=src,form=,fieldset=
0562nobodyさん2005/12/18(日) 17:08:07ID:???
test
0563nobodyさん2005/12/18(日) 19:38:22ID:???
解決しました。

セキュリティレベルを最高まで上げたらできました。
ドメインでクッキーをはじくように設定していたのですが
なぜか反映されてなかったのです。。
0564nobodyさん2005/12/18(日) 23:55:14ID:???
クッキーを使わずに強制的にGETクエリーにSIDを乗せたい
(クッキーを使った方法は強制的になしにする)と思って
session.use_cookies を 0 に設定してみましたが、できませんでした。

何か凡ミスでしょうか。
それとも他に設定箇所があるのでしょうか。
0565nobodyさん2005/12/19(月) 01:51:02ID:???
当たり前。
セッションIDを受け渡す方法がないから。
ヒント:マニュアル セッションの受け渡し
0566nobodyさん2005/12/19(月) 02:08:24ID:???
2種類あるのは解ってますよ

方法はなくはないでしょう。
クッキーではなくURLに直接埋め込む方式でやりたいんです。
0567nobodyさん2005/12/19(月) 02:19:55ID:???
session.use_trans_sid は Onになってる?
0568nobodyさん2005/12/19(月) 02:27:11ID:R4UOoyTG
PHPを自分のPCでテストするのって難しいですね・゚・(ノД`)・゚・。
もうかれこれ4日も導入に悪戦苦闘してます。
0569nobodyさん2005/12/19(月) 02:34:32ID:???
簡単だよー。
0570nobodyさん2005/12/19(月) 02:41:49ID:???
>>567
はい。ちゃんとなってます。
0571nobodyさん2005/12/19(月) 02:42:22ID:nsaG6AgK
>>568
どこかのサイトか本みてやればすぐ終わると思うのだが
0572nobodyさん2005/12/19(月) 02:43:20ID:???
>>568
そんなあなたに

っ XAMPP
0573nobodyさん2005/12/19(月) 02:47:56ID:???
An Httpd使っているんですが、関連付けが詳しく書いてあるサイトが
もしありましたら教えてくださいm(_ _)m
Apatchの方は読めず、扱いが難しいので断念しました・゚・(ノД`)・゚・。
0574nobodyさん2005/12/19(月) 02:50:06ID:???
>>573
ttp://homepage1.nifty.com/yito/anhttpd/faq/php.html
このくらいしか知らない。
0575nobodyさん2005/12/19(月) 02:52:45ID:???
皆さんレスありがとうございます。
早速今から試してみます。
0576nobodyさん2005/12/19(月) 02:54:21ID:???
>>564
session.use_only_cookies はOnになってたりしないよね?
0577nobodyさん2005/12/19(月) 02:56:22ID:???
>>564
あと思いつくのは、リンクが全部絶対パス指定になっちゃってる場合とか…
(URL付加は相対パスしか変換しないのがお約束なので)
■ このスレッドは過去ログ倉庫に格納されています