トップページ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辺り
0403nobodyさん2005/12/10(土) 17:18:45ID:???
>>401
それも考えたんだけどインとアウトは同じ$aなんですよ(^^;

$a = mb_ereg_replace($t,'',$a);
04043972005/12/10(土) 17:25:48ID:???
結局、$_POST['abc']を後で使っているのですから置き換わるなら全て置き換わるのが
普通だと思うのですが上手く行かない。これは人が作った物に手を加えているので
なにか癖があるのかも知れません。extractなんて使ってるスクリプトですし・・・。
ちゃんとextractを使われる前に手を加えているんですけどね(^^;。

お騒がせしました。
0405nobodyさん2005/12/10(土) 18:01:06ID:???
>>397
mb_regex_encoding は確認しましたか?
str_replace で期待通りに動かない場合は
入力データがスクリプトのエンコーディングと違うかも知れません。
04063972005/12/10(土) 19:30:32ID:???
うはっ、(/ω\)恥ずかしい

正しくは
$w = array('あ','い','う');
ではなくて $w を データファイルから拾得していたのです。
ずっとUTFばかり使っていたからsjisが\r\nなのを忘れていました。
最後だけ一致してたのは最後に改行がないからでした(^^;。

ご迷惑をおかけしました(*- -)(*_ _)ペコリ
0407nobodyさん2005/12/11(日) 03:04:54ID:???
セッションってどのくらい容量を保存できますか?
画像データも保存できるのでしょうか。
0408nobodyさん2005/12/11(日) 03:18:46ID:???
>>407
ハァ??
0409nobodyさん2005/12/11(日) 03:23:49ID:???
>>407
imageCreateとかの戻り値なら無理だね。
ファイルやDBに保存しておいて、それに関する情報(ファイル名とか)をセッションに保存したらいいんじゃない。
0410nobodyさん2005/12/11(日) 03:24:01ID:???
下らねえな
ああ下らねえよ
0411nobodyさん2005/12/11(日) 03:30:43ID:???
>>408 >>410
くだらないレスはくだしつでしてね。
0412nobodyさん2005/12/11(日) 04:24:32ID:???
レス番間違ってるぞ
0413nobodyさん2005/12/11(日) 05:00:28ID:???
>>412
誘導してやんなきゃわかんねーのかよw

【PHP】下らねぇ質問はここに書き込みやがれpart13
http://pc8.2ch.net/test/read.cgi/php/1132921016/
0414nobodyさん2005/12/11(日) 05:36:26ID:???
なんかDATが壊れてる奴がいるな。
0415nobodyさん2005/12/11(日) 09:46:55ID:???
たしかに。荒らすだけが目的の書き込みは勘弁してほしいものだな。
0416nobodyさん2005/12/11(日) 19:18:41ID:???
質問です
下のような感じでメール送信してるのですがsubjectが文字化けしてしまいます
$subject = mb_convert_encoding($subject,"iso-2022-jp");
mb_language("Japanese");
mb_send_mail("$sendto","$subject","$message","From: $from")
なぜでしょうか?
0417nobodyさん2005/12/11(日) 19:35:55ID:XiVVGiBU
class Child extends Parent{
}
class Parent{
}
こういう風に、親クラスを後に書いてもエラーにならないけど、
class Child extends Parent{
}
class Parent implements Granpa{
}
こういう風に、親クラスにインターフェイスをインプリメントしたとたん、
親→子の順番に書かないとエラーになる。
これって仕様?
0418nobodyさん2005/12/11(日) 19:44:35ID:???
>>416
MIMEヘッダにJISとかは使えないのでBase64でエンコードする必要がある。
mb_encode_mimeheader使ってみ。
0419nobodyさん2005/12/11(日) 19:51:06ID:???
>>417
仕様だと思う。ParseKitを使えば理由がわかると思うよ。
たしかimplementsがついてるとearly bindingが起こらなかった。・・・のは遠い記憶かもしれない。
0420nobodyさん2005/12/11(日) 20:06:56ID:???
>>417
class A {}
class C extends B {}
class B extends A {}
なら大丈夫だけど
class C extends B {}
class B extends A {}
class A {}
だとダメなところを見ると、たぶん2重に先読みはしてくれないってことだと思われ。
むしろ1クラス1ファイルで__autoload使って管理すれば無問題なんだけどね。
0421nobodyさん2005/12/11(日) 20:48:17ID:???
PHPは多重継承は出来ないはずだけど
0422nobodyさん2005/12/11(日) 21:06:51ID:???
>>421
だけど・・・?
逆接の接続詞だから、「実はできるんだ」とかくるのかな?
0423nobodyさん2005/12/11(日) 21:13:58ID:???
いや。
マニュアルには出来ないって書いてあるから
class A {}
class B extends A {}
class C extends B {}
こういう継承は出来ないと思っていた。出来るんだ。
0424nobodyさん2005/12/11(日) 21:22:14ID:???
はい多重継承の意味100回ググれーここ試験に出るぞー
0425nobodyさん2005/12/11(日) 21:31:14ID:???
>>423
親クラスを同時に2つ継承することはできないよ。
C++とかだと extends A,B ってな感じにやるやつね。
親・子・孫 ってな形はOKよん。

>>424
ググってみれば分かるけど、多重継承って言葉の使われ方の混乱スゴス。
親子孫形式を多段継承とかに統一されていればここまで酷くなかったのかなぁ。
0426nobodyさん2005/12/11(日) 23:49:23ID:WymzfT31
JAVAとの連携を詳しく扱ったサイトとか無いでしょうか?
マニュアルは設定しか載ってなくてもっとサンプルが見たいのですが。
0427nobodyさん2005/12/12(月) 05:24:04ID:???
>>426
マニュアルのサンプルで十分じゃない。
それ以降はJava自体の話だし。
0428nobodyさん2005/12/12(月) 09:51:03ID:mg3yvGfR
質問があります。
今使ってるさくらサーバーでPHPのブログを導入しようと思っているのですが
FTPでファイルを転送して、初期設定をしたのですが
エラーメッセージが表示されて実行ができません。
何が悪いのでしょうか?

パーミッションは705で設定しました。

さくらインターネット
http://www.sakura.ad.jp/
導入しようとしたブログ
http://www.netmania.jp/cgi/blog3/

04294282005/12/12(月) 09:51:53ID:mg3yvGfR
エラーメッセージ

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, support@sakura.ad.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

0430nobodyさん2005/12/12(月) 09:58:45ID:???
>>428
Exciteで訳したよ。

内部サーバーエラー
サーバは、内部エラーかmisconfigurationに出会って、あなたの要求を終了することができませんでした。
サーバアドミニストレータ、 support@sakura.ad.jp に連絡して、誤りを引き起こしたかもしれない誤りが発生した時、およびあなたがしたかもしれないものは何のそれらでも知らせてください。

この誤りに関する詳しい情報はサーバ障害記録で利用可能であるかもしれません。
0431nobodyさん2005/12/12(月) 10:26:36ID:???
>>425
私も勘違いしていたので
非常に勉強になりました。
0432nobodyさん2005/12/12(月) 10:29:30ID:???
>>429

つ[More information about this error may be available in the server error log.]
0433nobodyさん2005/12/12(月) 12:19:35ID:???
ある固有名詞をもつ変数を10個、ひとつの配列に入れたとして
$arei=array("$var1",・・中略・・,"$var10");

これを再び10個の変数にするにはどうしたらいいんでしょう?
たとえばタブ区切りの文字列なら

list($var1,・・中略・・,$var10)=explode("\t",$arei);

でできますが、配列の中の変数をそれぞれ名前を付けて取り出す方法が
どーにも思いつかないです。
0434nobodyさん2005/12/12(月) 12:26:02ID:???
お前の目は節穴か!
04353972005/12/12(月) 12:31:57ID:???
>>433
echo $arei[0];
list($a,$b,$c.....) = $arei;
echo $a;
0436nobodyさん2005/12/12(月) 13:11:25ID:???
explodeの返値はarray
0437nobodyさん2005/12/12(月) 14:15:49ID:???
>>433
$arei=array("$var1",・・中略・・,"$var10");

この時点で、既に10個の変数として利用可能。
$arei[0] = $var1
$arei[1] = $var2
$arei[2] = $var3
$arei[3] = $var4
$arei[4] = $var5
$arei[5] = $var6
$arei[6] = $var7
$arei[7] = $var8
$arei[8] = $var9
$arei[9] = $var10

0438nobodyさん2005/12/12(月) 14:59:05ID:???
(,,゚Д゚)∩<質問
>>433の脳の構造が知りたいです・・・
0439nobodyさん2005/12/12(月) 15:02:57ID:???
うーん、エスパーかなぁ
0440nobodyさん2005/12/12(月) 15:11:13ID:???
1.配列の概念を理解していない。
2.explodeが何を返すかよく判っていない。
3.listは変数に何かを入れる事は判るが、何をどのように入れているかは理解していない。

…かな?
04414332005/12/12(月) 16:19:08ID:???
すまん説明ミスだった。

$var1とかは配列です。配列の中の配列が、$arei[0][1]みたいに扱うのがいやで
配列から配列を全部取り出したいんです。
04424332005/12/12(月) 16:22:23ID:???
・・・ああ
>>435でいいような。スマソ、ちょっと眠い。
0443nobodyさん2005/12/12(月) 16:29:14ID:???
>>441
やっぱり、>>440の(1)だった…
0444nobodyさん2005/12/12(月) 16:34:22ID:???
>>443
いや、1-3全部
0445nobodyさん2005/12/12(月) 16:48:53ID:???
>$arei[0][1]みたいに扱うのがいやで
そんな理由かよ
0446nobodyさん2005/12/12(月) 17:04:58ID:???
>>428
取り合えず、FTPのファイル転送で文字コードを
変換してしまってないか確認してみれ。
0447nobodyさん2005/12/12(月) 23:38:20ID:???
おまいにはサクラは敷居が高い。
もっと廚でも使える鯖業者と再契約が必要。
0448nobodyさん2005/12/13(火) 00:20:06ID:???
>>447
なにそれ?難易度の高い鯖とかあんの?
0449nobodyさん2005/12/13(火) 00:22:09ID:???
自分が使っている=難易度が高い
PHP の思想だね
0450nobodyさん2005/12/13(火) 10:37:41ID:???
正直428にPHPは無理でしょ。
HTMLとか画像うpが精一杯。

PHPは業者にでも依頼しな。
0451nobodyさん2005/12/13(火) 16:11:09ID:vrSu5coJ
while ($row = mysql_fetch_array($result)) {

この文の意味がいまいちわからないのですが、
whileの()内って条件式ではないですよね?
(条件式なら $row==になるはずですよね)

$row = mysql_fetch_array($result);
while ($row) {
でもOKなんでしょうか?
0452nobodyさん2005/12/13(火) 16:21:20ID:???
>>451
if ($i=0; $i<mysql_num_rows($result); $i++){
}
ということだよ。
0453nobodyさん2005/12/13(火) 16:30:44ID:???
いや、条件式だろ。
真である限りループしろって構文なんだから。
0454nobodyさん2005/12/13(火) 16:34:46ID:???
数値の 0
空文字列
null
false

それ以外全部 真
0455nobodyさん2005/12/13(火) 16:37:39ID:???
>>451
>$row = mysql_fetch_array($result);
>while ($row) {
これだと無限ループ
0456nobodyさん2005/12/13(火) 16:44:08ID:???
>>451
「$row = 〜」の部分はそれ自体も値を持つってことを理解しましょう。
$x = ($row = 〜); ってこともできますがな(←この場合のカッコはなくても同じ)。
while ($row = 〜)ってのは「$row = mysql_fetch_array(〜)」の部分全体がmysql_fetch_arrayの戻り値になる。
戻り値はマニュアルに書いてあるよね。

>>454
他にも
array()
"0"
なんてのもあるのがPHPクオリティ。
しかも
"\0"
は真なのもPHPクオリティ。
0457nobodyさん2005/12/13(火) 17:31:10ID:???
それはPerlクオリティを引き継いだだけ
0458nobodyさん2005/12/13(火) 17:32:43ID:???
>>452
そこforだろ
0459nobodyさん2005/12/13(火) 17:35:02ID:???
>>451
$row = mysql_fetch_array($result);
while ($row) {
処理
$row = mysql_fetch_array($result);
}
ならOK
0460nobodyさん2005/12/13(火) 17:38:15ID:???
while(true) { //ずっと繰り返す
 $hoge = mysql〜(); //値を得る
 if ($hoge == FALSE) break; // $hogeが空なら繰り返しを止める
 # $hogeをごにょごにょ
}
これと同じ意味
0461nobodyさん2005/12/13(火) 17:56:36ID:???
>>451
while (A) { B }
(1) Aを評価
(2) Aが真ならBを実行後(1)に戻る、偽ならBを実行せず次のステートメントへ

おまいが勘違いしてるのは、(1)のAの評価の部分
Aは単純な変数である必要はなく、式そのものも評価対象に出来る
while ($hoge = func()){ ... } なら func() を実行して$hogeに代入された戻り値が評価対象になる
同様に、while (func()) { ... } なら func() の戻り値そのものが評価対象になる

while ($row = mysql_fetch_array($result)) { B } の場合
(1a) mysql_fetch_array($result)を実行
(1b) 戻り値が$rowに代入される
(2) $rowが真ならBを実行後(1a)に戻る、偽ならBを実行せず次のステートメントへ
0462nobodyさん2005/12/13(火) 18:36:03ID:???
while ($row = mysql_fetch_array($result))とか、ファイルもそうだけど、
>>454の言う
「数値(文字)の0」が偽になるんで、気をつけてないとヤバス。
0463nobodyさん2005/12/13(火) 18:39:16ID:???
しかし>>451はもういないらしい。
このスレ質問するだけして去っていく人多いね。
サビシス
全部釣りかな?
0464nobodyさん2005/12/13(火) 19:12:34ID:???
PHP Variable Tests (Null 0等が isset()などの関数でどういう扱いになるかの一覧表)
ttp://www.deformedweb.co.uk/php_variable_tests.php
04654282005/12/13(火) 19:45:11ID:0K/So0+j
>>447
オススメの鯖とかある?
0466nobodyさん2005/12/13(火) 20:39:57ID:l7fxNabV
>>463
のちに誰かのために役立つよ。俺は勉強させてもらってるよ。
0467nobodyさん2005/12/14(水) 04:21:42ID:???
一日位は待ってみてもいいんじゃないかと
0468nobodyさん2005/12/14(水) 05:38:47ID:cm5ebMj8
(isset($page)) ? $start = $page : $start = 0;

この一文の意味がよくわからないので
頭のイイ人おしえてください
0469nobodyさん2005/12/14(水) 05:43:41ID:???
PHPのスクリプトで503エラーが頻発するんですが、
これって相手の回線の太さも原因の1つですか?
0470nobodyさん2005/12/14(水) 06:27:01ID:???
>>468
そんな事より、その例のものは何でこの様に書かないんだろうね?
見ていて気持ち悪い。

$start = isset($page) ? $page : 0;
0471nobodyさん2005/12/14(水) 06:29:26ID:???
$pageのバリデーションはフレームワーク側でやってるんだろうか?
0472nobodyさん2005/12/14(水) 06:33:20ID:???
>>468
つ[三項演算子の解説、代入式の概念]
0473nobodyさん2005/12/14(水) 06:35:01ID:???
>>470
三項演算子をifの置き換えと思考してるからじゃない?
0474nobodyさん2005/12/14(水) 09:05:11ID:cm5ebMj8
>>470
>>472
サンクス参考になりました
0475nobodyさん2005/12/14(水) 13:17:30ID:nQISVs9q
みんな三項演算子って使ってるの?
0476nobodyさん2005/12/14(水) 13:19:26ID:???
適宜。
0477nobodyさん2005/12/14(水) 14:32:51ID:4Y8+DJWg
ある変数が同じ縦のデータを横に表示したいのですが、方法が思い浮かばず詰まっています。

while (DBからのデータ) {
$id
$name
$category
}

$categoryが同じ場合「、」で区切って$nameを横に表示したいのです。


こんな感じに表示させたい
id category name、name
id category name
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は無視するとして、もうちょっと詳しく状況書いてみ。
■ このスレッドは過去ログ倉庫に格納されています