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

【PHP】くだらねぇ質問はここに書き込みやがれpart8

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2005/08/08(月) 01:18:55ID:54u1h4+D
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
0809nobodyさん2005/08/29(月) 14:05:29ID:???
すんません。>>792氏の関係で正規表現について教えて欲しいのですが、
半角数字のパターンは[0-9]だと思いますが、全角数字のパターンはどうすればいいのでしょうか?
[0-9]としたら範囲が空とエラー吐かれました。
08108092005/08/29(月) 14:22:42ID:???
>>804

実験的なステータスらしいが、mb_ereg_search_pos ってのがある。PHP4.2以上。
ttp://www.php.net/manual/ja/function.mb-ereg-search-pos.php
でもイマイチ使いづらいかも。
0811nobodyさん2005/08/29(月) 14:27:06ID:???
>>809
[0|1|2|3|4|5|6|7|8|9]
0812nobodyさん2005/08/29(月) 14:43:41ID:???
>>803
有難うございました。
無事、表示されました。

あと、Basic認証内ファイルの場合ですが、
indexは"Authorization: Basic"でクリアできますが
フレーム部分では認証がポップアップされます。
よろしければこの対策についてご教授願えますでしょうか?
08138102005/08/29(月) 14:48:45ID:???
>>811
うまくいかんです。関数の問題なのか、正規表現の問題なのか?

$ptn = "[0|1|2|3|4|5|6|7|8|9]"; //全角数字
$str = "abc8d2e89f"; // 結果 [0] => 7 , [1] => 1
//$str = "今日は8月28日"; // 結果 [0] => 1 , [1] => 1
mb_ereg_search_init($str);
$ary = mb_ereg_search_pos($ptn); // [0]は一致した先頭の位置、[1]は一致した長さ(バイト数)
print_r($ary);

$ptn = "8"; にすると [1] => 2 になるし。
0814nobodyさん2005/08/29(月) 14:55:26ID:???
>>813
スクリプトの文字コードと内部エンコード合わせてますか
0815nobodyさん2005/08/29(月) 14:55:31ID:???
>>813
文字クラスはダメだ。16進で指定してみれ。
08168062005/08/29(月) 15:02:25ID:???
>>806のreadfile ($fname); を、
fopenしてからfgetc一回したら3バイトのファイルができました。
2回fgetcしたら4バイトになりました。(相変わらず化けてます)
PHPの原理がよくわかってないので、なんか変な感じです。
これは設定が悪いのでしょうか?どなたかヒントください。
08178132005/08/29(月) 15:45:59ID:???
>>814
813ではスクリプト=EUC-JP、内部エンコード=SJISでした。
なので、mb_internal_encoding("EUC-JP"); としましたが結果は同じです。

>815
ここ(ttp://ash.jp/code/codetbl2.htm)見るとEUCでは「0」=A3B0、「9」=A3B9なので
$ptn = "[0xA3B0-0xA3B9]";
としましたがマッチしませんでした。
指定方法が根本的に間違ってるのかな?
0818nobodyさん2005/08/29(月) 15:58:06ID:???
16進エスケープは\xFFとかじゃ?
ってか、POSIXのEREって16進エスケープ対応してんの?
0819nobodyさん2005/08/29(月) 16:43:09ID:???
しばらく目をはなした隙にオソレスになりました。

>>805
PHP4.3.10です。
もしかしてPHP5なら全角でもOK?

>>796>>800>>808
mb_eregを使ってマッチした文字列から
非正規表現でマッチさせればよかったのですね。
勉強させていただきました。
0820nobodyさん2005/08/29(月) 16:43:35ID:???
>>788
ループさせるのは間違いじゃないが、$aaaの添字に$iを使ってしまうと、
行(外側のwhileループ)ごとに0から始まるから、
$aaa[0]が何度も上書きされることになりやすい。
$aaaの添字には別の変数を使え。

それから、最後の出力テストはprint_rを使うと便利。

もう1つの間違いについては>>778
08217852005/08/29(月) 17:50:13ID:???
>>789.790
サンクス
とりあえず、自分の環境ではないと動かないしあると動くので、おまじないと思って付けておきます。
0822nobodyさん2005/08/29(月) 18:25:09ID:???
         ( ( ( ) > ̄    ヽ、)),'^^'' 、
          , -―ー '"   ;   '     7   !)
         / , '"^、 `ー-、 _, -ー   !   /'|
      |'   _ミ7ゝ     ,.    !   / |
         ||  Y'    ::y'     :   |  |
       |.|   |     :     :   |  !
          |'   ! .'o,   |  '.o, !   |,/
       |   ヽ、  ,人     ノ   |
       !     | `゛´   ` ー 'ヽ   ノ
          i    |           ヽ、_, '
          ヽ、__ ノ          /
0823nobodyさん2005/08/29(月) 19:19:57ID:???
MySQLにデータを突っ込むときに勝手に\マークがエスケープされるんですが
どこをいじったらなおりますか?
08248232005/08/29(月) 19:27:17ID:???
表示するときにstripslashesで¥をトって表示して
MYSQLに入れるときにaddslashesで¥を付けていれたらいいのれすか?
0825nobodyさん2005/08/29(月) 21:21:05ID:???
円マーク2個重ねて
0826nobodyさん2005/08/29(月) 21:23:52ID:???
レンタルサーバーでPHPからImageMagickを動かしていたのですが
これをローカルで動かせるようにするにはどうしたらよいのでしょうか。

Apache2.0.54.0、OSはWinXPSP2、PHP5、
ImageMagick-6.2.0-Q16-windows-dll.exeを使いImageMagickをインストールした
ところまで来ました。
0827nobodyさん2005/08/29(月) 21:29:00ID:???
move_uploaded_file()について質問があります。
環境は以下の通りです。
Win XP
PHP 5.0.4
Apache 2.0.54

また、(ない知識を絞ったうえで)関連すると思われるphp.iniの設定は、
safe_mode = Off
register_globals = Off
doc_root =
file_uploads = On
upload_tmp_dir = "C:/tmp"
upload_max_filesize = 2M
です。

このような環境下で
move_uploaded_file($_FILES['file']['tmp_name'], $_FILES['file']['name']);
を実行すると、
Apache2のインストールディレクトリに$_FILES['file']['name']な名前の
ファイルが作成(移動)されてしまいます。
つまり、phpスクリプトが置かれているカレントディレクトリにファイルが移動されないんです。
この問題については、
http://jp.php.net/manual/ja/function.move-uploaded-file.php
に「Darrell」という方がそれらしい情報を投稿してくださってますが、
その解決策のようなものが見当たりません。

なので、よろしければ、
同じような問題に遭われた方がいらっしゃれば、
解決策や回避策など教えていただければと思います。
長文失礼しました。
08287742005/08/29(月) 21:54:14ID:???
遅レスすいません。
レスありがとうございます。

>>775
コマンド使えませんでした・・・。

>>776
それを参考にして色々やってみたいと思います。
ありがとうございました。
0829nobodyさん2005/08/29(月) 22:07:57ID:???
最近PHPを勉強し始めたのですが、
PostgreSQLをインストールして、PHPからアクセスするために
PHPのpgsqlモジュールが必要になりました。
ほかのモジュールをそのままでpgsqlモジュールだけ追加して使う方法は
あるのでしょうか。それともPHPの再インストールが必要なのでしょうか。
よろしくお願いします。

MacOSX10.3.9
Apache1.3.33
PHP4.3.9
PostgreSQL8.0.2
08308292005/08/29(月) 22:12:42ID:???
Mac板のプログラミングスレから誘導されてきました。
0831nobodyさん2005/08/29(月) 22:13:06ID:???
論理積について質問があります。
if (!isset($x) && !isset($y)) {
echo $giko;
}
else {
echo $mona;
}
上記のように条件分岐させているのですが、
$mona を表示させるか否かのみを判定したい場合はどの様にするのが格好いいでしょうか。
今のところは
if (!(!isset($x) && !isset($y))) {
echo $mona;
}
こんな風に対処したのですが、なんかカッチョ悪い・・・
0832nobodyさん2005/08/29(月) 22:16:37ID:???
>>823-824
>>672で既出
0833nobodyさん2005/08/29(月) 22:17:45ID:???
>>831
単純に
if(isset($x) && isset($y)) {
echo $mona;
}
でいいんじゃないの?
0834nobodyさん2005/08/29(月) 22:20:25ID:???
>>831
要は $x か $y のどちらかがセットされていたら $mona を表示でいいんだろ?
これではダメなん?

if (isset($x) || isset($y))
 echo $mona
0835nobodyさん2005/08/29(月) 22:24:45ID:???
>>831
それでいいんじゃないの?
if (!isset($x) && !isset($y)) { ; } else { echo $mona; }
って書き方もありっちゃあり。

ただ、!a && !b ってのは a || b と等価なんで(ド・モルガンの法則って奴)
>>831の上の奴は
if (isset($x) || isset($y)) { echo $giko; } else { echo $mona; }
下の奴は
if(!(isset($x) || isset($y))) { echo $mona; }
と置き換えられる。
0836nobodyさん2005/08/29(月) 22:30:14ID:???
あとは
echo (isset($x) || isset($y)) ? $giko : $mona;
くらいかな。
08378312005/08/29(月) 22:41:33ID:???
>>833-836
即レス有り難うございます!
ド・モルガンの法則・・・ウッ頭痛が・・・

三項演算子も使えたんですね。いつか使ってやろうと狙っているのですが思い浮かんだ試しがない・・・

早速書き直します。サンクス!
0838nobodyさん2005/08/29(月) 22:46:48ID:???
>>829
こっちも微妙にスレ違いだと思うけど…。
もとのPHPを残したいのはSoftwareUpdate対策?

手元にmacが無いので、ちゃんとは分からないけど、
普通にコンパイルオプション付けて入れ直したらよいのでは。
私はそうしてました。
んで、そのコンパイルオプションは、
デフォルトで入っている PHPの phpinfo() をコピペして必要なのを追加、がオススメです。

どうしても気になるなら、/usr/local/ に入れるなりして回避してください。
0839nobodyさん2005/08/29(月) 23:05:06ID:???
>>829
可能かもしれないし、駄目かもしれない。
使ってるPHPはどうやって作ったん?
取り敢えずpgsql.soとMac、php辺りでぐぐれ。
0840nobodyさん2005/08/29(月) 23:14:43ID:???
>>839

>>829のPHPは、macに標準で入ってるやつでしょう。
mac用のpgsql.so だけ配ってるなんて聞いたこと無いし。
なるべく他の環境を変えないようにするには、
ソース持ってきてコンパイルしか無かったと思う。
08418272005/08/29(月) 23:20:36ID:???
自己解決しちゃいました。
move_uploaded_file($_FILES['file']['tmp_name'], $_FILES['file']['name']);
↓
move_uploaded_file($_FILES['file']['tmp_name'], getcwd()."/".$_FILES['file']['name']);
この変更で、move_uploaded_file()がちゃんと動く鯖でも、
僕のような問題が起こる鯖でも、どちらでもちゃんと動きそうですね。
初歩的な質問な気がして、はずかしい・・。

ご迷惑をおかけしました。
ですが、もしphp.iniの設定などで今回の問題が直せるのでしたら、
ご存知の方是非教えてください。以上です。
0842nobodyさん2005/08/29(月) 23:51:18ID:???
何だか物凄い勢いで流れたので・・・再投稿スマソ。

ローマ字で
 aiueonn
と入力すると
 あいうえおん
と返してくれるライブラリーってないですか?

Javascriptでは見たことあるのですがPHPでないですかね?

宜しくお願いします。
0843nobodyさん2005/08/29(月) 23:55:01ID:???
自分で作ればええやん、と思いながら見てたけど、誰もレスしてなかったのか。。
0844nobodyさん2005/08/29(月) 23:55:51ID:???
>>842
自分は見たことない
JavaScriptのソースがあるなら、それ参考に作っちゃった方が早い気がする。
0845nobodyさん2005/08/30(火) 00:20:18ID:???
FORMで確認画面に遷移セッションに値格納
    ↓
submit
    ↓
セッションデータのデータをメールへ送信
unset( $_SESSION[data] ); //セッションデータを削除
    ↓
header('location: aaa.htm'); // 別ページへジャンプ

上記のようなスクリプトがあるんですけど。
ジャンプで飛ばした後、ブラウザの戻るを実行するとunsetした
セッションが復活してしまいます。

完全に消す方法はあるのでしょうか。
unset( $GLOBALS[_SESSION][data])でも消えませんでした。


0846nobodyさん2005/08/30(火) 00:23:00ID:???
>>829
phpのソースパッケージをダウンロードしてきて、
$ tar zxvf php-x.x.x.tar.gz
$ cd php-x.x.x/ext/pgsql
$ phpize
$ ./configure --with-pgsql=/path/to/postgres
$ make
$ sudo make install

いつもモジュールが欲しくなった時はこんな感じでやっつけてる。
あとはdl()かphp.iniでロードするだけ。

ひょっとしたらapacheでDYLD_LIBRARY_PATHを設定する必要があるかも
それはpostgresのインストール方法次第だと思うけど、postgres使った事無いからわからん。

/path/to/postgres がどこかは自分で考えろよ。
08478292005/08/30(火) 00:55:02ID:???
>>838,839,840,846
レスありがとうございます。

>>840さんのおっしゃる通りMacに標準ではいっているPHPです。
それでソースから全部インストールするのを躊躇っていました。

phpinfo()からConfigure Commandをコピペして
"--with-pgsql='postgresのパス'"を加えて再インストールしてみます。

DYLD_LIBRARY_PATHのことはこれから調べてみます。
ありがとうございました。
0848nobodyさん2005/08/30(火) 01:02:01ID:???
>>842
質問してばっかだなお前ーぶぶぶーwww
ただ置換すればいいだろぼけなすーwwwww
そんくらい自分で書けやかすーwwwwww
0849nobodyさん2005/08/30(火) 01:07:11ID:FCdiEo7p
./A.html →(ファイル内呼び出し)→ ./script.php →(データ読み書き)→ ./data.log

こんな感じでPHPだけ"script.php"というファイルにまとめていろんなファイル
から呼び出しています。さらに"script.php"からデータの読み書き用に"data.log"という
ルートにあるファイルにアクセス。

さて、ここで

./folder/B.html →(ファイル内呼び出し)→ ./script.php →(データ読み書き)→ ./data.log

という呼び出しをしたとき、script.phpが"./data.log"にアクセスできないと
エラーを返します。つまり"./folder/data.log"にアクセスしようとしてエラーに
なっているんですね。呼び出すhtmlファイルの場所に依存してscript.phpから
毎回エラーを返されるのは正直鬱陶しいんですがみなさんどうされてます?

せめてscript.phpからdata.logを相対パスで呼んでくれればこんな問題は
生じないんですがね。
0850nobodyさん2005/08/30(火) 01:13:27ID:???
>>848
単純な置換で事足りるわけない。
お前がやってみろクズ
0851nobodyさん2005/08/30(火) 01:29:52ID:???
>>850
図星突かれてそんなに悔しかったのか?wwwwww
誰がいつどこで「単純な置換で事足りる」っつったんだ?wwwwwww
本人だとしたらさすがすぎるwww低脳丸出しだなwwwwww
0852nobodyさん2005/08/30(火) 01:30:41ID:???
>>850
別に単純な置換繰り返すだけで出来る気がするんだけど?
元のJavaScriptとやらの提示がいないので、ご希望の精度が得られるかどうかは不明だけど。

というか、正規表現置換(ereg/preg_replace)とかstr_replaceとかだけが置換じゃないよ。
自分でパターンを置き換える処理も立派な置換だ。

んで、作れって言うんだったらスレ違い。↓へどうぞ。
■こんなCGI作ってください■
http://pc8.2ch.net/test/read.cgi/php/1102980903/
0853nobodyさん2005/08/30(火) 01:32:38ID:???
ttp://la.ma.la/misc/js/roma.html を移植するのなら結構簡単だと思うなー。
0854nobodyさん2005/08/30(火) 01:58:25ID:???
>>851
だから、お前がスクリプト書いてみろって言ってるんだよ、カス
0855nobodyさん2005/08/30(火) 02:21:32ID:???
学校の課題が出来ずに焦っている>>854がいるスレはここですか?
0856nobodyさん2005/08/30(火) 02:41:40ID:???
>>854
糞面白いなお前wwwwwwこんなのも書けないなんて障害あんじゃねーの?wwwwww
0857nobodyさん2005/08/30(火) 02:46:17ID:???
853のソース見たんだけど、PHPに(「charCodeAt」みたいな)文字を文字コードに変換する(?)関数か方法ってあるの?
08588572005/08/30(火) 02:47:46ID:???
ごめん。勘違いしてた。忘れてくれ。
0859nobodyさん2005/08/30(火) 12:51:39ID:zspoZiNa
ム板に誰かスレ立てたな?

【祝】コマンドラインから始めるPHP【プロ板進出】
http://pc8.2ch.net/test/read.cgi/tech/1124990165/l50


これならまあええが、
下のは何だ。厨は単発質問糞スレ立てるな。

phpでデリミタしたら配列内に改行
http://pc8.2ch.net/test/read.cgi/tech/1124583843/l50
phpについて教えてください!
http://pc8.2ch.net/test/read.cgi/tech/1125139051/l50

PHPでExcelのテンプレートに値を入れたい
http://pc8.2ch.net/test/read.cgi/tech/1125207985/l50


0860nobodyさん2005/08/30(火) 13:52:59ID:???
PHPファイルにbase64でエンコードしたGDフォント(*.gdf)を埋め込んでみたいと
考えているのですが、ヘッダはどのように指定すればよろしいのでしょうか?
0861nobodyさん2005/08/30(火) 15:45:20ID:???
>>842
>853紹介のスクリプト(ttp://la.ma.la/misc/js/roma.html)を移植したぞ。
$roma["hiragana"]は ttp://la.ma.la/misc/js/roma.js を参考に2次元連想配列で作ってくれ。
 $roma["hiragana"] = array("a" => "あ","i" => "い",.......); な風にして。
また今は関数外に出してるけど必要なら関数内に入れてくれ。

function roma2hiragana($text){
return roma2x($text,"hiragana");
}

roma2x()は次↓
08628612005/08/30(火) 15:46:09ID:???
function roma2x($text,$to){
$skip = 0; $len = strlen($text);
global $roma; // $romaを関数内に入れるなら不要
for($i=0;$i<$len;$i++){
if ($skip > 0) { $skip--;
} else {
$temp = substr($text,$i,1);
if (ereg("[a-zA-Z.,-]",$temp)) { //[a-zA-Z.,-]
$loop = 4; $f=0;
while($loop){
$temp = substr($text,$i,$loop);
if (isset($roma[$to][$temp])){
$kana = $roma[$to][$temp];
if($loop == 2){
if($kana == "っ"){$i--;} //「っ」の場合、一文字戻す
$skip = 1;
}else{ $skip = $loop-1; }
$f=1;
$newarray[] = $kana;
break;
}
$loop--;
}
if(!$f){$newarray[] = $temp;} // $f == 0
} else {
$newarray[] = $temp;
}
}
}
return implode($newarray); // stringで返す
}
0863軟式PHP2005/08/30(火) 17:16:10ID:???
>>862
いい奴だな。
0864nobodyさん2005/08/30(火) 21:18:35ID:???
定数に値を入れる時にヒアドキュメントを使いたいです。

define( "TMP", <<<END );
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END;

こういう使い方って無しでしょうか?
ちなみに上記だと実行時にエラーになります。
0865nobodyさん2005/08/30(火) 21:30:21ID:???
>>864
define('TMP', <<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END);

echo TMP;
0866nobodyさん2005/08/30(火) 21:35:01ID:???
>>865
864じゃないけどエラーでるぞ。

>>864
これはダメ?

$var = <<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END;

define("TMP", $var);
08678642005/08/30(火) 21:47:10ID:???
>>866

今はその方法にしてます。

ただ、Perl使ってたときはできた書き方なので、
同じようにスマートにならないかなーと思った次第です。
08688662005/08/30(火) 22:05:48ID:???
>>867
これだと出来た。

define('TMP',
$var = <<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END
);

または、

define('TMP',
<<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END
);

でもPHPエディタだと両方とも色分けが変になるから微妙だったけど。
08698682005/08/30(火) 22:15:36ID:???
すまん。>865の方法も少し変えたら出来た。
ヒアドキュメントの終端マーク?(END)を単独で1行にすれば良さげ?

define('TMP',<<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END
);
0870nobodyさん2005/08/30(火) 22:21:58ID:???
変換後の変数=置き換え関数("aiueonn","あいうえおん",送信されてきたデータ)
0871nobodyさん2005/08/30(火) 22:26:38ID:???
$line=file($file);
$end=count($line)-1;
echo $line[$end]
最後の行をだす。
0872nobodyさん2005/08/30(火) 23:20:26ID:eL6jzClK
MySQLの段落ありのデータをechoで表示する場合、
段落が認識されず、表示されてしまいます。

良い解決方法はないでしょうか?
08738642005/08/30(火) 23:24:41ID:???
>>866

ありがとうございます。
その方法でいってみます。

(確かにPHPエディタで色変わらないのは気持ち悪いですね…)
0874nobodyさん2005/08/30(火) 23:25:22ID:???
>>872
nl2br
0875nobodyさん2005/08/30(火) 23:50:56ID:???
単純な質問でごめんなさい。
whileで“00”〜“20”までを繰り返すとやりたいのですが、

$hage = "00";
while ($hage != "20") {
$hage++;
}

$hageの変数を2桁に固定するにはどうすれば良いのでしょうか。
08768752005/08/31(水) 00:05:59ID:???
ほんと、単純でしたね…。解決しました。
$page = "00";
while ($page != "20") {
$page = sprintf("%02d", $page);
$page++;
}
0877nobodyさん2005/08/31(水) 00:08:42ID:???
>>876
あの、それなら最初から
$page = 0;
while ($page != 20) { ... }
の方が良いですよ。
0878nobodyさん2005/08/31(水) 00:15:28ID:???
$page = 0;
while ($page++ < 20) { ... }
0879nobodyさん2005/08/31(水) 00:19:29ID:???
>>878
それだと、1からになってしまう…
0880nobodyさん2005/08/31(水) 00:21:28ID:???
>>878
その場合は、$page= -1;
0881nobodyさん2005/08/31(水) 01:38:45ID:???
404のエラードキュメントをphpで作りたいと考えてます。
その時に、要求アドレスによって、表示を分岐させたいと考えてるのですが、
要求アドレスがどうしても取得できません。

これは無理なのでしょうか。
0882nobodyさん2005/08/31(水) 02:03:00ID:???
>>881
っ[セッション]
08838812005/08/31(水) 02:33:16ID:???
>>882
セッションを使った方法を考えてみましたが、分かりませんでした。
404を出すアドレスにアクセスした時点では、
何もアクションが起こせないので、セッションも登録できないと思うのですが、
具体的な方法を教えていただけないでしょうか。
0884nobodyさん2005/08/31(水) 02:58:42ID:???
>>881,883
要求アドレスって存在しなかったページって事ですよね?
$_SERVER[REDIRECT_URL] や $_SERVER[REQUEST_URI] で拾えました。

環境:linux/apache2.0.54/PHP5.0.4
08858842005/08/31(水) 03:01:26ID:???
勘違いしてたゴメン
0886nobodyさん2005/08/31(水) 03:23:57ID:???
>>878だと$pageが18で終わりになる?それとも19?20まではいかないよね?
「インクリメントした後の$pageが20未満」なのか
「インクリメントしたら20未満の$page」なのか
どっちの意味になるんだろ?
08878812005/08/31(水) 03:27:31ID:???
>>884
要求アドレスは存在しなかったページを意味してます。
ですが、無理みたいですね・・・。

phpでは無理なんでしょうか。
0888nobodyさん2005/08/31(水) 03:31:59ID:???
.htaccess使わなきゃ
0889nobodyさん2005/08/31(水) 03:33:40ID:???
>>886
基礎からやり直せ
08908862005/08/31(水) 03:36:04ID:???
「20未満の$pageについてインクリメント&ループ実行」ってことでいいのかな?
08918812005/08/31(水) 03:37:18ID:???
>>888
.htaccessをどのように使えばいいのでしょうか。
今も.htaccessはありますが、ErrorDocumentの記述があるだけです。
08928842005/08/31(水) 03:44:16ID:???
>>887
あれ?ダメですか?
存在しないページなら>884の通り、$_SERVER[REDIRECT_URL] や $_SERVER[REQUEST_URI] で拾えましたよ。

print "REDIRECT_URL=[".$_SERVER[REDIRECT_URL]."]<br>\n";
print "REQUEST_URI=[".$_SERVER[REQUEST_URI]."]<br>\n";

で存在しないページ(例:http://192.168.0.111/test/ttt.html)が「/test/ttt.html」として取得できました。
SERVER_ADDRやHTTP_HOSTでIPアドレスも取得できるからURLも取得できますし。
ためしに404のエラードキュメントPHPで print_r($_SERVER); してみては?

その前に404のエラードキュメントをPHPで使えるようになっているのでしょうか?
08938812005/08/31(水) 03:51:02ID:???
>>892
REDIRECT_URLは空文字で、
REQUEST_URIの方には404.htmlの方が入ってました。

マニュアルでREQUEST_URIの箇所を読む限りでは確かにこれで取得できそうですが…。

$_SERVERは、print_rで見ましたが、それらしき値はないです。
0894nobodyさん2005/08/31(水) 03:56:32ID:???
>>890
ttp://www.php.net/manual/ja/language.operators.increment.php
08958812005/08/31(水) 04:00:18ID:???
解決しました。

ErrorDocumentの書き方がまずかったようです。
絶対パスを指定したのですが、これを相対パスにすることで直りました。
絶対パスだと、ページ自体のリダイレクトが行われてるんですかね。

丁寧に答えてくださった方、ありがとうございました。
0896nobodyさん2005/08/31(水) 04:04:38ID:???
>>893
自前サーバ? レンタルサーバ?
要求アドレスの取得に関係なくPHPファイルがエラードキュメントとして使えるようにしてますよね?
0897nobodyさん2005/08/31(水) 07:34:23ID:???
>>886
$var++と++$varの違いは基本なので
0898nobodyさん2005/08/31(水) 09:11:56ID:eJmHKqbd
これでどうして 2005-08-31にならないのかな?

$dy=mktime(0,0,0,date("m"),0,date("Y"));
echo date("Y-m-d",$dy);
0899nobodyさん2005/08/31(水) 10:48:10ID:???
echo date("Y-m-d", time())
0900nobodyさん2005/08/31(水) 11:42:07ID:???
2005-08-00→2005-07-31と修正されるからでしょ。
echo date("Y-m-d")でいいじゃん。
0901nobodyさん2005/08/31(水) 12:30:49ID:???
>>861
ありがとうございます。
感謝感謝
0902nobodyさん2005/08/31(水) 14:01:37ID:???
携帯サイト作ってるんですが、USER AGENT偽装対策する方法ありますか?偽装してる場合はエラーを吐くような。
0903nobodyさん2005/08/31(水) 14:14:29ID:???
>>902
hostで判断するしかないんじゃないか?
docomo.ne.jp以外は弾く、みたいな。
0904nobodyさん2005/08/31(水) 14:20:31ID:???
携帯から失礼します。
今オークションを携帯で見れるようなものを作ってます。

まず題名のみを抽出して表示するところまではできました。
題名を押すとリンク先を表示するところで行き詰まってます。
一応できたのですが題名を押すとphp?no=1という所に行きまた詳細を抽出する方法です。
このno=1とうのを20個近く作らなければいけない無駄なやり方でした。

これをもっとスマートにしたいのですが良い方法が思い浮かびません。

何か良い方法があったら教えてほしいです。
説明へたですいません。
0905nobodyさん2005/08/31(水) 14:55:32ID:???
>>904
題名とno=○を配列に入れてforで回すのではダメなの?
0906nobodyさん2005/08/31(水) 14:59:23ID:???
>>903
おぉ、その手がありましたね。USER AGENTにばかり目がいってました。ありが�d。
0907nobodyさん2005/08/31(水) 15:05:27ID:???
デストラクタの使い方がよく分からないのですが、
class hoge {
var $test;
function __construct($a, $b) {
$this->test = array($a, $b);
}
function __destruct() {
unset($this->test);
}
}
こんな感じでいいのでしょうか。
0908nobodyさん2005/08/31(水) 15:13:20ID:???
>>907
俺も良く判らんけど、__destruct って、そのオブジェクトを解放するときに処理するんじゃないの。
メソッドもオブジェクトに含まれるので、unsetする必要はないかと。

class hoge {
var $test;
function __construct($a, $b) {
$this->test = array($a, $b);
}
function __destruct() {
print_r $this->test;
}
}
$ob = new hoge(1,2);
unset($ob);
レス数が900を超えています。1000を超えると表示できなくなるよ。