【PHP】質問スレッドpart24【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/11/01 04:09:15ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
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-4
0111nobodyさん
04/11/02 14:26:32ID:???Soundとjpegのバイナリデータ、その容量、ID番号の置換を繰り返すだけでいいからMingもいらないよ
0112nobodyさん
04/11/02 14:45:31ID:???011378
04/11/02 15:01:55ID:???always_populate_raw_post_data = Onにしたのですが、
$HTTP_RAW_POST_DATAが飛んできませんでした。
enctypeは何度も確認してますし、同一スクリプトで
サーバAでは動作しているので、typoが原因とも思えません。
スクリプトはPHPマニュアルのサンプルに毛が生えたようなものです。
整理すると、
ファイルアップロードの可否(同一スクリプトにて)
サーバA:○
サーバB:×
$_FILES
サーバA:○
サーバB:×
$HTTP_RAW_POST_DATA
サーバA:×
サーバB:×
$_POST["MAX_FILE_SIZE"]
サーバA:○
サーバB:○
お手上げです……
011578
04/11/02 15:27:56ID:???もちろんやってます。
phpinfo()の表示でOffからOnに変わったのを確認もしています。
0116nobodyさん
04/11/02 15:55:10ID:???011778
04/11/02 16:12:29ID:???情報が小出しになってしまうのはよくないと思うのでソース貼ります。
サーバAでは期待通りif()の内側が実行されてます。
<?php
print($HTTP_RAW_POST_DATA);
//phpinfo();
if(!empty($_FILES['userfile']['name'])) {
$uploadfile = $_FILES['userfile']['tmp_name'];
$lines = file($uploadfile);
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . mb_convert_encoding($line, "SJIS", "EUC-JP") . "<br>\n";
}
exit;
}
// 初回接続時
?>
<html><body><form enctype="multipart/form-data" action="<?php echo($_SERVER['PHP_SELF']); ?>" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form></body></html>
011878
04/11/02 16:17:30ID:???Netscape7.1
Mozilla Firefox 1.0RC
Internet Explorer 6.0.2800
0119nobodyさん
04/11/02 16:31:40ID:09F3GGP8ttp://xxx/xxx.php?xxx
のように.phpの後に?xxxとつけるためにはどうすればいいのですか?
htmlのページから飛んだときとかに?以降をつけたいのです
0120nobodyさん
04/11/02 16:33:24ID:???0121nobodyさん
04/11/02 16:35:47ID:???【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/l50
0122nobodyさん
04/11/02 17:23:44ID:???やってみたひと詳細教えて。
0124122
04/11/02 17:50:20ID:???⊂⌒( TεT;) 読んでも分からん。
`ヽ_っ⌒/⌒c
0125あぼーん
NGNG0126nobodyさん
04/11/02 17:57:17ID:???⊂⌒( ・∀・) おまえも氏ね
`ヽ_っ⌒/⌒c
0128nobodyさん
04/11/02 21:41:19ID:QiT/le0dphpの中にインナーフレームを埋め込みそこへhtmlを読み込んで、
targetで中身を書き換えるようにしているのですが、
インナーフレームの中のhtmlファイルが変わったときに
そのhtmlファイルが存在するディレクトリ名を取得して、
そこまでのルートをリンクとして、表示させたいのですが、
手法がわからず困っています。
なにとぞ、お知恵をお貸しください。
また、こういうことを解説しているHPや、ヒントになりそうなHPの
情報もいただければと思います・
よろしくお願いいたします。
0129nobodyさん
04/11/02 21:59:15ID:???>そこまでの"ルートをリンクとして、表示"させたいのですが、
"ルートをリンクとして、表示"というのが、具体的にどういうことなのか分からないのですが。
0130nobodyさん
04/11/02 22:03:13ID:???0131nobodyさん
04/11/02 22:53:22ID:???http://pc5.2ch.net/test/read.cgi/php/1096965398/961
内容が同じ。
htmlでいいからサンプルを出せ。
0133nobodyさん
04/11/03 12:37:17ID:???$_FILES['userfile']['name']は空でも
$_FILES['userfile']['error']はsetされてるかもよ
0134nobodyさん
04/11/03 13:41:46ID:???$_FILES 自体が無いみたいよ?
013578
04/11/03 14:43:14ID:???そうです。セットされていたらコメントアウトしてある
phpinfo()の時点でリストされるはずですよね。
0136nobodyさん
04/11/03 15:23:02ID:???0140128
04/11/03 16:35:49ID:lSNB2eWkhttp://pc5.2ch.net/test/read.cgi/php/1096965398/961
上記がインナーフレーム内のhtmlを想定しているかはよくわからないのですが、
イメージは、同じです。
現在のソースは以下のようにechoでhtmlを作成しています。
http://www.uploda.org/file/uporg15142.txt
のファイルをダウンロードしてください。
txtファイルは表示されないみたいで・・・(私の環境だからでしょうか?)
0141nobodyさん
04/11/03 16:43:01ID:???0142131
04/11/03 16:48:43ID:lSNB2eWkmain.phpのソースです。
http://www.uploda.org/file/uporg15147.jpg
jpgにしました。
よろしくお願いいたします。
0143nobodyさん
04/11/03 16:50:18ID:???0144131
04/11/03 16:53:04ID:lSNB2eWkhttp://www.uploda.org/file/uporg15149.jpg
index.phpもjpgにしました。
よろしくお願いいたします。
0146nobodyさん
04/11/03 17:05:31ID:???^^この&ってどういう利点があるの?
0147nobodyさん
04/11/03 17:08:02ID:???<a href="〜.html" target="main">iframe内書き換え その1</a>
のように静的ファイル(html)を呼び出そうとしているなら無理だよ。
そこにPHPの介在する余地は無い。
サンプルが無いので したいらしい事を適当に想像するに、
iframeを含むページ自体を毎回書き直す方法が良いと思われ。
>>146
気にしたら負けと思われ
0148131
04/11/03 17:24:29ID:lSNB2eWkご指摘のとおりです。htmlを呼び出しているだけです。
iframeを含むページ自体を書き換えるとするとどのような
処理が必要になるのでしょうか?
リンク先をクリックした情報を取得して、index.phpを書き換えるということでしょうか?
クリックしたということを取得するにはセッション情報が必要になるのでしょうか?
やりたいことはわかるのですが、何が必要で、どう処理すればよいのかわからず困っています。
どうそ、お知恵をお貸しください。
よろしくお願いいたします。
0149131
04/11/03 17:30:02ID:lSNB2eWk実は、わかっていないです。
サンプル等見ながら作成していたので、そのまま利用しています。
ディレクトリ名をメニューにして、iframe内のhtmlまでのディレクトリの階層
を「index >> 階層1 >>階層2」と表示できればページの管理が楽になるなと
思い作成を始めました。だったら、xmlで書けといわれそうなのですが、それだと、
かなり時間がかかると思い、できる限り簡単に短時間に作成できるように考えました。
自分の知識から考えると、これがベターかなと思って作成しています。
0150nobodyさん
04/11/03 17:38:28ID:???0151nobodyさん
04/11/03 17:55:47ID:???動的にやる意味がない気がする。
ファイル数が不定期に増減して、ファイル名もランダムに変わるというなら意味ありそうだけど
ファイル数は一定でファイル名も固定なのであれば、何かスクリプトを書いてそれを使って
静的なhtmlを書いてしまえば、いいと思う。
んで、ファイル数が著しく増えたらもう一回スクリプトを走らせる、と。
0152nobodyさん
04/11/03 17:59:09ID:???0153nobodyさん
04/11/03 18:07:56ID:???俺もやったことあるけど、151の言う通りだと思う。
0154nobodyさん
04/11/03 18:12:37ID:???0155131
04/11/03 18:14:10ID:lSNB2eWkディレクトリも、htmlファイルもランダムに変わります。
>152
の言う通りHPの管理を楽にするためです。
>153
どういう手法なのかお教え願えないでしょうか?
お願いいたします。
0156131
04/11/03 19:11:19ID:lSNB2eWk何を激しく思うのでしょうか???
0157nobodyさん
04/11/03 19:18:08ID:???$result = mb_substr($text, 0, mb_strpos($text, "\r\n"));
if (!$result) $result = mb_substr($text, 0, mb_strpos($text, "\r"));
if (!$result) $result = mb_substr($text, 0, mb_strpos($text, "\n"));
if (!$result) $result = $text;
こんな風になってしまいました。。
もっとスマートに書く方法はありませんか?
0158nobodyさん
04/11/03 19:56:01ID:???list($result) = explode("\n",$test);
0159131
04/11/03 21:26:46ID:lSNB2eWkindex.phpのリンク先をどこか別のところに書き出し、
さらに、index.phpを再度読みiframe.php内に書き換えたiframe.phpを
書き出せばよいのでしょうか?
こうするには、何が必要になるのでしょうか?
クリック情報を得るには何が必要でしょうか?
0160nobodyさん
04/11/03 21:48:55ID:???iframeとかいってる時点でスレ違いなんだよ
0161nobodyさん
04/11/03 23:19:09ID:???1回 addslashes して投稿した本文は
2回 addslashes した検索キーじゃないと同じようにマッチしないんですか?
データは MySQL に入れているのですが……。
list($result) = explode("\n", $text, 2);
0165nobodyさん
04/11/04 03:33:48ID:???0166161
04/11/04 05:37:04ID:???>>163
何回も試しましたが、やはり>161のようになってしまいます。
これは常識なのでしょうか……できれば何故そうなるのかも理解したいです。
>>164
試したところ、やはり結果は同じでした。
0168nobodyさん
04/11/04 05:45:01ID:???範囲を教えてください
mb_ereg使って正規表現すればいい?
0169161
04/11/04 07:12:33ID:???magic_quotes は Off です。phpinfo() で確認しました。
また、このようなフィルタを使っています。
function safe($text) {
if (get_magic_quotes_gpc()) $text = stripslashes($text);
$text = trim(htmlspecialchars($text));
$text = mysql_real_escape_string($text);
return $text;
}
これを使って例えば \n でそれぞれ投稿、検索すると
insert into テーブル (本文) values ("\\n")
select * from テーブル where 本文 like "%\\n%"
と、このように SQL を作成して送信します。
このとき、上の行はきちんと \n と入力されるのですが、
下の行では改行にヒットしてほぼ全てのレコードを拾ってきてしまうのです。
上を書いた上で気付いたのですが、
本文 like "%\\n%" ではなく 本文 = "\\n" とすればきちんと \n にヒットするようです。
(本文が \n だけの場合は改行は含まれないので、確認できました)
MySQL 側の問題のような気がしてきました……。
0171nobodyさん
04/11/04 08:45:28ID:???お前こそlist()を理解してるのか?と問いたいわけだが。
>>168
ここを読むといい。
http://www.din.or.jp/~ohzaki/perl.htm
preg_match()ならperl互換だからほとんどそのまま使える。
0174170
04/11/04 10:12:37ID:???0175nobodyさん
04/11/04 10:19:53ID:???>>174
プッ。。。頭悪すぎ。。。w
Hint
1)array explode()
2)要望者は$resultに1行目のデータを入れたい。
0176nobodyさん
04/11/04 10:30:26ID:???list($result, $test) = explode("\n", $text, 2);
なら分かるけど
0177nobodyさん
04/11/04 10:35:42ID:???Basic認証のことなのですが、
自作スクリプトで
define(PASS, '1234');
define(ID, '1234');
if(!isset($_SERVER['PHP_AUTH_USER']) || !(($_SERVER['PHP_AUTH_USER'] == ID) && ($_SERVER['PHP_AUTH_PW'] == PASS))) {
header('WWW-Authenticate: Basic realm="hogehoge"');
header('HTTP/1.0 401 Unauthorized');
exit;
}
としてphpへのアクセス制限をつけています。
OSX php4.3.9(自前コンパイル)
linux php4.3.9(rpm)
の時は正常に認証後スクリプトにアクセス出来ていたのですが。
OSX php4.3.9をインストーラーで配布されてるものへ、
linux php5.0.2(rpm)へ変更後、
認証パネルが出てきて、IDとPASSを入力送信すると、
永遠にブラウザーで読み込みしたままでスクリプト本文へアクセスできません。
lan越しでつなげてみると、ルーターのアクセスが何かを送受信してる風です。
上記のことで何かチェックする項目などあるでしょうか?
ちなみに、Basic認証部分をコメントすると、問題なく動作します。
よろしくお願いします。
0178176
04/11/04 10:37:55ID:???list($result, $text) = explode("\n", $text, 2);
$resultが1行目$textは2行目以降の残りの部分になる。
0180nobodyさん
04/11/04 11:27:35ID:???自己レス。
上のphp設置ディレクトリーの1つ上のディレクトリ−に
.htaccessがあってそこへも、鯖全体のBasic認証をしています。
.htaccessの方の認証を外すとphp側の認証はパスしました。
認証が重複してる感じですね。
また、apacheのerror_logを見ると、問題のphpと自作エラードキュメントがnot found状態になってて
[Thu Nov 4 10:51:45 2004] [error] [client 192.168.0.28] user moge not found: /hoge/hogehoge.php
[Thu Nov 4 10:51:45 2004] [error] [client 192.168.0.28] user moge not found: /error.php
[Thu Nov 4 10:51:46 2004] [error] [client 192.168.0.28] user moge not found: /hoge/hogehoge.php
[Thu Nov 4 10:51:46 2004] [error] [client 192.168.0.28] user moge not found: /error.php
↓以下永遠に続く・・・・
になってました。
phpの問題ではないようなので、apacheもしくは.htaccessスレの方で聞いてみます。
失礼しました。
0182nobodyさん
04/11/04 12:54:23ID:???マニュアル読むまでも無いと思うが。
list($result, ) = explode("\n", $text, 2);
こんな書き方もある。
それぞれに変数を用意してやる必要はない。
0183nobodyさん
04/11/04 13:18:10ID:XSGSYvoFMIMEの文字列をJISに変換するにはどうしたらよいでしょうか
0184nobodyさん
04/11/04 13:19:32ID:???0185 183
04/11/04 13:28:05ID:???0187nobodyさん
04/11/04 18:57:14ID:???PHPで大量のメールを送信するプログラム作成予定です。
CCやBCCで送信する場合は何件あろうが処理は速く終わるんですが、
宛先にそれぞれの名前だけ表示して送りたい場合は、
やはり一件ずつmail関数で送信をしなくてはいけないんでしょうか。
ちなみに軽く書いてみるとこんな感じでループ回してます。
foreach($str_data as $key => $val){
$to = mb_encode_mimeheader($val['mail']);
mail($to, $subject, $msg_jis, $header);
}
BCCはメアドをつなぎ合わせるから一発。
$mail_enc = implode(",", $mail_str);
$to = mb_encode_mimeheader('[email protected]');
$header .= "Bcc:{$mail_enc}"."\r\n";
mail($to, $subject, $msg_jis, $header);
宛先を各個人にするにはやっぱりループさせるしかないですよね。
これがすさまじく処理に時間がかかるんです。
大量メールの場合や、添付ファイルをつけた場合、
これではサーバーが持たないですかね・・・
宛先に各個人を表示するプログラムってやっぱきついんですかね?
ループさせないで送る方法も考えつかないですし・・・
どなたかよい知恵があれば教えてください。
自分でプロトコル接続プログラムを作成して送信していくのがいいと思う。
サーバーは持つけど長くなるけどね。
うまくPHPを同時に複数走らせたりすればサーバーに適したスピードでの
送信も可能です。そのときは複数送信をしないような方法を考えましょう。
0190nobodyさん
04/11/04 20:56:49ID:???mail関数使わずに、qmail-queueに投げて処理してる。
リモートにしかMTAが無いなら、>>189の言うようにSMTP話すようにして、
1通毎にコネクション切らないようにしてやれば若干マシ。
ところで、間違っても共有サーバで動かそうと思って無いだろな?
0191nobodyさん
04/11/04 21:43:16ID:???俺も興味ある話だから便乗させて。
mail関数使わずに、popen()でパイプオープンして内容を投げればええのかな?
何かよいサンプルソースがあればと思い探してるのだが。。
0192nobodyさん
04/11/04 22:03:07ID:???header("Content-type: application/octet-stream");
header("Content-Disposition: inline; filename=\"test.wmv\"");
header("Content-Length: ".50000);
readfile("test.wmv");
としてみたんですが、メディアプレーヤーが起動してしまいます。
検索して
header("Content-type: application/octet-stream");を
header("Content-type: application/octet-stream-dummy");にするとDLされるみたいに書いてあったのですが、
やはりメディアプレーヤーが起動してしまいます。
ネスケだとうまくいくんでIEのバグかなと思うんですが、もしDLできる方法があればご教授お願い致します。
よろしくお願いします。
#くだ質の方に間違って書いてしまいました。ごめんなさい。
0193nobodyさん
04/11/04 22:17:46ID:???header("Content-Disposition: attachment; filename=\"test.wmv\"");
ならどぉよ。
0197nobodyさん
04/11/05 00:25:22ID:FgI15ehKmysql&phpの方は書き始めてまだ一ヶ月ほどの経験しかありませんが
MySQL 3.23.58とphp4.3.1という環境で簡単な検索システムを作ってみたりしてます。
function print_selectmenu($f_name){
$sql = "select distinct $f_name from HOGE_DB";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
echo "<option value=¥"{$row["$f_name"]}¥">{$row["$f_name"]}</option>¥n";
}
}
こんな感じで、プルダウンメニューにしたい内容をテーブルから読み出して
<select></select>の間にはさみ自動でプルダウンメニューに表示させるまでは出来たのですが
レコードの修正画面においては、選択肢をプルダウンで出すだけでなく
既に登録されてる情報どおりにselectedを付けたいのですがなんか良い方法ないでしょうか?
0198nobodyさん
04/11/05 00:30:58ID:???それはHTMLのお話。
<option 〜 selected>のselectedの部分を ”自分で” 出力すればよい。
他のフォーム要素についても同じ。
0199197
04/11/05 00:54:35ID:FgI15ehKselectedをつければいいということは解ってるのです。
mysql_fetch_arrayで拾い出してくる値のうち、
既に入力された情報のoptionにだけwhileループのなかで
いかにして自動的にselectedをつけるかで悩んでるのです。
0200nobodyさん
04/11/05 00:58:36ID:onIpwNyM0202nobodyさん
04/11/05 01:11:34ID:???| ノ\ ,_ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ (>>200)
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
\ " / | |
\ / ̄ ̄ ̄ /
0203nobodyさん
04/11/05 01:13:58ID:???pearにそういうこともできるパッケージがあるけど、
selectedを付ける程度だったらarray_mapかなんかで実装した方がいいかも知れない。
0204nobodyさん
04/11/05 03:14:21ID:ipfVcK1A自分で作成した(コーディングしてコンパイルしたということです)
SMTPサーバを/usr/sbin/sendmailにインストールしphp.iniで
sendmail_pathを/usr/sbin/sendmailに設定しました.
このときに,PHP(アパッチのモジュールではなくて)で
mb_send_mail()を実行してもSMTPサーバにメールが送られていないようですが,
原因は何が考えられるでしょうか?
エラーメッセージが一切出てこないこともあって,原因がわからなくてこまっています.
(phpインストール時に./configureでマルチバイトストリングが扱えるようにオプションを
つけています.)
0206nobodyさん
04/11/05 03:37:37ID:???> SMTPサーバにメールが送られていないようです
メル鯖のログを見た?
> エラーメッセージが一切出てこないこともあって
mb_send_mail はbooleanを返すけど、それはどうなってるの?
0207nobodyさん
04/11/05 04:27:45ID:???$tset ="
<hr color=#6600ff>
_HTMLEND_;
require 'inc/test.php';
echo<<<_HTMLEND_
<hr color=#6600ff>
";
と書いたtest.incファイルを↓のファイル
<?PHP
// さっきのファイル読出し
require("../test.php");
echo<<<_HTMLEND_
<html><body>
あいうえお<br>
あいうえお<br>
あいうえお<br>
$tset
あいうえお<br>
あいうえお<br>
あいうえお<br>
<hr></body></html>
_HTMLEND_;
?>
てな感じで読み出したい・・・
変数の中に命令文を入れたら
動かないのは分かるのですが
どうすれば出来るのかわかりません
(´・ω・`)ショボーン
初心者ですいませんがお教えい下さい。
0208nobodyさん
04/11/05 06:32:47ID:puzbyGUU今日の寝巻きは黄でした
今日の寝巻きは緑でした
っというような文章があり、
色の部分だけ取り出して変数に入れるにはどうすればよいのでしょうか
入門書の正規表現のところを見ても英語の例しかなくうまくいきません
0209nobodyさん
04/11/05 08:54:15ID:???0210nobodyさん
04/11/05 11:01:51ID:???if ($b==$c) { array_merge($a,$d[$c]);
ここで現在のforeachループを破棄して、
もう一度最初から$aの評価をしたいのです。
($dの内容によっては無限ループに陥る
可能性があるのは目をつぶるとして)
どう書けば良いでしょうか。
■ このスレッドは過去ログ倉庫に格納されています