【PHP】質問スレッドpart31【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/11/27(日) 00:07:12ID:eBvjdczp【基本ルール】
・新規質問の方は上げてください。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辺り
0374nobodyさん
2005/12/09(金) 22:44:07ID:???同意
>371
>ぐるぐるループさせる方法
それでいいんじゃね
0377nobodyさん
2005/12/10(土) 01:13:39ID:???プログラム経験はflashのactionscriptでショボイゲームが作れる程度です。
よろしくお願いします。
0378nobodyさん
2005/12/10(土) 01:51:28ID:???http://www.php.net/manual/ja/
いやホントに、煽りで無くマジレス。
0380372
2005/12/10(土) 04:55:08ID:???流れは
【A】
1.ユーザが<<URL>>に存在するリンクをたどり クエリmode=source を伴って当該スクリプトにアクセスする
2.当該スクリプトはリンク元をHTTPリファラから取得する
3.当該スクリプトはリンク元のソースを表示する
【B】
1.ユーザが<<URL>>に存在するリンクをたどり クエリmode=source を伴って当該スクリプト1にアクセスする
2.当該スクリプト1はリンク元をHTTPリファラから取得する
3.当該スクリプト1はスクリプト2への遷移を提供する
4.スクリプト2は先ほど取得したリファラを何らかの形で受け継いでいて、<<URL>>のソースを表示する
どっちかだと思うけど。それが判らない。
次に、「ソース」ってのはPHPのソースコードをさすのか
それともHTML(PHPとかの出力)のソースコードをさすのか。これもわからない。
携帯ということだけどキャリアはどこ?ドコモはリファラとれないよ?
0381nobodyさん
2005/12/10(土) 05:06:16ID:???むしろ、こっちに誘導してやってよ。
PHP関連の書籍(但しPHP出版系お断り)第2版
http://pc8.2ch.net/test/read.cgi/php/1117066073/l10
後者です。
他のスクリプト(HTMLソースを表示するページ)に前のページで取得したリファラを送る方法が謎なんですよ。
機種はauです。
リファラを利用したお気に入り規制突破スクリプトを作っていてソース表示をいれようと。
すいません。
前者の方です。
test.phpで前に表示していたページのリファラを取得して表示。
次にソース(ボタン)をクリックするとmode=sourceに移動その時に取得したリファラをそのまま受け渡し。
そしてHTMLソースを表示。
どうにも受け渡しができないんですよ。
0384nobodyさん
2005/12/10(土) 06:58:43ID:???なにがいいたいのかさっぱりわからん
むいてないんじゃない?
0385nobodyさん
2005/12/10(土) 07:30:30ID:???受け渡しが出来ないって渡してないから受け取れないだけだろ
?mode=source&url=$_SERVER['HTTP_REFERER']
で渡したらいいんじゃないの
0386nobodyさん
2005/12/10(土) 07:42:38ID:???/$_SERVER['USER_AGENT']/
を指定したいんですが
モデファイ?4(よく覚えてなくてすいません)
とかいうエラーが出てしまいました。正規表現(()辺り?)の間違いだと思うのですが、どうにかして回避できませんでしょうか?
0388nobodyさん
2005/12/10(土) 10:45:34ID:???0389nobodyさん
2005/12/10(土) 12:26:23ID:???387のいうことももっともだが、
その前に
>モデファイ?4(よく覚えてなくてすいません)
こういうことではいつまでたってもダメじゃん。
エラーが出たらそれが何を意味するか理解するようにしようぜ。
0392nobodyさん
2005/12/10(土) 12:42:01ID:???387はそのまま$_SERVER['USER_AGENT']を指定するのは難しいといいたいんだろう。
ま、エスケープしろってこった。
0393nobodyさん
2005/12/10(土) 12:55:49ID:???おそらくMozilla/4.0の/で正規表現パターンが終わって次の4が修飾子と判断されてエラーになった
>>390
quotemetaしてstr_replace("/", "\/",
すれば出来るけど>>386には無理
そもそも正規表現使う必要あるのか疑問
やりたいことはarray_count_valuesとかじゃないのか
0394nobodyさん
2005/12/10(土) 13:04:59ID:???0396nobodyさん
2005/12/10(土) 14:10:55ID:???0397nobodyさん
2005/12/10(土) 14:30:05ID:???foreach ($w as $t){
$_POST['abc'] = mb_ereg_replace($t,'',$_POST['abc']);
}
こういう感じでpostからの入力文字を制限しようと考えているのですが
どういう訳か$wの最後の配列の文字「う」しか削除されません。理由が
全くわからないのですがヒントを頂けないでしょうか?。
0398386
2005/12/10(土) 14:48:38ID:???0399nobodyさん
2005/12/10(土) 15:08:21ID:???コードには問題がなさそうだからきっと凡ミス
あと、単純な置換なら正規表現関数を使う意味がないぞ
$result = mg_ereg_replace('[あ-う]','',$_POST['abc']);
0400nobodyさん
2005/12/10(土) 16:00:08ID:???print_r($w)してもecho $tしても予想通りの結果がでるしわからないんですよね。
最初は文字コードがsjisの影響なのかと思ってstr_replaceからmb_ereg_replaceに
してみたりしたのですが同じでした(^^; という残骸です。
0401nobodyさん
2005/12/10(土) 16:08:33ID:???どうせこんな感じのミスじゃない?
$input = "あいうえお";
$w = array('あ','い','う');
foreach ($w as $t){
$result = mb_ereg_replace($t,'',$input);
}
echo $result;
0402nobodyさん
2005/12/10(土) 16:15:08ID:???0403nobodyさん
2005/12/10(土) 17:18:45ID:???それも考えたんだけどインとアウトは同じ$aなんですよ(^^;
$a = mb_ereg_replace($t,'',$a);
0404397
2005/12/10(土) 17:25:48ID:???普通だと思うのですが上手く行かない。これは人が作った物に手を加えているので
なにか癖があるのかも知れません。extractなんて使ってるスクリプトですし・・・。
ちゃんとextractを使われる前に手を加えているんですけどね(^^;。
お騒がせしました。
0405nobodyさん
2005/12/10(土) 18:01:06ID:???mb_regex_encoding は確認しましたか?
str_replace で期待通りに動かない場合は
入力データがスクリプトのエンコーディングと違うかも知れません。
0406397
2005/12/10(土) 19:30:32ID:???正しくは
$w = array('あ','い','う');
ではなくて $w を データファイルから拾得していたのです。
ずっとUTFばかり使っていたからsjisが\r\nなのを忘れていました。
最後だけ一致してたのは最後に改行がないからでした(^^;。
ご迷惑をおかけしました(*- -)(*_ _)ペコリ
0407nobodyさん
2005/12/11(日) 03:04:54ID:???画像データも保存できるのでしょうか。
0409nobodyさん
2005/12/11(日) 03:23:49ID:???imageCreateとかの戻り値なら無理だね。
ファイルやDBに保存しておいて、それに関する情報(ファイル名とか)をセッションに保存したらいいんじゃない。
0410nobodyさん
2005/12/11(日) 03:24:01ID:???ああ下らねえよ
0412nobodyさん
2005/12/11(日) 04:24:32ID:???0413nobodyさん
2005/12/11(日) 05:00:28ID:???誘導してやんなきゃわかんねーのかよw
【PHP】下らねぇ質問はここに書き込みやがれpart13
http://pc8.2ch.net/test/read.cgi/php/1132921016/
0414nobodyさん
2005/12/11(日) 05:36:26ID:???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 Parent{
}
こういう風に、親クラスを後に書いてもエラーにならないけど、
class Child extends Parent{
}
class Parent implements Granpa{
}
こういう風に、親クラスにインターフェイスをインプリメントしたとたん、
親→子の順番に書かないとエラーになる。
これって仕様?
0418nobodyさん
2005/12/11(日) 19:44:35ID:???MIMEヘッダにJISとかは使えないのでBase64でエンコードする必要がある。
mb_encode_mimeheader使ってみ。
0419nobodyさん
2005/12/11(日) 19:51:06ID:???仕様だと思う。ParseKitを使えば理由がわかると思うよ。
たしかimplementsがついてるとearly bindingが起こらなかった。・・・のは遠い記憶かもしれない。
0420nobodyさん
2005/12/11(日) 20:06:56ID:???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:???0423nobodyさん
2005/12/11(日) 21:13:58ID:???マニュアルには出来ないって書いてあるから
class A {}
class B extends A {}
class C extends B {}
こういう継承は出来ないと思っていた。出来るんだ。
0424nobodyさん
2005/12/11(日) 21:22:14ID:???0425nobodyさん
2005/12/11(日) 21:31:14ID:???親クラスを同時に2つ継承することはできないよ。
C++とかだと extends A,B ってな感じにやるやつね。
親・子・孫 ってな形はOKよん。
>>424
ググってみれば分かるけど、多重継承って言葉の使われ方の混乱スゴス。
親子孫形式を多段継承とかに統一されていればここまで酷くなかったのかなぁ。
0426nobodyさん
2005/12/11(日) 23:49:23ID:WymzfT31マニュアルは設定しか載ってなくてもっとサンプルが見たいのですが。
0428nobodyさん
2005/12/12(月) 09:51:03ID:mg3yvGfR今使ってるさくらサーバーでPHPのブログを導入しようと思っているのですが
FTPでファイルを転送して、初期設定をしたのですが
エラーメッセージが表示されて実行ができません。
何が悪いのでしょうか?
パーミッションは705で設定しました。
さくらインターネット
http://www.sakura.ad.jp/
導入しようとしたブログ
http://www.netmania.jp/cgi/blog3/
0429428
2005/12/12(月) 09:51:53ID:mg3yvGfRInternal 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:???Exciteで訳したよ。
内部サーバーエラー
サーバは、内部エラーかmisconfigurationに出会って、あなたの要求を終了することができませんでした。
サーバアドミニストレータ、 support@sakura.ad.jp に連絡して、誤りを引き起こしたかもしれない誤りが発生した時、およびあなたがしたかもしれないものは何のそれらでも知らせてください。
この誤りに関する詳しい情報はサーバ障害記録で利用可能であるかもしれません。
0432nobodyさん
2005/12/12(月) 10:29:30ID:???つ[More information about this error may be available in the server error log.]
0433nobodyさん
2005/12/12(月) 12:19:35ID:???$arei=array("$var1",・・中略・・,"$var10");
これを再び10個の変数にするにはどうしたらいいんでしょう?
たとえばタブ区切りの文字列なら
list($var1,・・中略・・,$var10)=explode("\t",$arei);
でできますが、配列の中の変数をそれぞれ名前を付けて取り出す方法が
どーにも思いつかないです。
0434nobodyさん
2005/12/12(月) 12:26:02ID:???0436nobodyさん
2005/12/12(月) 13:11:25ID:???0437nobodyさん
2005/12/12(月) 14:15:49ID:???$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
0439nobodyさん
2005/12/12(月) 15:02:57ID:???0440nobodyさん
2005/12/12(月) 15:11:13ID:???2.explodeが何を返すかよく判っていない。
3.listは変数に何かを入れる事は判るが、何をどのように入れているかは理解していない。
…かな?
0441433
2005/12/12(月) 16:19:08ID:???$var1とかは配列です。配列の中の配列が、$arei[0][1]みたいに扱うのがいやで
配列から配列を全部取り出したいんです。
0445nobodyさん
2005/12/12(月) 16:48:53ID:???そんな理由かよ
0447nobodyさん
2005/12/12(月) 23:38:20ID:???もっと廚でも使える鯖業者と再契約が必要。
0449nobodyさん
2005/12/13(火) 00:22:09ID:???PHP の思想だね
0450nobodyさん
2005/12/13(火) 10:37:41ID:???HTMLとか画像うpが精一杯。
PHPは業者にでも依頼しな。
0451nobodyさん
2005/12/13(火) 16:11:09ID:vrSu5coJこの文の意味がいまいちわからないのですが、
whileの()内って条件式ではないですよね?
(条件式なら $row==になるはずですよね)
$row = mysql_fetch_array($result);
while ($row) {
でもOKなんでしょうか?
0452nobodyさん
2005/12/13(火) 16:21:20ID:???if ($i=0; $i<mysql_num_rows($result); $i++){
}
ということだよ。
0453nobodyさん
2005/12/13(火) 16:30:44ID:???真である限りループしろって構文なんだから。
0454nobodyさん
2005/12/13(火) 16:34:46ID:???空文字列
null
false
それ以外全部 真
0455nobodyさん
2005/12/13(火) 16:37:39ID:???>$row = mysql_fetch_array($result);
>while ($row) {
これだと無限ループ
0456nobodyさん
2005/12/13(火) 16:44:08ID:???「$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:???0459nobodyさん
2005/12/13(火) 17:35:02ID:???$row = mysql_fetch_array($result);
while ($row) {
処理
$row = mysql_fetch_array($result);
}
ならOK
0460nobodyさん
2005/12/13(火) 17:38:15ID:???$hoge = mysql〜(); //値を得る
if ($hoge == FALSE) break; // $hogeが空なら繰り返しを止める
# $hogeをごにょごにょ
}
これと同じ意味
0461nobodyさん
2005/12/13(火) 17:56:36ID:???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:???>>454の言う
「数値(文字)の0」が偽になるんで、気をつけてないとヤバス。
0464nobodyさん
2005/12/13(火) 19:12:34ID:???ttp://www.deformedweb.co.uk/php_variable_tests.php
0465428
2005/12/13(火) 19:45:11ID:0K/So0+jオススメの鯖とかある?
0466nobodyさん
2005/12/13(火) 20:39:57ID:l7fxNabVのちに誰かのために役立つよ。俺は勉強させてもらってるよ。
0467nobodyさん
2005/12/14(水) 04:21:42ID:???0468nobodyさん
2005/12/14(水) 05:38:47ID:cm5ebMj8この一文の意味がよくわからないので
頭のイイ人おしえてください
0469nobodyさん
2005/12/14(水) 05:43:41ID:???これって相手の回線の太さも原因の1つですか?
0470nobodyさん
2005/12/14(水) 06:27:01ID:???そんな事より、その例のものは何でこの様に書かないんだろうね?
見ていて気持ち悪い。
$start = isset($page) ? $page : 0;
0471nobodyさん
2005/12/14(水) 06:29:26ID:???■ このスレッドは過去ログ倉庫に格納されています