【PHP】質問スレッド Part6
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
02/12/04 16:55ID:???http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ及び注意事項等は、>>2-10あたりに
0809nobodyさん
03/01/25 18:20ID:???0810nobodyさん
03/01/25 18:26ID:???もう一度見直してごらん。動いている方をコピペするのが望ましい。
>>808
preg_replaceの中でurlencodeを文字列連結してるのがマズイんじゃないかな。
貼ってあるのを実行してみたら、
parse error, unexpected T_DNUMBER, expecting T_VARIABLE or '$' って出たから。
T_DNUMBERってのは浮動小数点のことだから . を小数点と思ってるらしい。
0811806
03/01/25 18:34ID:0e7Y0sPnurlencode(ほげほげ) OK
urlencode($1) NG
なんですよ
どうしてなんでしょう?
0812nobodyさん
03/01/25 19:02ID:J+PAIJA/らしいので、4.0.4以前なら、\\1を書かないといけない
0813nobodyさん
03/01/25 19:06ID:???ソースDLしてきて確認しますた。\\nになってますた。
0814nobodyさん
03/01/26 01:41ID:ocSHdA01HogeClass::staticMethod( $this->classhoge );
HogeClass::staticMethod( $this->classahoaho );
だと大丈夫なのに
HogeClass::staticMethod( $this->classname );
だとデバッグエラー・・・。
でもPHPは問題なく実行できる。
webstudioのバグかなぁ。
エディタのためになんて
ソース書き直したくないよー!ヽ(`Д´)ノウワァァン
0815nobodyさん
03/01/26 09:36ID:???$message = preg_replace_callback("/http:\/\/([\x21-\x7E]+)/",'a',$message);
function a($b) { return '<a href=\"http://ime.nu/"'.urlencode($b[1])."\" target=\"_blank\">http://$1</a>"; }
と preg_replace_callback を使ってみるとか。
>>807
header の後に exit を入れ忘れているのでは?
0816nobodyさん
03/01/26 11:49ID:???DBGのバグかも?
確認しないで言ってるけど。
>エディタのためになんて
>ソース書き直したくないよー!ヽ(`Д´)ノウワァァン
バグ対応待った方が賢いかと。
0817nobodyさん
03/01/26 12:06ID:???0818nobodyさん
03/01/26 12:09ID:sMLM3DXM0819nobodyさん
03/01/26 12:15ID:???0820nobodyさん
03/01/26 13:53ID:???classname に2バイト文字入ってる?
ttp://webstudio.japansite.org/modules/newbb/viewtopic.php?topic_id=25&forum=4&13
0821nobodyさん
03/01/26 17:01ID:???0822nobodyさん
03/01/26 17:02ID:???0824名無しさん
03/01/26 21:28ID:???@array = <FILE>;
(B)配列をファイルハンドルに書き込み
print FILE @array;
(C)ソケットから1行ずつ配列に読み込み
while (<$socket>) {push(@array,$_);}
PHPで(A)(B)(C)それぞれできるだけシンプルにやるにはどうすればいい?
0825gn355my0
03/01/26 21:56ID:???(A)
system("perl -e '@array = <FILE>'");
(B)
system("perl -e 'print FILE @array'");
(C)
system("perl -e 'while (<$socket>) {push(@array,$_);}'");
0827807
03/01/26 23:31ID:sz9i/LMGレスありがとうございます。
ソースを貼ろうにも、どこまで貼って良いのやら悩んでます。
exit を付けてみたのですが変わらないですね。もともと全ての処理が終わった後に
リダイレクトかけてるので、関係ないといえばないのでしょうが。。
あれからもう少し試していたのですが、ますます分からない状況に・・・
場合によってはリダイレクトが効くことを見つけたのですが、条件がよく分かりません。
現在、こうなっています。
aaa.php →[POST]→ bbb.php →[リダイレクト]→ ccc.php or ddd.php
1) aaa.phpのフォームから値を受けとって、bbb.phpで処理。
2) その後、処理分岐で ccc.php または ddd.php にリダイレクト。
ところが、aaa.php のフォームに入力する値によってリダイレクトできたりできなかったりするようなんです。
どなたか分かる方いらっしゃいませんか?
bbb.php の構造は以下のようなものです。
0828807
03/01/26 23:31ID:sz9i/LMG<?php
if (isset($_GET['btn_save'])) {
// 保存ボタンが押されていれば
// TEXTAREAの内容をファイルに書込む
(省略)
// 今入力したデータの参照画面へリダイレクト
header("Location: http://xxxxx/xxx/display.php?id=" . $id);
} else {
// そうでなければ何もせず元画面へリダイレクト
header("Location: http://xxxxx/xxx/index.php");
}
?>
-------------------------------
0830nobodyさん
03/01/27 00:41ID:???ページ内にプルダウンメニューとテキストボックスと送信ボタンがあって。
プルダウンメニューにはサイト名(red、blue、yellow、など)
テキストボックスには日付(030127)を入力し、送信ボタンを押すと
http://www.red.aa/hoge/030127のサイトを別ウィンドウで開くようにしたいのですが
どうすればよいのか教えていただけませんか?
どうかご教授のほどよろしくお願いいたします。
0832nobodyさん
03/01/27 01:40ID:???0833nobodyさん
03/01/27 02:37ID:???スレ違いでは、、。
0834nobodyさん
03/01/27 02:38ID:0+jZJ41uヒントだけ。
<form action="redirect.php" method="POST" target="_blank">
header( "Location: http://www.".$_POST[color].".aa/".$_POST[date] );
JavaScriptでやるのが一番スムーズだけど板違いなので(w
0835nobodyさん
03/01/27 07:15ID:???0836nobodyさん
03/01/27 07:27ID:???http://php.planetmirror.com/manual/ja/ref.mbstring.php
0837nobodyさん
03/01/27 08:47ID:???(省略)した部分で、エラーとか何か文字列が出力されているということはない?
header 関数の仕様をマニュアルで確認してみると何か分かるかも。
http://jp.php.net/manual/ja/function.header.php
0838nobodyさん
03/01/27 13:56ID:???コード解析がよくなるって聞いたんで楽しみにしてるんだけど。
0839nobodyさん
03/01/27 15:29ID:???Windows2000 + PHP4.3.0 + Apache2.0.44 の環境で動かしているのですが、
Apache起動時(PHPモジュール読込時)に、
Unknown(): Unable to load dynamic library 'C:\usr\php\extensions\php_*.dll' - 指定されたモジュールが見つかりません。
とエラーが出て、DLLが読み込まれてくれません。
# *の部分は使おうとした(php.iniのコメント指定を外した)DLL全ての意味で、実際はimap等の文字が入ります。
PHPのインストール先は"C:\usr\php"で"C:\usr\php\extensions\"以下に該当するDLLは間違いなく存在しています。
php.ini内の記述は
extension_dir = "C:\usr\php\extensions"
となっています。
他に"/usr/php/extensions/"や、"C:/usr/php/extensions/"という指定も
試しましたがエラーメッセージのパス部分が置き換わるだけで全て駄目でした。
googleで検索したところ、同様のトラブルをいくつか(国内外問わず)発見しましたが
全て未解決のままのようでした。
この"PHP質問スレッド Part2"の743にも似たような記述があります。
# 提示する情報が少なすぎて、相手にされなかったようですが。
同様のトラブルに見舞われ、
その後こうしたら解決したという方がおられましたら、
対処法をお教え頂けないでしょうか。
よろしくお願いします。
0840839
03/01/27 15:45ID:???php.iniは"C:\WINNT"内にあります。
また設定の変更は有効になるので、php.iniは読み込まれているようです。
>>839の書き込みが長くなっているので要約すると、
extension_dirの設定は間違いなくあっているのに、
DLLが読み込まれないという状態です。
0843nobodyさん
03/01/27 16:14ID:uLZ+Nd5N%2b とか %3f とかに置換する関数ってどれだっけ?
0846nobodyさん
03/01/27 16:49ID:???みたいなかんじで .htaccessで php 使用の許可/不許可を制御するには
どうしたらよいのですか?
0847nobodyさん
03/01/27 16:59ID:FKaVhwP2Winでこういう書き方できるんだけっけ?>php_*.dll
きちんと並べて書いたらできたりしない?
0848nobodyさん
03/01/27 17:10ID:???作りたいんですけど、どんな風にやればいいんですか?
「テキストみたいに一行読み取っては書き込むってのを繰り返す」でいいんですか?
0850849
03/01/27 17:14ID:???0851nobodyさん
03/01/27 17:30ID:???一バイトだけって読み込めないんだよね。最初知ったときびっくりした。
利用方法思いつかないから別にいいんだけど。
0852848
03/01/27 17:46ID:???レスありがとうございます。
それってfreadで読んで適当なファイルにfputsでいいんですか?
どうもうまくいかないのですが全然間違ったことやってます?
0854853
03/01/27 17:51ID:???0855nobodyさん
03/01/27 17:57ID:???0856848
03/01/27 18:00ID:???保存のときにwでfopenすると崩れた画像になって
bでfopenするとエラーになります。
ブラウザに表示させるときれいに表示されます。
>もちろんHTTP(だよね?)のヘッダーは取り外しているよね?
何度も質問すいません。それってどうやるんですか?
0857nobodyさん
03/01/27 18:14ID:???AddType text/html .php
にしたら普通のhtmlとして表示される。
ソース丸見えだけど。
>>855
<? include ("foo.php"); ?><? include ("foo.txt"); ?>
<? require ("foo.php"); ?><? require ("foo.txt"); ?>
<? virtual ("foo.cgi"); ?>
<? readfile ("foo.txt"); ?>
0859858
03/01/27 18:23ID:???(´・ω・`)ショボーン
0860853
03/01/27 18:30ID:???> 何度も質問すいません。それってどうやるんですか?
fopenでURLを開いている場合は必要ないよ
保存するときに>>859のようにモードを指定して開く。
そうしないとLFがCRLFに変換されてしまう。
0861nobodyさん
03/01/27 18:33ID:???がはじめの行にあるとphpが動かないんだが。
やっぱフリーウェアじゃ駄目なのかな。
0863848
03/01/27 18:35ID:???無事保存できるようになりました。
どうもありがとうございました。
0864nobodyさん
03/01/27 18:48ID:???virtualをいれた位置よりも遥か前に書き出される)んですが、おなじ現象の人います?
XP+Apache2.0.44+php4.3.0なんですが。
0865nobodyさん
03/01/27 18:51ID:137vpvvh<!-- exec cmd="hoge" --> って使えないんですか?
<? echo("<!-- exec cmd=\"uptime\" -->") ?>ってな感じで
試してみたんですけど、ダメでした。
.htaccess で
Options Includes
AddType text/html .phtml
AddHandler server-parsed .phtml
って書いて .phtml でSSIを実行させたら、今度はPHP動かないし・・・
0866nobodyさん
03/01/27 18:56ID:???なんでわざわざPHPでSSI使うの?
0867nobodyさん
03/01/27 18:57ID:???CGIの出力によるSSI命令は解釈されない(Apacheの本より)のと同じじゃない?
# それにしてはhypermartではできたんだよな・・・Apache 1.3.9よりも後のバージョンならできるのかしら。
0868839
03/01/27 21:29ID:???"php-*.dll"はここで説明する時に、
どのDLLでも同じという意味でそう書いただけで、
php.iniの中では、extension=php_pgsql.dll というように実際のファイル名で書いています。
(まぎらわしい書き方で済みません)
>>841
相対指定にしても、エラーメッセージが".\extensions\php_*.dll"となるだけで変化無しです。
実際に使うときは>>842で言われてるように、
カレントがPHPのパスになるか、スクリプトのパスになるか、Apacheのパスになるか、
あるいは別の呼出し元のパスに分かりませんし。
>>861
PHPの設定で、ショートタグを無効にすればいいはずですよ。<XMLとの共存
その代わり、<? hoge(); ?>じゃなくて
必ず<?php hoge(); ?>としなければならなくなりますが。
0869nobodyさん
03/01/27 22:09ID:Y5jXCX7aブラウザからPHPを介してメール送信したいのです。
しかし、mail関数がエラーを返します。恐らく、プログラムではなく、
設定不足ではないかと。
php.ini、pear\sendmail.phpなどの設定変更は必要でしょうか?
また、mb_send_mailもCall to undefined function: mb_send_mail()となります。
インクルードファイルが足りないのでしょうか?
合わせてご教示願います。
0870841
03/01/27 22:33ID:???関係なかったですかスマソ。俺のphp.ini(デフォルトのまま)は相対パスで書いてあったもんで。
いっぱいDLLを読み込もうとしているんだよね。
たとえばどれかひとつだけにしてみたらどっすか。変わらないかな。
あっちなみに俺のphpは4.2.2っす。
0871nobodyさん
03/01/27 22:35ID:???php.ini
SMTP = あなたの使うsmtpサーバ名
sendmail_from = 送信者として@表示する.メールアドレス
0872865
03/01/27 22:37ID:137vpvvh使いたいのは、SSIカウンタというか、アクセス解析でした。
http://www.cj-c.com/cgi_s/access.htm なんですが。
現在は JavaScript でリファラを取得して使ってるんですが、それだと
ソース見たらランキングを設置してる場所がバレてしまいます。
こっそり設置して一人で、にやそ(´ー`)ってしたいのです。
>>867さん
Apache のバージョン確認したら1.3.26 でした。
うーん、1.3.9以降なら出来るのでしょうか・・・
鯖管にバージョンアップしろやゴルァって言ってみようかな・・・
ご教授ありがとうございました。
WINNT\System32とかにlibeay32.dllがあるか?
無い場合は、php\dllsにある奴をSystem32へコピーしてみる。
それでもダメな場合はssleay32.dllもコピーして味噌。
一度にコピーせずに、一つずつ確認して報告汁!
0875865
03/01/27 22:50ID:137vpvvhレスありがとうございます。
えっと、リファラがないと、どこから飛んできたか解らないので
アクセスランキングの意味が・・・
わがままでごめんさない。
0876869
03/01/27 23:04ID:Y5jXCX7aどうも有難うございます。
送信できました。
mb_send_mail()はどうでしょう?
0877839
03/01/27 23:11ID:???解決しました。
php.iniを"Windowsのメモ帳で編集して保存する"とこのエラーが出るようです。
新しくphp.ini-recommendedをベースに設定ファイルを作成しなおし、
編集をxyzzy(*1)のみで行ったところ、正常に認識されました。
# さらに再びメモ帳で編集すると同じエラーが出ました。
(*1)フリーウェアのテキストエディタです。
文字コードや改行コードはShiftJISでCR+LFのままです。
メモ帳で編集している人は他にも大勢いると思うのですが…不思議です。
(WindowsのDLLのバージョンが関係しているのでしょうか?)
結局のところ、根本的な原因は不明です。
>>841さん、>>842さん、>>847さん、ありがとうございました。
php.iniをメモ帳で編集しなければ大丈夫のようです。
同様の症状が出ている方の参考になれば幸いです。
0878839
03/01/27 23:24ID:???書き込み見落としてました。済みません。
原因は>>877に書いた通りだったのですが、
エラーの確認作業の時は、
依存関係の無いDLL(php_bz2.dllなど)1つだけにして行っていました。
ありがとうございました。
# メモ帳を信用出来なくなりました…。
0880839
03/01/27 23:33ID:???後学のために、その仕様というのを教えて頂きたいのですが。
メモ帳で保存したファイルと他のテキストエディタで保存したファイルに、
まったく違いが見られない(ファイルサイズ、改行コード、文字コード)ので気になります。
0881nobodyさん
03/01/28 01:26ID:???0882nobodyさん
03/01/28 01:55ID:???0883nobodyさん
03/01/28 03:01ID:???とすると、index.htmlのあとに a が出力されます。
なんで?
0884839
03/01/28 05:34ID:???いや、さすがにそれは無いです。
そもそも、php.ini.txtになったら読み込みにもいってくれませんし。
fcで比較をとっても、
FC: 相違点は検出されませんでした。
と出るので、不可解に思っているわけです。
0885nobodyさん
03/01/28 09:33ID:???ひょっとしてphp.netから落としてる?
あれは元々日本語のこと考えられてないから
仕方ないと思うけど。
0886nobodyさん
03/01/28 15:39ID:kRPl3+8lhttp://pc.2ch.net/test/read.cgi/esite/1031482990/413
PHPがわからない人は 必見だね
0887nobodyさん
03/01/28 15:42ID:???拡張子の打ち間違いかな?
一部だけど、インクルードファイルも見えました。(はぁと)
> $words[$i] ="(news like '%$words[$i]%')";
インデックスなしの検索がどのように使われているのか興味が
あったんだけど、みあたんなかった。
0889nobodyさん
03/01/28 21:06ID:???0890nobodyさん
03/01/28 21:42ID:YAt4VdBaPHPとMS ACCESSのデータベースを使って、WEBを構築しています。
そこでPHPでデータベースにコネクト、そして文章を取り出して、
$body = [DBから取り出した文章];
というように、ひとつの変数に入れ込んだのですが、
変数をHTML内に表示したところ、文章が途中で切れてしまうのです。
自分の予想としては変数のサイズの限界があるんだろうな。。なんて
考えているのですが、どうしたらよいでしょうか?お願いします。
0891nobodyさん
03/01/28 22:55ID:???1. 文字にHTMLにしたら表示が消えるようなもの
2. MS ACCESSとPHPを繋ぐ部分にサイズ制限
3. PHPの変数にサイズ制限
具体的に切れるバイト数を出すとピンとくる人がいるかもよん。
(新鯖記念パピコ)
0892nobodyさん
03/01/28 23:47ID:1yvFtiYN質問対象のバージョンはPHP4.1.2(微妙に古いですが)です。
コンフィグオプションに
--with-pgsql=(Postgresのインストールパス)
っていうのがあり、、これを指定することでpg_*などの関数が
使えるようになるじゃないすか?
(これはこういう理解であってますよね)
でも、Postgresが別のサーバで動いている場合は
ここにパス指定しようが無いと思うんだけど、
そういう場合はどうするのですか?
このオプションなしでコンパイルしてみたけど、pg_connect()呼ぶと
Fatal error: Call to undefined function: pg_connect()
とか怒られるし...。
--with-pgsql だけでconfigure走らせてもpathがnullだみたいにいわれて
怒られるし...。ムキー!
おしえてくさい。
OSは?
FreeBSDならPortsの「postgresql-devel」だけ入れればいけそう。
Redhatでもそんな名前のrpmあるはずだから、それをいれれば。
一番確実なのは素直に接続するPostgresと同じバージョンのPostgresを
PHP動かす鯖にも入れることだけど。
0894892
03/01/29 10:43ID:???そうか、ダミーで同じPostgresを入れるって手はありましたね。
ひとまずそれで逝ってみます。
どうもでした。
0896nobodyさん
03/01/30 00:30ID:???あっちはASPだったけど。
0897nobodyさん
03/01/30 01:09ID:???落とし損ねた…。
0899nobodyさん
03/01/30 01:29ID:???すまん。ほんとだ。
さっき見たとき404だった気がしたんだが…>search.php3
0900nobodyさん
03/01/30 02:38ID:???0901nobodyさん
03/01/30 22:54ID:???掲示板でプロキシ経由の書き込みを排除したいんです。
その場合、
ttp://www.cybersyndrome.net/
から手作業でホストを登録していくしか手がないのでしょうか?
0902nobodyさん
03/01/30 23:31ID:???プロキシの判定って確実な方法って無いんよ。
1. プロキシ特有の環境変数がセットされてるかチェック
2. javaを使ってIPを取得し、CGIを比較
こんなとこかなぁ。まぁどっちとも確実じゃないけど。
0903nobodyさん
03/01/30 23:33ID:???CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較
CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較
CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較
CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較
CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較
CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較
CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較
CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較
CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較
CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較CGIを比較
0905nobodyさん
03/01/31 02:04ID:NbV66Yrkif ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value,'sjis');
if (!$allow_html || $name ne 'Value') {
$value =~ s/</</g;
$value =~ s/>/>/g;
}
$value =~ s/\t//g;
$value =~ s/\r\n/\r/g;
$value =~ s/\n/\r/g;
if ($name eq 'Clear') { $Clr = 1; next; }
$in{$name} = $value;
}
をPHPに直したいっす。
0907nobodyさん
03/01/31 02:13ID:NbV66YrkPHP化されていない有名なCGIは
YOMIサーチ
2ショットチャット
だと思うので
いま、2ショットチャットをがんばっています。
すみまそ
レス数が900を超えています。1000を超えると表示できなくなるよ。