【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
0005nobodyさん
04/11/01 04:33:27ID:???キチンと入ってました・・・すみません
0006nobodyさん
04/11/01 11:33:35ID:ddZqjuW7PHP Version 4.3.9です
関係ないかもしれませんが、画像処理の GD Version 2.0 or higher
っていうのも入っています
よろしくお願いいたします
0007nobodyさん
04/11/01 11:33:43ID:???PHPプログラムから、
header( 'http://host/hoge.html' );
exit;
としてhoge.htmlへリダイレクトさせているのですが、
リダイレクト後、真っ白の画面が表示されてしまいます。
hoge.htmlはEUCコードで書かれていて、
<META>タグでもEUCコードの指定をしてます。
hoge.html 単体で開いたり、
白い画面からリロードすると正常に表示されました。
また、白い画面では、エンコードがShift_JISになっています。
PHPプログラムはEUCで書かれており、
これも問題ありませんでした。
となると、Location によるリダイレクトで、
Webサーバがデフォルト文字コードを
返しているような気がするのですが、
何かこの辺の症状でご存知の方いらっしゃいますでしょうか?
OS: Linux
WWW: Apache1.3.31
PHP: php4.3.8
よろしくお願いします。
0008nobodyさん
04/11/01 11:36:08ID:???0009nobodyさん
04/11/01 11:36:54ID:???○ header("Location: http://host/hoge.html");
00127
04/11/01 11:53:25ID:???すいません、ここに書き込むときの記述ミスでした。
実際は、
header( "Location: http://host/hoge.html" );
とかかれていますので問題ありません。
>>10
httpd.conf を見てみましたが、
文字コードの設定部分が見当たりませんでした。。
>>11
METAは
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
です。
HTML自体もEUCコードで書かれています。
0013nobodyさん
04/11/01 12:16:18ID:???001510
04/11/01 12:20:48ID:???鯖のレスポンス拾えばはっきりする話だよ
0016nobodyさん
04/11/01 12:22:44ID:???以下のように書きました。
ereg("^([^/]*)/?(.*)$",$i,$regs)
これがfalseになる事ってあります?
また、もっとスマートな書き方ってありますか?
0017nobodyさん
04/11/01 12:50:40ID:dvWt0D+J<?php
//error_reporting(E_USER_WARNING); // Warrningを出力しない
//----------------------------------------------------
// 定数の宣言
//----------------------------------------------------
define("BBS_DATA", "./bbs.csv");
define("BBS_COL_DATE", 0);
define("BBS_COL_NAME", 1);
define("BBS_COL_BODY", 2);
//----------------------------------------------------
// 関数の定義
//----------------------------------------------------
// AppendCsvFile関数
// 機 能 CSV形式のデータをファイルの末尾に追加する
// 引 数 $FilePath : 書込むファイルへのパス
// $CsvData : 書込みデータ
function AppendCsvToFile($FilePath, $CsvData) {
if ($FilePath == "") {
return false;
}
$fp = fopen($FilePath, "a");
if ($fp == 0) {
return false;
}
//作成日、名前、発言内容を「,」で連結し、レコードを作成する。
//また、レコード中の改行文字を取り除き行末に改行文字を付加する。
$temp = ereg_replace("[\r\n]", "", join(",", $CsvData)) . "\n";
fputs($fp, $temp);
}
0018nobodyさん
04/11/01 12:51:17ID:???// LoadCsvFile関数
// 機 能 CSV形式のファイルを2次元配列に読込む
// 引 数 $FilePath : 読込むファイルへのパス
// 戻り値 $CsvData : 読込んだテキストの2次元配列
function LoadCsvFile($FilePath) {
if (file_exists($FilePath) == false) { // ファイルの存在を確認する
return false;
}
$CsvData = array(); // 配列を作る
$TextData = file($FilePath); // ファイルのデータを読み込む
for ($i = 0; $i < sizeof($TextData); $i++) { // レコードが10件あれば10回
$TextData[$i] = ereg_replace("\n$", "", $TextData[$i]); // 行末の\nを取り除く
$TextData[$i] = ereg_replace("\r$", "", $TextData[$i]); // 行末の\rを取り除く
$CsvData[$i] = split("," , $TextData[$i]); // 「,」を区切りとしてフィールドの値を取り出す
}
return $CsvData; // $CsvDataは二次元配列
}
//------------------------------------------------------------
// ここからが主処理
//------------------------------------------------------------
if (isset($_POST["SUBMIT"])) { //このページが初めてアクセスされたか?
if ($_POST["BODY"] != "") { //発言内容はあるか?
$body = str_replace("\n", "<br>", $_POST["BODY"]); // \n\r(改行文字)をタグ<br>に変換する
$body = str_replace("\r", "", $body);
$name = $_POST["NAME"];
$BBSRecord = array(date("Y/m/d H:i:s"), $name, $body);
AppendCsvToFile(BBS_DATA, $BBSRecord); //「内容」の書込み
}
}
0019nobodyさん
04/11/01 12:51:49ID:???$BBSData = LoadCsvFile(BBS_DATA); //「内容」の読込み
?>
<html>
<head>
<title>掲示板</title>
</head>
<body><h1 align="center">掲示板</h1>
<a href="bbs.php">最新</a>
<form action="bbs.php" method="POST">
<table border="1" align="center" cellspacing="0">
<tr><td bgcolor="#cccccc" align="center">名 前</td><td><input type="text" name="NAME"></td></tr>
<tr><td bgcolor="#cccccc">発言内容</td><td><textarea name="BODY" cols="40" rows="8"></textarea></td>
<tr><td colspan="2" align="center">
<input type="submit" name="SUBMIT" value=" 投 稿 ">
<input type="reset" value=" ク リ ア "></td>
</tr>
</table>
</form>
0020nobodyさん
04/11/01 12:52:22ID:???<?php
if ($BBSData == false) { // 発言内容がなければ$BBSDataは空っぽ
print "発言はありません。<br>";
} else {
for ($i = sizeof($BBSData) - 1; $i >= 0; $i--) {
print "<hr><font size='3' color='#0000ff'><b>";
print $BBSData[$i][BBS_COL_NAME] . "</b></fomt>";
print "<font size='2' color='#666666'>";
print " [" . $BBSData[$i][BBS_COL_DATE] . "]" . "</font><br><br>";
print "<font size='3' color='#333333'>";
print $BBSData[$i][BBS_COL_BODY] . "</font><br><br>";
}
}
?>
</body>
</html>
0021nobodyさん
04/11/01 12:54:15ID:???0022nobodyさん
04/11/01 12:54:46ID:???0023nobodyさん
04/11/01 13:01:28ID:???headerで文字コード指定すれ。
0024nobodyさん
04/11/01 13:05:34ID:???ぱっと見falseになりそうなパターンが浮かばないですね
空でもtrueだし
けど改行入ったり/が連発した場合その動きでいいのかな?
>>18
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc5.2ch.net/test/read.cgi/php/1077525387/
0026nobodyさん
04/11/01 13:07:34ID:???0029nobodyさん
04/11/01 13:17:52ID:???00307
04/11/01 13:36:25ID:???php.ini の mbstring 確認しましたが、
EUC-JPになっていました。
>>10
HTTPのプロキシサーバを立てて、
やりとりしているHTTPの内容を確認したんですが、
リダイレクトの時だけ Charset のヘッダが出ていませんでした。
(かといってShift_JISと書いてあったわけではないです)
結局のところ、リダイレクト先のHTMLを修正しなおしたところ、
なぜか正常にいくようになりました。
おかしい箇所が5文字の全角テキストに断定できたんですが、
そこを見ても特に問題ない普通の文字でした。
(一つ一つコメントアウトとテストを繰り返してたどり着きました)
なぞです。
0031nobodyさん
04/11/01 13:40:14ID:???0033nobodyさん
04/11/01 13:47:57ID:???charset のヘッダーが出ていないと言うことは、そのおかしいと思われる全角テキストで
文字コードを判別しようとして失敗したんだな。
適当な解決法→htmlの先頭にEUCらしいw文字をコメントで入れておく
ちゃんとした方法→>>23のいうとおりにする
0034nobodyさん
04/11/01 13:50:40ID:???> charset のヘッダーが出ていないと言うことは、そのおかしいと思われる全角テキストで
> 文字コードを判別しようとして失敗した
あいかわらず無能レスが続くなこのスレ。
0037nobodyさん
04/11/01 13:57:03ID:???0039nobodyさん
04/11/01 13:58:48ID:???0042nobodyさん
04/11/01 14:02:51ID:???0044nobodyさん
04/11/01 14:04:19ID:???0045nobodyさん
04/11/01 14:05:27ID:???0047nobodyさん
04/11/01 14:14:43ID:???それだ!!THX!
>>24,27
参考になりました。
「最初の"/"」で区切るのがポイントなんで、
今回は>25が最適みたいです。
0048nobodyさん
04/11/01 14:15:26ID:???0050nobodyさん
04/11/01 14:35:39ID:???0051nobodyさん
04/11/01 14:37:10ID:???0053nobodyさん
04/11/01 14:40:58ID:???0054nobodyさん
04/11/01 14:52:29ID:???教えてあげるよ。
例えばテーブルを bbs にして id 名前 発言内容 のカラム作って
単にMySQLで接続して記録していけばいいんでないか?そんだけ
丸投げだったら他スレあったよな。いってみ。
0057nobodyさん
04/11/01 15:00:16ID:???0058nobodyさん
04/11/01 15:12:19ID:???どこかと絶対共有してない?
0059nobodyさん
04/11/01 15:14:19ID:???//------------------------------------------------------------
// ここからが主処理
//------------------------------------------------------------
if (isset($_POST["SUBMIT"])) { //このページが初めてアクセスされたか?
if ($_POST["BODY"] != "") { //発言内容はあるか?
$body = str_replace("\n", "<br>", $_POST["BODY"]); // \n\r(改行文字)をタグ<br>に変換する
$body = str_replace("\r", "", $body);
$name = $_POST["NAME"];
$BBSRecord = array(date("Y/m/d H:i:s"), $name, $body);
AppendCsvToFile(BBS_DATA, $BBSRecord); //「内容」の書込み
mysql_connect("localhost","root","");
mysql_select_db("bbs");
mysql_query("insert into bbst set name = '$name', message = '$body'");
$result = mysql_query("select * from bbst order by id");
$r = mysql_fetch_array($result);
echo $r[1].":".$r[2];
}
0060nobodyさん
04/11/01 15:15:36ID:???CREATE TABLE `bbst` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(20) binary NOT NULL default '',
`message` varchar(60) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
0062nobodyさん
04/11/01 15:35:50ID:???CSV方式→MySQL
0063http://idol.jirashi.net/bbs/up/img/1088136610/43.jpg
04/11/01 15:39:04ID:???0064nobodyさん
04/11/01 15:52:54ID:???0065nobodyさん
04/11/01 15:56:24ID:???そこで1人でやってくれ
0067カポコン
04/11/01 16:04:58ID:???(´ω`)cm < ミ タ ナ 〜 ♪
ノ( )ノ ☆ブリ
..ノ__)) /
||| £: −☆ブリ
ー ̄ ̄ーーーーーーーーーーーーーーーー
0068nobodyさん
04/11/01 16:11:58ID:???その発現自体も水掛け論なんだが。
0069nobodyさん
04/11/01 16:13:00ID:???0070nobodyさん
04/11/01 16:30:50ID:3x+bX1j+タイムアウト処理はどのように働きますか?
1. タイムアウトするまでの時間(デフォルト)
2. タイムアウトするまでの時間の設定変更方法
が知りたいです。
0072nobodyさん
04/11/01 17:42:56ID:???0075nobodyさん
04/11/01 18:50:17ID:???こんな感じにするしかないんじゃないかな……
<?php
function getRemoteFile( $file, $timeout = 10 ){
while( ($s = @file_get_contents($file)) === false ){
if(--$timeout <= 0) return false; // PHP5でOOPならここで例外を投げる
sleep(1);
}
return $s;
}
?>
0078nobodyさん
04/11/01 19:32:47ID:???サーバB(Apache/1.3.33 (Unix) PHP/5.0.2)で動きません。
サーバBで、フォームからPOSTした結果をphpinfo()で確認した限りでは、
$_FILESじたいが設定されてこないようです。
register_globals = Off
file_uploads = On
upload_max_filesize = 2M
upload_tmp_dir = no value
です。何か初歩的なところを見落としてるでしょうか……?
0080nobodyさん
04/11/01 19:36:54ID:???0084nobodyさん
04/11/01 19:47:37ID:???テンプレないのに何でこう同じようなレスが出来るんだろうなw
>>80
斬新な釣りでも思いついたら教えてくれ
0085nobodyさん
04/11/01 19:49:57ID:???プッ
それってコピペだろ。
長文書き込んで頭いいように見せかけたつもりだろうけど、
空気読んでないからバレバレなんだよ
ゲラゲラ
0086nobodyさん
04/11/01 19:53:12ID:???0087nobodyさん
04/11/01 19:55:29ID:Qp2szwoVなんとなかるよ。
0088nobodyさん
04/11/01 19:57:45ID:???. _...,,o‐y ,:'- '⌒ ⌒ヽ. `ヽ' ,
(o( ,' / / 、 `ヾ. ヾ,
,:'´//7,' ,' .,' ,:' ! } i !', ':, ':, ゙:,
,' / ,' {l. ! {/ ,イ / }| !|', !. ', ', ゙,
ハ〃 ! !| | | ∠/ ,:'-ノ} /リ l ,ム. ! } |!
ハヽ、ゝ!| l | ,:',;='ィ'、'´ ,'.ノ ノ.,;lノ=、l .,' ,' ,' ノ
{ l l ', |'ヲi(_ノ.} ´ i(ノ.}゙!ノ,:',:''´
', h. ', ',゙、 ':゙゙_.ノ. ':゙_ノ〃ン
':, { ',', ':,':, 丶 ,' l .}
ヾ ':,':, ':ヾ、._ 「´/ ,' | .,' / ̄ ̄ ̄ ̄ ̄ ̄
`ヾ-、`ヽ_ `´ _,.ィリ.ノ ,' < 絶対大丈夫だよ!
リ';',ヾ| ` ‐┬ ´ _ノノ,'/ \______
ヾ,、-- 、 _ | ´ノ'
f ヾ、..___ ヽ、 ー‐''
/_......_ \
0089nobodyさん
04/11/01 23:59:13ID:7Z9dzjumPHPでフォルダ以下のファイルを配列に入れて簡単に操作できるように
使用としているのですが、いろいろ調べていたら
「PEAR File/Find.php」
というフォルダ配下のファイルを検索するクラスがあるということを知ったのですが、
これは、これはいったい何なのでしょうか?
モジュールでしょうか?それとも、Find.phpというソースがどこかにあるとか、
「PEAR File/Find.php」そのものについて知りたいのですが、どこかよいサイト、
または、教えていただける方がいらしたらお願いします。
PHPは右も左もわからず闇雲にソースを書いている段階なので、
突っ込んだ質問は許してください。
0090カポコン
04/11/02 00:37:07ID:???0091nobodyさん
04/11/02 00:42:40ID:???0092nobodyさん
04/11/02 00:47:02ID:???ここを見れば分かる
009378
04/11/02 03:03:28ID:???エラーはでません。
$_SERVER['PHP_SELF']で同じスクリプトに戻ってくるようにして、
$_FILESの存在で動作を切り替えてあるので、
最初と同じフォームが表示されるだけです。
エラーメッセージか何か出るほうがまだ対処のしようもありそうなものですが、
$_FILES["userfile"]自体が設定されてこないってのは……
009678
04/11/02 10:33:53ID:???連想配列$_FILES自体が存在していないんです。
じゃあPOSTできてないのか?というとそうではなくて、
$_POSTと$_RESPONSEにMAX_FILE_SIZEが入ってます。
phpinfo()のPHP Variablesにリストされないという勢いなので、
間違えて上書きしているとかそういうケアレスミスでも無いと思うのですが……
0098nobodyさん
04/11/02 12:11:45ID:IRAW9bdbこれを数字部分でsortするにはどうしたらいいですか?
sort_numericと言うのをやってみたのですがうまく行きませんでした。
PHP4.3.3です。お願いします。
0099nobodyさん
04/11/02 12:32:37ID:???とりあえず
php.ini の always_populate_raw_post_data を On にして
$HTTP_RAW_POST_DATAでちゃんとPOSTされているか確認。
後htmlフォームのenctypeをもう一度確認。
>>98
ソート用の関数を自作する。
<?php
function hoge_sort($a, $b) {
preg_match("/(\d+)/", $a, $match_a);
preg_match("/(\d+)/", $b, $match_b);
if (empty($match_a)) return 1;
elseif (empty($match_b)) return -1;
else return ($match_a[1] - $match_b[1]);
}
$testarray = array("./aeed/003.txt","hhhh", "./abcd/001.txt","./bcde/002.txt");
usort($testarray, "hoge_sort");
foreach ($testarray as $key => $val) {
echo $key.":".$val."<br>\n";
}
?>
0101nobodyさん
04/11/02 12:42:22ID:???ショタ好き=キモイ、痛い、厨房と思われても致し方ないぞ。
版権でショタがいる作品はただでさえ
ショタ好きどもが他の迷惑も顧みず大暴れ、結局そのキャラの話をしないのは
暗黙の了解という流れに一度はなり。
ショタ好きと他の萌え嗜好がぶつかり合う場所でも
ショタ好きどもが他の迷惑も顧みず大暴れ、という流れに一度はなるというのに。
0102nobodyさん
04/11/02 12:55:50ID:???http://fileman.n1e.jp/TOP.php
たぶん PHP でやってると思うんだが。
アップロードした動画を即座に Flash に落としたり、
左下に著作権表示させたり。かなりスゴイ。
こういうのって Ming でできるのかなぁって疑問。
あとは裏でプログラム動かすしかないんだが。詳細キボン。
0103nobodyさん
04/11/02 12:55:58ID:???■ このスレッドは過去ログ倉庫に格納されています