【PHP】質問スレッドpart24【php】

このエントリーをはてなブックマークに追加
1nobodyさん
・PHP全般の質問スレです。 
・新規質問の方は上げてください。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 
2nobodyさん:04/11/01 04:10:09 ID:???
前スレ 
【PHP】質問スレッドpart22【php】 
http://pc5.2ch.net/test/read.cgi/php/1095326257/ 


関連スレ 
Pear 
http://pc5.2ch.net/test/read.cgi/php/985665522/ 
【PHP】Smarty【Template】 
http://pc5.2ch.net/test/read.cgi/php/1047225437/ 
3nobodyさん:04/11/01 04:11:02 ID:???
前スレ訂正
【PHP】質問スレッドpart23【php】
http://pc5.2ch.net/test/read.cgi/php/1096965398/l50
4nobodyさん:04/11/01 04:15:49 ID:???
PHP系blogツール part2
http://pc5.2ch.net/test/read.cgi/php/1094725439/l50
PukiWikiスレ Part1
http://pc5.2ch.net/test/read.cgi/php/1084907353/l50
[PHP-users MLヲチ6] 教えていただけませんか?
http://pc5.2ch.net/test/read.cgi/php/1096871691/l50
★負荷軽減対策委員会(Perl、PHP)★
http://pc5.2ch.net/test/read.cgi/php/1034645635/l50
PHPBB
http://pc5.2ch.net/test/read.cgi/php/1065334037/l50
PHPでPDF
http://pc5.2ch.net/test/read.cgi/php/983858078/l50
【PHP】Phrameを使う【フレームワーク】
http://pc5.2ch.net/test/read.cgi/php/1093238107/l50
【PHP】セッションについて語ろう!【PHP】
http://pc5.2ch.net/test/read.cgi/php/1064399467/l50
PHPエディタって、どうよ?
http://pc5.2ch.net/test/read.cgi/php/1079460638/l50
【PHP】自作スクリプト発表会
http://pc5.2ch.net/test/read.cgi/php/1017456911/l50
PHPで2chを真似てこんなモン作ってみますた。
http://pc5.2ch.net/test/read.cgi/php/1019451204/l50
PHP + PostgreSQL
http://pc5.2ch.net/test/read.cgi/php/983128806/l50
PHPで構築されたサイト
http://pc5.2ch.net/test/read.cgi/php/1085302527/l50
親切な人が初心者にPHPの関数を使い方を教える
http://pc5.2ch.net/test/read.cgi/php/1068190843/l50
5nobodyさん:04/11/01 04:33:27 ID:???
前スレ最後に質問したものです。
キチンと入ってました・・・すみません
6nobodyさん:04/11/01 11:33:35 ID:ddZqjuW7
Gifファイルが動画Gifであるか確認する方法はないでしょうか?
PHP Version 4.3.9です
関係ないかもしれませんが、画像処理の GD Version 2.0 or higher
っていうのも入っています
よろしくお願いいたします
7nobodyさん:04/11/01 11:33:43 ID:???
すみません、一点質問があります。

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

よろしくお願いします。
8nobodyさん:04/11/01 11:36:08 ID:???
header("Location: http:/foo.bar/hoge.html");
9nobodyさん:04/11/01 11:36:54 ID:???
× header("http://host/hoge.html");
○ header("Location: http://host/hoge.html");
10nobodyさん:04/11/01 11:37:42 ID:???
>>7
気がするなら見てみればいいのに
11nobodyさん:04/11/01 11:43:08 ID:???
>>7
その<META>タグさらしてみ。
127:04/11/01 11:53:25 ID:???
>>8,9

すいません、ここに書き込むときの記述ミスでした。
実際は、
header( "Location: http://host/hoge.html" );
とかかれていますので問題ありません。

>>10

httpd.conf を見てみましたが、
文字コードの設定部分が見当たりませんでした。。

>>11

METAは
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
です。
HTML自体もEUCコードで書かれています。
13nobodyさん:04/11/01 12:16:18 ID:???
x-men
14nobodyさん:04/11/01 12:18:43 ID:???
>>12
一応、php.iniのmbstringの項もチェックしてみ。
phpinfo()で設定内容が表示されるし。
1510:04/11/01 12:20:48 ID:???
何でhttpd.confなんか見てんだ?
鯖のレスポンス拾えばはっきりする話だよ
16nobodyさん:04/11/01 12:22:44 ID:???
最初に出てきた"/"の前とそれ以降を分離したくて
以下のように書きました。
ereg("^([^/]*)/?(.*)$",$i,$regs)
これがfalseになる事ってあります?
また、もっとスマートな書き方ってありますか?
17nobodyさん:04/11/01 12:50:40 ID:dvWt0D+J
保存先をCSV形式のファイルからデータベース(MySQL)に変更すにはどうすればいいのでしょうか?どなたか、おしえてくださいm(_ _)m
<?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);
}
18nobodyさん:04/11/01 12:51:17 ID:???
>>17の続き
// 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); //「内容」の書込み
}
}
19nobodyさん:04/11/01 12:51:49 ID:???
>>18の続き
$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>
20nobodyさん:04/11/01 12:52:22 ID:???
>>19の続き
<?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>
21nobodyさん:04/11/01 12:54:15 ID:???
長すぎて読む気がしねえ
22nobodyさん:04/11/01 12:54:46 ID:???
丸投げすんじゃねーよぼけが!!!誰も答えなくていいんで宜しく^^
23nobodyさん:04/11/01 13:01:28 ID:???
>7
headerで文字コード指定すれ。
24nobodyさん:04/11/01 13:05:34 ID:???
>>16
ぱっと見falseになりそうなパターンが浮かばないですね
空でもtrueだし

けど改行入ったり/が連発した場合その動きでいいのかな?

>>18
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc5.2ch.net/test/read.cgi/php/1077525387/
25nobodyさん:04/11/01 13:05:47 ID:???
>>16
explode('/',$i,2);
26nobodyさん:04/11/01 13:07:34 ID:???
丸投げするなカス、さっさと氏ね
27nobodyさん:04/11/01 13:09:52 ID:???
>>16
URLの解析なら
parse_url()
パスの解析なら
basename() dirname()
28nobodyさん:04/11/01 13:12:43 ID:???
>>21-22
無能共が!少しは黙れ!
29nobodyさん:04/11/01 13:17:52 ID:???
お前まだ張り付いてたのか
307:04/11/01 13:36:25 ID:???
>>14

php.ini の mbstring 確認しましたが、
EUC-JPになっていました。

>>10

HTTPのプロキシサーバを立てて、
やりとりしているHTTPの内容を確認したんですが、
リダイレクトの時だけ Charset のヘッダが出ていませんでした。
(かといってShift_JISと書いてあったわけではないです)


結局のところ、リダイレクト先のHTMLを修正しなおしたところ、
なぜか正常にいくようになりました。
おかしい箇所が5文字の全角テキストに断定できたんですが、
そこを見ても特に問題ない普通の文字でした。
(一つ一つコメントアウトとテストを繰り返してたどり着きました)
なぞです。
31nobodyさん:04/11/01 13:40:14 ID:???
PHPが甘やかしすぎるからこういう馬鹿が絶えない
32nobodyさん:04/11/01 13:43:14 ID:???
>>31
自分の無能さをPHPのせいにするとは良い度胸だな。
取り敢えず、無能はオナってろ。
33nobodyさん:04/11/01 13:47:57 ID:???
>>30
charset のヘッダーが出ていないと言うことは、そのおかしいと思われる全角テキストで
文字コードを判別しようとして失敗したんだな。

適当な解決法→htmlの先頭にEUCらしいw文字をコメントで入れておく
ちゃんとした方法→>>23のいうとおりにする
34nobodyさん:04/11/01 13:50:40 ID:???
>>33
> charset のヘッダーが出ていないと言うことは、そのおかしいと思われる全角テキストで
> 文字コードを判別しようとして失敗した

あいかわらず無能レスが続くなこのスレ。
35nobodyさん:04/11/01 13:51:28 ID:???
>>29
放置を徹底して頂きたく。
36nobodyさん:04/11/01 13:53:29 ID:???
>>31,34
このスレじゃ最近PHPの質問少ないw
37nobodyさん:04/11/01 13:57:03 ID:???
他のスレが多少救われてるだろ。
38nobodyさん:04/11/01 13:58:48 ID:???
>>34
どんなに煽ろうとお前の丸投げ質問には誰も答えないわけで(プゲラ
39nobodyさん:04/11/01 13:58:48 ID:???
それくらいの働きはないとな
40nobodyさん:04/11/01 14:01:06 ID:???
>>38の読解力が瀕死です。
41nobodyさん:04/11/01 14:01:28 ID:???
>>38
そいつは俺じゃねーよ(モゲラ
42nobodyさん:04/11/01 14:02:51 ID:???
ワラタ
43nobodyさん:04/11/01 14:03:35 ID:???
>>40
某スレと同じように駄目質問と素人回答を観察するスレですが、何か?
44nobodyさん:04/11/01 14:04:19 ID:???
もう顔真っ赤で必死です
45nobodyさん:04/11/01 14:05:27 ID:???
丸投げっていうとCSVがどうとかってやつか。
46nobodyさん:04/11/01 14:10:09 ID:???
>>31
たしかにperlならこの勘違いは起こらなかっただろうが、、。
PHPのせいとか言い出すとタマゴとニワトリじゃないの。
47nobodyさん:04/11/01 14:14:43 ID:???
>>25
それだ!!THX!

>>24,27
参考になりました。
「最初の"/"」で区切るのがポイントなんで、
今回は>25が最適みたいです。
48nobodyさん:04/11/01 14:15:26 ID:???
なんか温度差の激しいスッドレだな
49nobodyさん:04/11/01 14:24:20 ID:???
>>24
改造じゃなくて丸投げスレのほうがよくね?
50nobodyさん:04/11/01 14:35:39 ID:???
小泉総理のまねしてもだめだよ。もう時代遅れなんだから。まるなげ
51nobodyさん:04/11/01 14:37:10 ID:???
教えてやってもいいけど。教えてもいい?
52nobodyさん:04/11/01 14:38:07 ID:???
>>51
もったいぶらずにおながいしますm(_ _)m
53nobodyさん:04/11/01 14:40:58 ID:???
ワラタ
54nobodyさん:04/11/01 14:52:29 ID:???
>>52
教えてあげるよ。
例えばテーブルを bbs にして id 名前 発言内容 のカラム作って
単にMySQLで接続して記録していけばいいんでないか?そんだけ

丸投げだったら他スレあったよな。いってみ。
55nobodyさん:04/11/01 14:53:18 ID:???
>>52
つか、どこがわからんのん?
56nobodyさん:04/11/01 14:54:39 ID:???
>>52
まあ、がんがれ
57nobodyさん:04/11/01 15:00:16 ID:???
これで終わったか?
58nobodyさん:04/11/01 15:12:19 ID:???
PHP固有の質問なんてあるの?
どこかと絶対共有してない?
59nobodyさん:04/11/01 15:14:19 ID:???
なら、てきとうに。

//------------------------------------------------------------
// ここからが主処理
//------------------------------------------------------------
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];
}
60nobodyさん:04/11/01 15:15:36 ID:???
ほれこれも てきとう
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 ;
61nobodyさん:04/11/01 15:34:17 ID:???
>>58
スレ読んでから発言しろ
62nobodyさん:04/11/01 15:35:50 ID:???
ググったら、結構出てきたよ
CSV方式→MySQL
水掛け論が楽しい人もいることに配慮してくれないと。
64nobodyさん:04/11/01 15:52:54 ID:???
水掛けようか?
65nobodyさん:04/11/01 15:56:24 ID:???
水掛け論を楽しみたいなら、そのようなスレ立てて
そこで1人でやってくれ
66nobodyさん:04/11/01 15:58:07 ID:???
>>65がいいこといった
67カポコン:04/11/01 16:04:58 ID:???
   ,,,,,,,,,
  (´ω`)cm < ミ タ ナ 〜 ♪
  ノ( )ノ ☆ブリ
  ..ノ__)) /
  ||| £: −☆ブリ
ー ̄ ̄ーーーーーーーーーーーーーーーー
68nobodyさん:04/11/01 16:11:58 ID:???
>65
その発現自体も水掛け論なんだが。
69nobodyさん:04/11/01 16:13:00 ID:???
水掛けようか?
70nobodyさん:04/11/01 16:30:50 ID:3x+bX1j+
file_get_contentsでURLを開く場合、
タイムアウト処理はどのように働きますか?

1. タイムアウトするまでの時間(デフォルト)
2. タイムアウトするまでの時間の設定変更方法

が知りたいです。
71nobodyさん:04/11/01 17:35:58 ID:???
>>33
美乳のことか?
72nobodyさん:04/11/01 17:42:56 ID:???
あいうえお眉幅というのもあったな
73nobodyさん:04/11/01 18:29:37 ID:???
>>58
絶対共有って何?
74nobodyさん:04/11/01 18:39:46 ID:???
>>73
どこかと絶対共有してない?
> 絶対どこかと共有してない?
だろ
75nobodyさん:04/11/01 18:50:17 ID:???
>>70
こんな感じにするしかないんじゃないかな……
<?php

function getRemoteFile( $file, $timeout = 10 ){
 while( ($s = @file_get_contents($file)) === false ){
  if(--$timeout <= 0) return false; // PHP5でOOPならここで例外を投げる
  sleep(1);
 }
 return $s;
}

?>
76nobodyさん:04/11/01 19:19:31 ID:???
>>71
「雀の往来」もいいぞ
77nobodyさん:04/11/01 19:27:20 ID:???
78nobodyさん:04/11/01 19:32:47 ID:???
サーバA(Apache/1.3.29 (Unix) PHP/4.3.9)で動いているファイルアップロードが、
サーバ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
です。何か初歩的なところを見落としてるでしょうか……?
79nobodyさん:04/11/01 19:33:32 ID:???
>>77
「絶対共有」で区切るわけじゃないことを示したんじゃないか?
80nobodyさん:04/11/01 19:36:54 ID:???
お前は発想のレベルが変わらんなあ
81nobodyさん:04/11/01 19:37:29 ID:???
>>78
PHP4とPHP5は基本的に別物と考えた方がよい。

そのスクリプト5の方で動かしたときに何かエラー出てないか?
82nobodyさん:04/11/01 19:42:10 ID:???
>>73>>74,79 のどっちが真正の天然なのか。
それが問題だということじゃないだろうか。
83nobodyさん:04/11/01 19:45:17 ID:???
>>82
池沼の溜まり場に漬かってる癖に何を言ってるんだか。
84nobodyさん:04/11/01 19:47:37 ID:???
また「動きません」かよ
テンプレないのに何でこう同じようなレスが出来るんだろうなw

>>80
斬新な釣りでも思いついたら教えてくれ
85nobodyさん:04/11/01 19:49:57 ID:???
>>84
プッ
それってコピペだろ。
長文書き込んで頭いいように見せかけたつもりだろうけど、
空気読んでないからバレバレなんだよ
ゲラゲラ
86nobodyさん:04/11/01 19:53:12 ID:???
「上手くいきません」と双璧でつね。つーか回答も質問も釣りなのか真性なのか区別つかな過ぎだよ。こまるよ。
87nobodyさん:04/11/01 19:55:29 ID:Qp2szwoV
>>86
なんとなかるよ。
88nobodyさん:04/11/01 19:57:45 ID:???
       , -,:'   / ̄) i{'r‐-、 `ヽ、
.    _...,,o‐y    ,:'- '⌒   ⌒ヽ. `ヽ' ,
    (o(  ,'    / /     、 `ヾ.   ヾ,
  ,:'´//7,'  ,' .,' ,:'   !  } i  !', ':,  ':,    ゙:,
  ,' / ,' {l.  ! {/   ,イ / }|  !|', !.  ',  ', ゙,
 ハ〃 ! !|  | |  ∠/ ,:'-ノ} /リ l ,ム.  !  } |!
  ハヽ、ゝ!|  l | ,:',;='ィ'、'´ ,'.ノ ノ.,;lノ=、l .,' ,' ,' ノ
    {   l l ', |'ヲi(_ノ.}  ´    i(ノ.}゙!ノ,:',:''´
     ',  h. ', ',゙、 ':゙゙_.ノ.     ':゙_ノ〃ン
     ':, { ',', ':,':,         丶   ,' l .}
      ヾ ':,':, ':ヾ、._    「´/    ,' | .,'    / ̄ ̄ ̄ ̄ ̄ ̄
        `ヾ-、`ヽ_    `´ _,.ィリ.ノ ,'  < 絶対大丈夫だよ!
         リ';',ヾ|  ` ‐┬ ´ _ノノ,'/     \______
          ヾ,、-- 、 _ |     ´ノ'
          f ヾ、..___ ヽ、 ー‐''
         /_......_     \
89nobodyさん:04/11/01 23:59:13 ID:7Z9dzjum
すいません、くだらない質問なのですが、

PHPでフォルダ以下のファイルを配列に入れて簡単に操作できるように
使用としているのですが、いろいろ調べていたら
  「PEAR File/Find.php」
というフォルダ配下のファイルを検索するクラスがあるということを知ったのですが、
これは、これはいったい何なのでしょうか?
モジュールでしょうか?それとも、Find.phpというソースがどこかにあるとか、

「PEAR File/Find.php」そのものについて知りたいのですが、どこかよいサイト、
または、教えていただける方がいらしたらお願いします。

 PHPは右も左もわからず闇雲にソースを書いている段階なので、
突っ込んだ質問は許してください。
90カポコン:04/11/02 00:37:07 ID:???
PEARなんか使うぐれーなら自分で組め。
91nobodyさん:04/11/02 00:42:40 ID:???
PEARの詳しい説明してるHPがない
92nobodyさん:04/11/02 00:47:02 ID:???
http://www.1x1.jp/php/manual_pear/index.html
ここを見れば分かる
9378:04/11/02 03:03:28 ID:???
>81
エラーはでません。
$_SERVER['PHP_SELF']で同じスクリプトに戻ってくるようにして、
$_FILESの存在で動作を切り替えてあるので、
最初と同じフォームが表示されるだけです。
エラーメッセージか何か出るほうがまだ対処のしようもありそうなものですが、
$_FILES["userfile"]自体が設定されてこないってのは……
94nobodyさん:04/11/02 03:16:57 ID:???
>>93
変数の内容をechoしてPHP4とPHP5で同じになってるか
一つ一つ確認していくしかないような気がする。
95nobodyさん:04/11/02 10:19:07 ID:???
>>93
$_FILES["userfile"]['error']にエラーコード入ってないですか。
9678:04/11/02 10:33:53 ID:???
>94 >95
連想配列$_FILES自体が存在していないんです。
じゃあPOSTできてないのか?というとそうではなくて、
$_POSTと$_RESPONSEにMAX_FILE_SIZEが入ってます。

phpinfo()のPHP Variablesにリストされないという勢いなので、
間違えて上書きしているとかそういうケアレスミスでも無いと思うのですが……
97nobodyさん:04/11/02 11:35:25 ID:???
>>96
あとは、通信内容を直接覗く位かな?
クライアントが何を投げてサーバーが何を受け取っているのか。
98nobodyさん:04/11/02 12:11:45 ID:IRAW9bdb
arrayの中に「文字列+数字("./abcd/001.txt","./bcde/002.txt")」で出来ているファイル名が入っています。
これを数字部分でsortするにはどうしたらいいですか?
sort_numericと言うのをやってみたのですがうまく行きませんでした。
PHP4.3.3です。お願いします。
99nobodyさん:04/11/02 12:32:37 ID:???
>>96
とりあえず
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";
}
?>
10098:04/11/02 12:41:54 ID:???
>>99
ありがとうございました!!
かんぱきにできました!
101nobodyさん:04/11/02 12:42:22 ID:???
お前等、このままじゃあ
ショタ好き=キモイ、痛い、厨房と思われても致し方ないぞ。
版権でショタがいる作品はただでさえ
ショタ好きどもが他の迷惑も顧みず大暴れ、結局そのキャラの話をしないのは
暗黙の了解という流れに一度はなり。
ショタ好きと他の萌え嗜好がぶつかり合う場所でも
ショタ好きどもが他の迷惑も顧みず大暴れ、という流れに一度はなるというのに。
102nobodyさん:04/11/02 12:55:50 ID:???
ちょっと聞きたいんだけど、こういうのってどうやって作ってるの?
http://fileman.n1e.jp/TOP.php

たぶん PHP でやってると思うんだが。
アップロードした動画を即座に Flash に落としたり、
左下に著作権表示させたり。かなりスゴイ。
こういうのって Ming でできるのかなぁって疑問。
あとは裏でプログラム動かすしかないんだが。詳細キボン。
103nobodyさん:04/11/02 12:55:58 ID:???
ショタはつみみ
104nobodyさん:04/11/02 12:56:59 ID:???
Warning: Shotakon Error! Shotakon Error!! Line:>>101
105nobodyさん:04/11/02 13:00:05 ID:???
>>102
かなり君の解析は見当違い。
ほぼFlashの機能で実現してるだけ。

1)動画を即座にFlashに落とす(落とすってのがまず間違いだが。
動画再生用Flashを作成。
Flashに動画のパスをつけたURLを生成すれば完成。(***.swf?file=***.mpg)
2)著作権表示
動画再生用Flashに組み込んでるだけ。
106nobodyさん:04/11/02 13:06:19 ID:???
>>105
ソースを見ても、パスを渡してる雰囲気はないんだが。
それに、Flash は動画ファイルをパスで読み込めない。
107102:04/11/02 13:10:03 ID:???
>>105
変換するという意味で落とすって使っただけ。

>動画再生用Flashに組み込んでるだけ。
そんな簡単なもんじゃないだろう。
108nobodyさん:04/11/02 13:25:20 ID:???
Flashのままでも見れるな。ただ読み込んでるだけってことはなさそう
109nobodyさん:04/11/02 13:53:37 ID:???
最初のローディング画面とボタンは共通で
後は動画を画像に分解したのが並んでいるだけですね
画像分解と音声分解ができればそれをFlashにするのは簡単
110nobodyさん:04/11/02 13:59:39 ID:???
じゃあ
画像分解+音声分解 → exec
Flash化 → Ming
ってことか。
111nobodyさん:04/11/02 14:26:32 ID:???
4フレーム分と5フレームのテンプレだけFlashで作っておけば5フレーム以降は
Soundとjpegのバイナリデータ、その容量、ID番号の置換を繰り返すだけでいいからMingもいらないよ
112nobodyさん:04/11/02 14:45:31 ID:???
むずかしいですなあ
11378:04/11/02 15:01:55 ID:???
>99
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:○

お手上げです……
114nobodyさん:04/11/02 15:26:18 ID:???
>>113
一応念のため
Apacheの再起動はした?
11578:04/11/02 15:27:56 ID:???
>114
もちろんやってます。
phpinfo()の表示でOffからOnに変わったのを確認もしています。
116nobodyさん:04/11/02 15:55:10 ID:???
FORMタグにenctype="multipart/form-data"はつけてる?
11778:04/11/02 16:12:29 ID:???
>116
情報が小出しになってしまうのはよくないと思うのでソース貼ります。
サーバ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>
11878:04/11/02 16:17:30 ID:???
使用ブラウザ書き忘れました。いずれも挙動変わらずです。
Netscape7.1
Mozilla Firefox 1.0RC
Internet Explorer 6.0.2800
119nobodyさん:04/11/02 16:31:40 ID:09F3GGP8
めちゃめちゃ頭の悪い質問しますが、
ttp://xxx/xxx.php?xxx
のように.phpの後に?xxxとつけるためにはどうすればいいのですか?
htmlのページから飛んだときとかに?以降をつけたいのです
120nobodyさん:04/11/02 16:33:24 ID:???
<a href="http://xxx/xxx.php?xxx">link</a>
121nobodyさん:04/11/02 16:35:47 ID:???
>>119
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/l50
122nobodyさん:04/11/02 17:23:44 ID:???
静止画をflashに読み込むのって簡単なの?
やってみたひと詳細教えて。
123nobodyさん:04/11/02 17:26:58 ID:???
   〃∩ ∧_∧
   ⊂⌒( ´・ω・)く>>122にはマニュアルがお似合い
     `ヽ_っ⌒/⌒c
124122:04/11/02 17:50:20 ID:???
   〃∩ ∧_∧
   ⊂⌒( TεT;) 読んでも分からん。
     `ヽ_っ⌒/⌒c
125あぼーん:あぼーん
あぼーん
126nobodyさん:04/11/02 17:57:17 ID:???
   〃∩ ∧_∧
   ⊂⌒( ・∀・) おまえも氏ね
     `ヽ_っ⌒/⌒c
127ぼるじょあ ◆yBEncckFOU :04/11/02 21:15:56 ID:???
>>125
(・3・)エェー電話番号は駄目だYO
128nobodyさん:04/11/02 21:41:19 ID:QiT/le0d
お世話になっています。

phpの中にインナーフレームを埋め込みそこへhtmlを読み込んで、
targetで中身を書き換えるようにしているのですが、
インナーフレームの中のhtmlファイルが変わったときに
そのhtmlファイルが存在するディレクトリ名を取得して、
そこまでのルートをリンクとして、表示させたいのですが、
手法がわからず困っています。
なにとぞ、お知恵をお貸しください。

 また、こういうことを解説しているHPや、ヒントになりそうなHPの
情報もいただければと思います・

よろしくお願いいたします。
129nobodyさん:04/11/02 21:59:15 ID:???
>>128
>そこまでの"ルートをリンクとして、表示"させたいのですが、
"ルートをリンクとして、表示"というのが、具体的にどういうことなのか分からないのですが。
130nobodyさん:04/11/02 22:03:13 ID:???
「どこに」表示するのも聞かなくていいのかな
131nobodyさん:04/11/02 22:53:22 ID:???
>>128
http://pc5.2ch.net/test/read.cgi/php/1096965398/961
内容が同じ。

htmlでいいからサンプルを出せ。
132nobodyさん:04/11/03 03:05:34 ID:???
>>122
good j
133nobodyさん:04/11/03 12:37:17 ID:???
>>117
$_FILES['userfile']['name']は空でも
$_FILES['userfile']['error']はsetされてるかもよ
134nobodyさん:04/11/03 13:41:46 ID:???
>133
$_FILES 自体が無いみたいよ?
13578:04/11/03 14:43:14 ID:???
>134
そうです。セットされていたらコメントアウトしてある
phpinfo()の時点でリストされるはずですよね。
136nobodyさん:04/11/03 15:23:02 ID:???
Fedora 2か。
137nobodyさん:04/11/03 15:49:11 ID:???
>>135
単純にファイルアップロード自体が無効になってるということはないよね?
138nobodyさん:04/11/03 15:53:39 ID:???
>>137
>file_uploads = On
139nobodyさん:04/11/03 15:54:46 ID:???
>>136
かもねかもねそうかもね
140128:04/11/03 16:35:49 ID:lSNB2eWk
>131

http://pc5.2ch.net/test/read.cgi/php/1096965398/961
上記がインナーフレーム内のhtmlを想定しているかはよくわからないのですが、
イメージは、同じです。

現在のソースは以下のようにechoでhtmlを作成しています。
http://www.uploda.org/file/uporg15142.txt
のファイルをダウンロードしてください。
txtファイルは表示されないみたいで・・・(私の環境だからでしょうか?)
141nobodyさん:04/11/03 16:43:01 ID:???
もうそのくらいじゃ驚かないよ
142131:04/11/03 16:48:43 ID:lSNB2eWk
>140

main.phpのソースです。
http://www.uploda.org/file/uporg15147.jpg
jpgにしました。

よろしくお願いいたします。
143nobodyさん:04/11/03 16:50:18 ID:???
ああ俺もだ。jpgは基本だよな。
144131:04/11/03 16:53:04 ID:lSNB2eWk
>142
http://www.uploda.org/file/uporg15149.jpg

index.phpもjpgにしました。
よろしくお願いいたします。
145nobodyさん:04/11/03 17:03:18 ID:???
>>142
>>144
自己レスばっかりだ

もう涙が止まらない
146nobodyさん:04/11/03 17:05:31 ID:???
function &getcurrentd()
     ^^この&ってどういう利点があるの?
147nobodyさん:04/11/03 17:08:02 ID:???
>>144
<a href="〜.html" target="main">iframe内書き換え その1</a>
のように静的ファイル(html)を呼び出そうとしているなら無理だよ。
そこにPHPの介在する余地は無い。

サンプルが無いので したいらしい事を適当に想像するに、
iframeを含むページ自体を毎回書き直す方法が良いと思われ。

>>146
気にしたら負けと思われ
148131:04/11/03 17:24:29 ID:lSNB2eWk
>147

ご指摘のとおりです。htmlを呼び出しているだけです。
iframeを含むページ自体を書き換えるとするとどのような
処理が必要になるのでしょうか?

リンク先をクリックした情報を取得して、index.phpを書き換えるということでしょうか?
クリックしたということを取得するにはセッション情報が必要になるのでしょうか?

やりたいことはわかるのですが、何が必要で、どう処理すればよいのかわからず困っています。
どうそ、お知恵をお貸しください。

よろしくお願いいたします。
149131:04/11/03 17:30:02 ID:lSNB2eWk
>146

実は、わかっていないです。
サンプル等見ながら作成していたので、そのまま利用しています。

ディレクトリ名をメニューにして、iframe内のhtmlまでのディレクトリの階層
を「index >> 階層1 >>階層2」と表示できればページの管理が楽になるなと
思い作成を始めました。だったら、xmlで書けといわれそうなのですが、それだと、
かなり時間がかかると思い、できる限り簡単に短時間に作成できるように考えました。

自分の知識から考えると、これがベターかなと思って作成しています。
150nobodyさん:04/11/03 17:38:28 ID:???
そんなあなたにpukiwikiでtopicpathプラグイン
151nobodyさん:04/11/03 17:55:47 ID:???
>>149
動的にやる意味がない気がする。
ファイル数が不定期に増減して、ファイル名もランダムに変わるというなら意味ありそうだけど
ファイル数は一定でファイル名も固定なのであれば、何かスクリプトを書いてそれを使って
静的なhtmlを書いてしまえば、いいと思う。

んで、ファイル数が著しく増えたらもう一回スクリプトを走らせる、と。
152nobodyさん:04/11/03 17:59:09 ID:???
単にHPの管理が楽になるってんじゃないの?
153nobodyさん:04/11/03 18:07:56 ID:???
つまり、Wikiみたいなの作ろうとしてんのか。
俺もやったことあるけど、151の言う通りだと思う。
154nobodyさん:04/11/03 18:12:37 ID:???
いや、激しく違うと思うのだがw
155131:04/11/03 18:14:10 ID:lSNB2eWk
>151

ディレクトリも、htmlファイルもランダムに変わります。

>152
の言う通りHPの管理を楽にするためです。

>153

どういう手法なのかお教え願えないでしょうか?
お願いいたします。
156131:04/11/03 19:11:19 ID:lSNB2eWk
>154

何を激しく思うのでしょうか???
157nobodyさん:04/11/03 19:18:08 ID:???
変数に入っている複数行のテキストから一行目だけ抜き出したいのですが、

$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;

こんな風になってしまいました。。
もっとスマートに書く方法はありませんか?
158nobodyさん:04/11/03 19:56:01 ID:???
$testに複数行あるとして(LF改行ね)

list($result) = explode("\n",$test);
159131:04/11/03 21:26:46 ID:lSNB2eWk
index.phpのiframeをincludeにしてして、仮にiframe.phpとして、
index.phpのリンク先をどこか別のところに書き出し、
さらに、index.phpを再度読みiframe.php内に書き換えたiframe.phpを
書き出せばよいのでしょうか?

こうするには、何が必要になるのでしょうか?
クリック情報を得るには何が必要でしょうか?
160nobodyさん:04/11/03 21:48:55 ID:???
うぜーな
iframeとかいってる時点でスレ違いなんだよ
161nobodyさん:04/11/03 23:19:09 ID:???
すいません、もう小一時間悩んでるんですが、
1回 addslashes して投稿した本文は
2回 addslashes した検索キーじゃないと同じようにマッチしないんですか?

データは MySQL に入れているのですが……。
162 ◆.jC7ANgFY. :04/11/03 23:53:52 ID:???
>>157
list($result) = explode("\n", $text, 2);
163nobodyさん:04/11/04 00:05:00 ID:???
>>161
聞く前に試せ
164nobodyさん:04/11/04 00:09:55 ID:???
>>161
MySQLだったら addslashes じゃなくて mysql_escape_string を使えよ
165nobodyさん:04/11/04 03:33:48 ID:???
未だに mysql_escape_string と addslashed の効果の違いが分からないので教えてください……
166161:04/11/04 05:37:04 ID:???
回答ありがとうございます。

>>163
何回も試しましたが、やはり>161のようになってしまいます。
これは常識なのでしょうか……できれば何故そうなるのかも理解したいです。

>>164
試したところ、やはり結果は同じでした。
167nobodyさん:04/11/04 05:42:21 ID:???
>>166
magic_quartがONになってない?
168nobodyさん:04/11/04 05:45:01 ID:???
漢字、全角ひらがな、全角カタカナをマッチングしたいんですが、
範囲を教えてください
mb_ereg使って正規表現すればいい?
169161:04/11/04 07:12:33 ID:???
>>167
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 側の問題のような気がしてきました……。
170nobodyさん:04/11/04 07:29:40 ID:???
>>162
おまいlist理解してるか?
いや、それでも動くけどさ
171nobodyさん:04/11/04 08:45:28 ID:???
>>170
お前こそlist()を理解してるのか?と問いたいわけだが。

>>168
ここを読むといい。
http://www.din.or.jp/~ohzaki/perl.htm
preg_match()ならperl互換だからほとんどそのまま使える。
172軟式PHP:04/11/04 09:05:55 ID:???
>>170
お前頭固そうw
173nobodyさん:04/11/04 09:27:50 ID:???
>>170
がんばれよ
174170:04/11/04 10:12:37 ID:???
頼むからマニュアル読んで発言してくれ
175nobodyさん:04/11/04 10:19:53 ID:???
>>170
>>174
プッ。。。頭悪すぎ。。。w
Hint
1)array explode()
2)要望者は$resultに1行目のデータを入れたい。
176nobodyさん:04/11/04 10:30:26 ID:???
explodeで2個に分けてるのにlistが1個だけなら意味がないと思う
list($result, $test) = explode("\n", $text, 2);
なら分かるけど
177nobodyさん:04/11/04 10:35:42 ID:???
こんにちはー
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認証部分をコメントすると、問題なく動作します。
よろしくお願いします。
178176:04/11/04 10:37:55 ID:???
間違えてるし
list($result, $text) = explode("\n", $text, 2);
$resultが1行目$textは2行目以降の残りの部分になる。
179nobodyさん:04/11/04 10:39:57 ID:???
>>178必死杉^^(プッ
180nobodyさん:04/11/04 11:27:35 ID:???
>>177
自己レス。

上の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スレの方で聞いてみます。
失礼しました。
181nobodyさん:04/11/04 11:28:28 ID:???
>>179必死杉^^(プッ
182nobodyさん:04/11/04 12:54:23 ID:???
なんか必死な奴が混ざってるが笑えるな。
マニュアル読むまでも無いと思うが。

list($result, ) = explode("\n", $text, 2);
こんな書き方もある。
それぞれに変数を用意してやる必要はない。
183nobodyさん:04/11/04 13:18:10 ID:XSGSYvoF
送られたメールのsubjectをそのまま本文に載せて返したいのですが、
MIMEの文字列をJISに変換するにはどうしたらよいでしょうか
184nobodyさん:04/11/04 13:19:32 ID:???
ああやればいいじゃん!
185 183 :04/11/04 13:28:05 ID:???
そうですね^^解決しました^^
186nobodyさん:04/11/04 13:29:02 ID:???
>>183
取りあえずマニュアルの mail 関数の項に目をとおしては?
187nobodyさん:04/11/04 18:57:14 ID:???
どなたかお知恵をお貸しください。

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);

宛先を各個人にするにはやっぱりループさせるしかないですよね。
これがすさまじく処理に時間がかかるんです。
大量メールの場合や、添付ファイルをつけた場合、
これではサーバーが持たないですかね・・・
宛先に各個人を表示するプログラムってやっぱきついんですかね?
ループさせないで送る方法も考えつかないですし・・・
どなたかよい知恵があれば教えてください。
188170:04/11/04 19:22:30 ID:???
>>175
とりあえず、動かすぐらいしてみたらどうだ?
ちゃんと1行目だけ入るから
189 ◆.jC7ANgFY. :04/11/04 19:39:45 ID:???
>>187
自分でプロトコル接続プログラムを作成して送信していくのがいいと思う。
サーバーは持つけど長くなるけどね。

うまくPHPを同時に複数走らせたりすればサーバーに適したスピードでの
送信も可能です。そのときは複数送信をしないような方法を考えましょう。
190nobodyさん:04/11/04 20:56:49 ID:???
>>187
mail関数使わずに、qmail-queueに投げて処理してる。
リモートにしかMTAが無いなら、>>189の言うようにSMTP話すようにして、
1通毎にコネクション切らないようにしてやれば若干マシ。

ところで、間違っても共有サーバで動かそうと思って無いだろな?



191nobodyさん:04/11/04 21:43:16 ID:???
>>187
俺も興味ある話だから便乗させて。

mail関数使わずに、popen()でパイプオープンして内容を投げればええのかな?
何かよいサンプルソースがあればと思い探してるのだが。。
192nobodyさん:04/11/04 22:03:07 ID:???
PHPでwmvファイルをダイアログを出してDLさせようと思い

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できる方法があればご教授お願い致します。
よろしくお願いします。

#くだ質の方に間違って書いてしまいました。ごめんなさい。
193nobodyさん:04/11/04 22:17:46 ID:???
>>192
header("Content-Disposition: attachment; filename=\"test.wmv\"");
ならどぉよ。
194nobodyさん:04/11/04 22:21:42 ID:???
>>192
マルチしてんじゃねーよ
195nobodyさん:04/11/04 22:24:09 ID:???
>>194
間違ったって書いてあるじゃん
196192:04/11/04 22:35:49 ID:???
>>193
できました。本当にありがとうございました。
197nobodyさん:04/11/05 00:25:22 ID:FgI15ehK
一週間ほど前にDB板で質問したのですがこちらで聞いてみろと言われたのでこちらで質問させて下さい。
mysql&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を付けたいのですがなんか良い方法ないでしょうか?
198nobodyさん:04/11/05 00:30:58 ID:???
>>197
それはHTMLのお話。
<option 〜 selected>のselectedの部分を ”自分で” 出力すればよい。
他のフォーム要素についても同じ。
199197:04/11/05 00:54:35 ID:FgI15ehK
>>198
selectedをつければいいということは解ってるのです。
mysql_fetch_arrayで拾い出してくる値のうち、
既に入力された情報のoptionにだけwhileループのなかで
いかにして自動的にselectedをつけるかで悩んでるのです。
200nobodyさん:04/11/05 00:58:36 ID:onIpwNyM
perlのサブルーチンに該当するのってphpでは何でしょうか?
201nobodyさん:04/11/05 01:10:19 ID:???
>>200
perlのsubはphpではfunction
202nobodyさん:04/11/05 01:11:34 ID:???
    ∩___∩           |
    | ノ\   ,_ヽ       |
   /  ●゛  ● |         |
   | ∪  ( _●_) ミ     (>>200)
  彡、   |∪|   |      J
  /     ∩ノ ⊃ ヽ
 (  \ / _ノ |  |
  \  "  /  | |
   \ / ̄ ̄ ̄ /
203nobodyさん:04/11/05 01:13:58 ID:???
>>199
pearにそういうこともできるパッケージがあるけど、
selectedを付ける程度だったらarray_mapかなんかで実装した方がいいかも知れない。
204nobodyさん:04/11/05 03:14:21 ID:ipfVcK1A
質問です.
自分で作成した(コーディングしてコンパイルしたということです)
SMTPサーバを/usr/sbin/sendmailにインストールしphp.iniで
sendmail_pathを/usr/sbin/sendmailに設定しました.
このときに,PHP(アパッチのモジュールではなくて)で
mb_send_mail()を実行してもSMTPサーバにメールが送られていないようですが,
原因は何が考えられるでしょうか?
エラーメッセージが一切出てこないこともあって,原因がわからなくてこまっています.

(phpインストール時に./configureでマルチバイトストリングが扱えるようにオプションを
つけています.)
205nobodyさん:04/11/05 03:36:57 ID:???
>>204
/usr/sbin/sendmail はSMTPサーバじゃない、コマンドだよ。
206nobodyさん:04/11/05 03:37:37 ID:???
>>204
> SMTPサーバにメールが送られていないようです
メル鯖のログを見た?
> エラーメッセージが一切出てこないこともあって
mb_send_mail はbooleanを返すけど、それはどうなってるの?
207nobodyさん:04/11/05 04:27:45 ID:???
PHPマスター様の(,,゚Д゚)∩先生に質問です
$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_;
?>
てな感じで読み出したい・・・
変数の中に命令文を入れたら
動かないのは分かるのですが
どうすれば出来るのかわかりません
(´・ω・`)ショボーン
初心者ですいませんがお教えい下さい。
208nobodyさん:04/11/05 06:32:47 ID:puzbyGUU
今日の寝巻きは赤でした
今日の寝巻きは黄でした
今日の寝巻きは緑でした

っというような文章があり、
色の部分だけ取り出して変数に入れるにはどうすればよいのでしょうか
入門書の正規表現のところを見ても英語の例しかなくうまくいきません
209nobodyさん:04/11/05 08:54:15 ID:???
echo str_replace(array('今日の寝巻きは','でした'), '', '今日の寝巻きは赤でした');
210nobodyさん:04/11/05 11:01:51 ID:???
foreach($a as $b) {
if ($b==$c) { array_merge($a,$d[$c]);
ここで現在のforeachループを破棄して、
もう一度最初から$aの評価をしたいのです。
($dの内容によっては無限ループに陥る
可能性があるのは目をつぶるとして)
どう書けば良いでしょうか。
211nobodyさん:04/11/05 11:18:35 ID:???
$a = reset( $a );
212nobodyさん:04/11/05 11:19:25 ID:???
miss
reset( $a );
213nobodyさん:04/11/05 11:26:53 ID:???
>>210
do {
 foreach ($a as $b) {
  if ($b==$c) {
   array_merge($a, $d[$c]):
   break;
  } // endif
 } // endforeach
} while(TRUE)

かな?
このままだと常に無限ループだが、
中のforeachから抜けるには break 2; を使えばいい
214nobodyさん:04/11/05 11:29:35 ID:vAMAiFLG
ttp://tohoho.wakusei.ne.jp/wwwperl2.htm
こちらのsocket関数の項目に書かれているスクリプトを自分の
スクリプトに組み込んでますが
自分の使っているサーバーでperl -wcでスクリプトチェックを行ったら
Unquoted string "stdout" may clash with future reserved word at aaa.cgi line 543.
このような警告文が表示されました。
select(stdout);
のstdoutをAAAとか別のものに置き換えたらこの警告文が回避できましたが
別のものに置き換えても正常に動くのでしょうか?
perlのバージョンはThis is perl, v5.8.2 built for i386-freebsdです。
215nobodyさん:04/11/05 11:32:48 ID:???
>>214
残念ながらここはPHPスレだ。
216214:04/11/05 11:34:45 ID:???
>>215
申し訳ない
間違えた。。
217nobodyさん:04/11/05 11:39:20 ID:???
>>212
うほ。なんて簡単。アリガ?ォクス

>>213
似たようなのを考えてた。
218212:04/11/05 11:52:41 ID:???
すまん。かなり嘘教えてた。
while( list( $key, $b ) = each( $a ) )
{
  if( $b == $c )
  {
   array_merge( $a, $d[$c] );
    reset( $a );
  }
}
で、どうだろう。
219nobodyさん:04/11/05 11:54:48 ID:???
なんと break 2;でネスト2個抜けれるのか・・便利だ
220204:04/11/05 12:22:22 ID:ipfVcK1A
>>206
メール鯖のログは昨日みましたが,やはり何ものこっていませんでした.

mb_send_mailがbooleanを返すということでしたので、今試して見たところ,false
が返ってきています.
phpinfo()をすると,mbstringはenableで,sendmail_pathもちゃんと設定されています.
falseが返る原因として他に何が考えられるでしょうか?
221nobodyさん:04/11/05 12:36:58 ID:???
>>218
うん。(笑)
試してみたら、resetではforeachはresetされなかった。
>218ならいけそうな予感。
でもいささか古めかしい書き方なのは、仕方ないかな。
無限ループ前提でbreak2で抜けるのとどちらが良いかは、
好みが分かれる所かな?
222nobodyさん:04/11/05 13:29:12 ID:???
>>191
>mail関数使わずに、popen()でパイプオープンして内容を投げればええのかな?

そんな感じ。厳密には使ってるのはproc-open()だったり、オリジナルのqmail-queue
ではなかったりしてるけど。後は単純にqmail関係の話だから、そっちの資料(本もあるし)
を当たった方が良いよ。


223nobodyさん:04/11/05 13:49:41 ID:???
1を4回echoしたいんだけど

while(4){echo "1";}

これではあかんのかな?
224nobodyさん:04/11/05 14:11:43 ID:???
式( 4 ) が真である間 echo "1" を繰り返す、という文だね
225nobodyさん:04/11/05 14:13:42 ID:???
$i = 0;
while($i++ < 4){echo "1";}
226nobodyさん:04/11/05 14:20:15 ID:???
おお!そうするのか!
225を参考にforを使ったやつも考えてみた

for($i=0;$i<4;$i++){echo "1";}

うーん、いろいろ出来るね。サンクス>224-225
227nobodyさん:04/11/05 14:21:34 ID:???
( ゚Д゚)ポカーン
228nobodyさん:04/11/05 14:34:33 ID:???
これが噂のVB厨かな?
229nobodyさん:04/11/05 14:47:25 ID:onIpwNyM
classとかfunctionって使ったほうがスクリプト自体はサクサクになる
んでしょうか?原理的には変わらん気がしますが。
それとも構造が分かりやすくて編集しやすいって利点のみ?

初心者なんでこれらを使わない方が作りやすいんですが・・・
230nobodyさん:04/11/05 14:48:28 ID:???
一生初心者で終わる気なら気にしなくていいよ
231nobodyさん:04/11/05 14:54:19 ID:???
>229
どっちもどっち。
作りやすいほうをどうぞ。
232nobodyさん:04/11/05 14:55:41 ID:???
>>229
なんとなくfunction使うとちょっと遅くなってclass使うともっと遅くなる、ような気がする。
233nobodyさん:04/11/05 14:58:40 ID:???
今じゃ、PCの性能UPしてるからソンナニ変わらん
class使うのは、再利用したい為と
共同開発するときに他人にも分かりやすくする為

どっちにしろ、初心者には関係ない
234nobodyさん:04/11/05 15:15:32 ID:???
保守性・生産性を無視するならfunctionもclassもいらないなぁ。
しかし、使わないと吐き気が出るプログラムが出来そうだがw
235nobodyさん:04/11/05 15:20:26 ID:???
PHP-5.0.2にPDFlib-Lite-6.0.0p1.tar.gzをいれようと思ってるんですが
PDFLib-Liteを入れた後、PHPを再コンパイルする際に、
--with-pdflib=/usr/localをつけたにもかかわらず、
インストールされないってどういうことでしょうか教えてください。
ちなみに、PHP-4.3.Xでは同じ方法でインストールできたと思います。
236nobodyさん:04/11/05 15:20:40 ID:???
二度とそのファイルは開きたくないだろうな
237nobodyさん:04/11/05 15:49:11 ID:???
>>235
PHP5に対応しているとはどこにも書いてないようですが?
使うな危険とも書いてないけど。
238nobodyさん:04/11/05 15:51:10 ID:???
>>229
OOPできなくても、構造化プログラミングぐらいしてないと、
趣味プログラムでも後で泣くよ。
保守できなくて。

色々と工夫してclassとかfunctionとか作ってると、
新しいプログラムを作るときに
新たに書くコード量が減ってきていい感じになる。

functionとかclass使えば、
普通はパフォーマンス落ちるよ。

そのパフォーマンスの落ちが問題なのかどうかってのも、
普通は検討事項。

職業プログラムなら、悩むまでもなくパフォーマンス落ちを取る。
# そもそも気にするほど遅くならない
239nobodyさん:04/11/05 15:55:45 ID:VQSnf7DD
PHPからSQLのデータをCSVファイルとしてダウンロードさせたいのですが
この時に列幅等指定できないのでしょうか?
240nobodyさん:04/11/05 16:08:36 ID:???
>>239
列幅を扱えるようなCSVファイルなら、そのフォーマットにそって出力すればよい。
ただ、MS-ExcelのCSV出力のように列幅データを持たないものもある。
241nobodyさん:04/11/05 18:22:31 ID:???
PHPのsession_start()ってクッキー使ってるんですか?
242nobodyさん:04/11/05 18:33:36 ID:???
使う場合と使わない場合がある。
243nobodyさん:04/11/05 18:45:09 ID:???
最近phpを勉強し始めました。
書籍買って、カウンターのコードサンプルみてふと思ったのですが、
perlの場合、lockしてるのをよくみかけますが、
phpではlockする必要ないのですか?
244nobodyさん:04/11/05 18:52:44 ID:???
糞サンプル(初心者に分かりやすいように書いてる)だからロックしてないだけだと思われ。
ロックはしないとぶっ壊れるよ。
245カポコン:04/11/05 19:13:17 ID:???
>>243
そういう糞スクリプト俺でさえ作らないのに…
どこの出版社よ?この際晒してみてよ。
246nobodyさん:04/11/05 19:23:43 ID:???
入門書にまともなコードを書くやつはいない。
なぜなら、まともなコードを書くと入門書では紙面が足りないコードになるから。

一例を挙げれば入力のサニタイジングだって必須だけど省かれるし…・。
文字コードの色々な問題についても省くよね。

初心者になんでもかんでも説明するのは事実上不可能。
しかし、説明の無いコードが大量にあったら糞入門書だ。

つまり、入門書は雰囲気のみ。
実際に使えるコードなど無い。
247nobodyさん:04/11/05 19:41:36 ID:QUoZnGJq
array_search で0番めの配列がヒットした場合、
ヒットしなかった時の値(false=0)が返って来ますよね?

みなさんはどうやって切り分けていますか?
248nobodyさん:04/11/05 19:45:12 ID:???
>>247
!== と === 演算子
249241:04/11/05 20:50:01 ID:???
早速session_start()試してみたんですが、
クッキーオフにしたら機能しなかった・・・。
セキュリティリスク高いからできるだけクッキーは
使いたくなかったんですが、これはしょうがないのかな?
初歩的な質問スマソ
250nobodyさん:04/11/05 20:59:16 ID:???
マニュアル。
251nobodyさん:04/11/05 21:05:23 ID:???
>>249
勘違いしてるようだが、クッキーを使った方がセキュリティリスクが低いぞ。
もちろん、secureフラグを使用した場合だが。
252241:04/11/05 21:06:23 ID:???
了解、一個だけ質問ヨロシコ。
クッキーを使う場合についての注意点として、
・unsetを忘れない
・時間設定しておく
・パスワードなんかの重要情報は暗号化しておく
くらいしか思いつかないんだが、やばいですか?
253241:04/11/05 21:08:19 ID:???
>>251
secureフラグ、初耳でした。
SSL利用しないとクッキーはかなーり危険でしか?
254nobodyさん:04/11/05 21:08:44 ID:???
セキュリティを考えるとセッションはCookie使うべき。
255241:04/11/05 21:10:24 ID:???
例えば、ドメイン取得で有名な http://www.value-domain.com/
はphpとクッキーでログインシステム管理してるみたいだけど、
SSL利用は必須としていないみたいでし。

256nobodyさん:04/11/05 21:13:20 ID:???
必須としてないから何でしょう?
257241:04/11/05 21:13:44 ID:???
クッキーはGET使ってデータやり取りするより危険と思ってマスタ orz
258nobodyさん:04/11/05 21:14:09 ID:???
CookieにはセッションIDだけを埋め込むのが普通。
259241:04/11/05 21:23:22 ID:???
おもっきりパスワードをCookieに埋め込んでましたが何か?



勉強しなおしてきます。ありがとうございました。
260nobodyさん:04/11/05 21:41:54 ID:???
まあ暗号化してやり取りするならそれでもいいと思うが
261nobodyさん:04/11/05 21:45:38 ID:???
Cookieに限らず、通信路を暗号化しておかないと全てにおいて危険はつきまとう.
無線LAN環境でパケットスニッフしてみると良く分かる.
262nobodyさん:04/11/05 21:54:28 ID:???
まあ扱うデータにもよるが
263nobodyさん:04/11/05 22:01:00 ID:???
>>239,240
列幅を扱えるCSVってどんなんだろう。。。
264191:04/11/05 22:03:04 ID:???
>>222
遅レスだけどサンクス。
popen()使ってたけどproc-open()なんてのもあるんだ。
知らなかった。。
265nobodyさん:04/11/05 22:08:57 ID:???
値Aが値Bの倍数であった場合を真、そうでない場合を偽と判定するコードってどう書けば?
A%Bで出てきた値が1以上の整数だった場合を真とすれば出来そうだけど整数である事の判定の仕方が分かりません。
教えて下さい。
266nobodyさん:04/11/05 22:19:44 ID:???
is_int
267nobodyさん:04/11/05 22:33:34 ID:???
便乗だが、
COOKEI OFFにして
session_start();
print $PHPSESSID;
しても $PHPSESSIDが表示されないぽ。
なぜぽ?
COOKEI ONなら
正しく表示されるのに
なぜぽ?
268nobodyさん:04/11/05 22:35:31 ID:???
クッケーキターーーーーーーーーー!!!!!!!!!!!
269nobodyさん:04/11/05 22:37:13 ID:???
>>265

まず A >= B でなければ偽
さもなくば A == B なら1倍で真
さもなくばBと等しいか大きくなるまでAを足していって
ちょっきりBと等しくなれば真
残りは偽

270nobodyさん:04/11/05 22:38:22 ID:???
>>267
session_start();
$PHPSESSID = session_id();
print $PHPSESSID;

じゃないの?
271nobodyさん:04/11/05 22:39:17 ID:???
まちがえた

まず A >= B でなければ偽
さもなくば A == B なら1倍で真
さもなくば初期値0に対してAと等しいか大きくなるまでBを足していってちょっきりAと等しくなれば真
残りは偽
272nobodyさん:04/11/05 22:44:54 ID:???
empty(A%B)

>>265
273272:04/11/05 22:46:23 ID:???
!A%B
でもいいのか。
274nobodyさん:04/11/05 22:56:42 ID:???
>>270
それなりにありがとーーーーーーー
275nobodyさん:04/11/05 23:22:14 ID:???
>>267
session.use_trans_sid を 1 にしれ.
もしくは自分でリンクに全部 <?=SID?> をつけれ.
話はそれからだ.
276nobodyさん:04/11/06 07:02:58 ID:T75+ILHO
Windows上で動作しているPHPで、ミリ秒かマイクロ秒単位のsleep()をする方法はないでしょうか?
usleep()はWindows上だと動かないので(-_-)ウツ
277187:04/11/06 12:04:59 ID:???
>>189
>>190
>>191

アドバイスどうもです。
そんな感じの方法で少しがんばってみます。
共有サーバーでこんな思い処理やばいのは百も承知でっす。
でも、使うのは自分じゃないから何とも言えないけども。

1通毎にコネクション切らないで行う方法など、
とりあえずなんかしらで少しでも処理軽くする方法考えます。

popen()ついてですが、自分もなんかしらのソース探してみます。
道のりは長いですね・・・
278nobodyさん:04/11/06 12:11:31 ID:???
スパムの提供か?
279nobodyさん:04/11/06 12:19:48 ID:BQGFb7uF
なぜにスパムに!
そんなことするソフトだったら作らずともいくらでもあるような。

今回はデータ管理でせっかくアドレスもあるからメール送る機能も追加しといてってだけ。
作ってればあれもこれもと欲がでてくるみたい。
きりがないからこっちはお疲れモード。
280nobodyさん:04/11/06 12:23:30 ID:veEoJvKd
$ls = `ls /home/abc`;
ってのをユーザabcから使ってみたんですが、
ls: `/home/abc': Permission denied
apacheのエラーログにというエラーが表示され、
結果を取得することができません。
perl-suEXECのときはこれでいけたんですが、
PHPってどういった権限で動いてるんでしょうか?
解決方法はありますか?
宜しくお願いします。
281nobodyさん:04/11/06 12:24:03 ID:???
> 共有サーバーでこんな思い処理やばいのは百も承知でっす。
> でも、使うのは自分じゃないから何とも言えないけども。
こういう馬鹿のお陰で、今までいくつも便利なサービスが停止されていった。
自鯖でやれ、屑。
282nobodyさん:04/11/06 12:30:07 ID:???
>>280
Apacheのモジュールで動いていれば実行はapache(wwwとかnobodyとか)になる。
PHPをCGI(suExec)で動かせばよい
283280:04/11/06 12:41:02 ID:???
>>282
なるほど、サンクスです。
ちなみにsudoで apacheにlsの権限を与えるのは危険過ぎですか?
危険過ぎっぽいですが。
284191:04/11/06 12:42:54 ID:???
>>281
便乗させてもらってる俺が言うのも何だが、激しく同意
285280:04/11/06 12:44:31 ID:???
スマソ。1つ追加質問です。
phpをCGIとして動作させるとモッサリするってのは
よく聞きますが、このモッサリするってのは
「動作が重くなる」に加えて、「負荷が高くなる」も含みますでしょうか?
当初、perlの方が作りやすかったんですが、
phpの方が負荷が低いからいいかなと思ってたんですが。
286nobodyさん:04/11/06 12:58:34 ID:BQGFb7uF
>>281
>>284

ちょっと書き方が悪かったです。すいません。
今あれやこれやと検討中です。
もちろん自分としては、こんな重いもの共有サーバーでやりたくありません。
そのことについては何度も何度も説明しています。
もしそれでも相手話を飲んでくれないのでしたら、
一回の処理での上限数を決めるなりして、
処理が大きくなりすぎないようにこちらでするつもりです。

少しでもサーバーの処理を低減したいと言うことと、
上限を決めるにも一回の処理で多くこなせるに超したことはないので、
今回質問いたした次第です。

いくらなんでも、サーバーが悲鳴を上げるようなもの作るつもりはありませんので・・・
いろいろとすいませんでした。
287nobodyさん:04/11/06 13:06:23 ID:???
>>277
ああ、じゃあ提示した案はどれも多分無理だぜ。
288nobodyさん:04/11/06 14:34:20 ID:???
>>286
全部他人のせいにしてるみたいだが、共有サーバしか使えない発注元って何だ?
289nobodyさん:04/11/06 14:51:06 ID:???
ある特定phpの実行時のエラーを画面に出さないようにするには
どうすればよいのでしょうか?
php.iniのdisplay_errorsを変更すると他のphpにも影響がでるので
Onのままです。
290nobodyさん:04/11/06 14:56:49 ID:???
>>289
エラーが出ないように書けばいいだけじゃね?
291nobodyさん:04/11/06 14:57:04 ID:???
>>289
関数で制御できるよ
error_reporting
292nobodyさん:04/11/06 16:37:25 ID:RH6kTyyV
文字のコード番号を取得する方法ってありますか?
例えば'a'なら97(0x61)などです。
293nobodyさん:04/11/06 16:48:35 ID:???
>>292
ord
マニュアル読め
294nobodyさん:04/11/06 16:52:00 ID:RH6kTyyV
解決しました
295nobodyさん:04/11/06 16:53:58 ID:RH6kTyyV
>>293
良く解らなかったのでマルチバイトまで対応させたり色々しました。
文字→数字というのは式では出来なかったので
 bin2hex($src);
を使いました。
こっちは16進数ですが、16進数が使いたかったので丁度よかったです。

他に方法があるならば教えてください。
お願いします。
296289:04/11/06 17:44:18 ID:???
>>291

ありがとうございます。
無事できました。
297nobodyさん:04/11/06 19:35:26 ID:???
>>295
え?それなんか違わないか?
298nobodyさん:04/11/07 00:28:11 ID:559ttViC
mb_send_mailがSMTPに実際にアクセスしているときにどのような
やり取りをしているのでしょうか?
もしくは,それが書いてあるような仕様書とかってありますか?

別にプログラムを作成してstdinからmb_send_mailの送信内容を読むと読めるのですが,To:[email protected]
の1行しか読めなかったり,ヘッダ全部を読めたりと動作がまちまちでよくわからないのですが.
299272:04/11/07 00:30:25 ID:???
つーか反応返せや。
教え損だわ、ホンマ。
300nobodyさん:04/11/07 00:42:34 ID:???
>>298
ソース見れば一目瞭然。
仕様に関しては、
mb_send_mail
 | (使用しているSMTPサーバのマニュアル参照。メル鯖プログラムに依存)
MTA(phpが話すメル鯖)
 | (RFC参照。番号忘れた)
外部MTA
301nobodyさん:04/11/07 01:03:51 ID:???
>>299
まぁその程度教えたぐらいで煮えるな。
もっとぐたぐた説明して反応返さないやつなんぞアホほどいる。
302nobodyさん:04/11/07 01:07:55 ID:???
>>299
代わりに反応しておくとそのコードじゃ倍数判定は出来ない上、empty関数のコールは全くの無駄
303nobodyさん:04/11/07 01:08:52 ID:???
これがやぶへびか
304nobodyさん:04/11/07 01:38:12 ID:???
つか、普通に!A%Bだろ
わざわざempty持ってきて何がしたいんだ
しかも条件式1個答えただけでそこまで偉そうにされてもな
305nobodyさん:04/11/07 02:15:03 ID:???
一応>>273も読んでやってくれ
306nobodyさん:04/11/07 02:39:02 ID:???
>>298
マニュアルにも書いてある通りメール送信部分はmail()のラッパ。
mail()は普通にsendmail(もしくは互換のもの)に対してpopenして
パラメータを出力してるだけ。これはSMTPを話してる訳ではないよ
(Win32の場合は異なる。さっき見たらNetWareも違うな)
mail.c読んでごらん。mb_send_mailから追うならmbstring.cも。
307nobodyさん:04/11/07 03:49:37 ID:tqDkdxs2
プロトタイプ宣言の類って無いん?
308nobodyさん:04/11/07 05:05:37 ID:mIUFi7Zu
>>307
PHP6で実装されます。お楽しみに・・・

実装されるまでずっと言われるよなコレ
309nobodyさん:04/11/07 06:50:54 ID:???
はっきり言うわよ!!
310nobodyさん:04/11/07 10:01:00 ID:???
>>304
演算子の順位
311292:04/11/07 10:25:36 ID:SeAJAIhj
>>297
あんまり慣れてないので話すと長くなりますが。
Apacheサーバーでphpを動かしています。
phpで直リンクのURLを作成したかったのです。

私はWindowsを使っているので
 [Shift_JIS]→[UTF-8]
にする必要がありました。

さらにそれぞれ一文字ずつを16進数で分割して数字の前に%をつける必要もあったのです。
数字(10進数)でなくても良かったので、
むしろこれでよかったと思います。
312nobodyさん:04/11/07 10:41:56 ID:ff0yHRS4
有難う御座いました。>>308

前に自作関数がくるんは好きじゃないので
自作関数は別ファイルにしてincludeしてますが、
常に別ファイルを読みに行ってしまうわけですから、
この部分がボトルネックになったりしますか?
313nobodyさん:04/11/07 11:00:13 ID:???
下手の考え休むに似たり
取らぬ狸の皮算用
314nobodyさん:04/11/07 11:02:36 ID:???
>>311
URLエンコード用の関数はUTF-8だとダメなのかな?
315nobodyさん:04/11/07 12:32:41 ID:???
>>312
ファイルの読込なんて構文解析に比べたら
速いか遅いかはわかりません
316nobodyさん:04/11/07 12:38:19 ID:???
類が友をよびまくってまたまたネタだらけだな
317292:04/11/07 13:34:02 ID:SeAJAIhj
>>314
urlencode
こんな関数があったんですね。
ありがとうございます。
318292:04/11/07 13:46:57 ID:SeAJAIhj
>>314
Shift_JISならShift_JISで、UTF-8ならUTF-8でそれぞれ変換されました。
もしApacheなどで使うならばこのようにすると良いようです。

$top_jpg = mb_convert_encoding($picture_addr, "UTF-8","Shift_JIS");
$top = urlencode ($top_jpg) . ".jpg";
<img src=\"$top\">


mb_convert_encodingは拡張関数なので
拡張モジュール「php_mbstring.dll」を有効にする必要があります。

ttp://jp2.php.net/manual/ja/install.windows.php
319nobodyさん:04/11/07 13:56:00 ID:???
>>318
mbstring使えないサーバだとmbstringエミュレータ使うといいですよ
320nobodyさん:04/11/07 19:31:44 ID:???
php4と思わしきコードを自鯖のphp5で試してみたら
Notice: Undefined index: command in C:〜

と出る。そこを調べてみたら、どうやら$_POST['command']
$_POSTで送られてきてるのが全てNoticeになってるみたい。

PHPのマニュアルを見ても、ググってもイマイチ分かりません。
Noticeを出さないように改善する方法はありませんか?
321nobodyさん:04/11/07 20:12:02 ID:???
げ、$_POST['command']使えなくなるのかな・・
322nobodyさん:04/11/07 20:32:01 ID:???
>>316


すぐにこんな人ワラワラ
湧いてくるよね。。。
323nobodyさん:04/11/07 21:26:50 ID:???
>>320
error_reporting( error_reporting() ^ E_NOTICE );
で表示上はNOTICEは出なくなるが根本的な解決ではない

$_POST を var_dump OR print_r して中身を確かめてみれば?
324280:04/11/07 21:35:35 ID:IUwmjDQr
色々な理由により.cgiとしての利用は難しいのが現状っぽいです。
>>282
以外に解決方法はないでしょうか?
325nobodyさん:04/11/07 22:06:51 ID:???
lsコマンドの部分だけ他のスクリプトで書けば?
326nobodyさん:04/11/07 22:07:18 ID:???
>>320
ハァ?
定義されて無いんだからNoticeはあたり前だろが
何今更いってんだ?
327280:04/11/07 22:22:21 ID:???
>>325
天才!!
サンクスです!!
328nobodyさん:04/11/07 22:27:07 ID:ZgNgeUkw
>>311
ttp://www.spencernetwork.org/jcode/
こっちの方が便利、対応しているサーバ、対応していないサーバ、基本的に
関係ないので、どでしょうか?
329nobodyさん:04/11/07 22:29:07 ID:???
$hogehoge=1;
include(aaa.php);

------------------
aaa.php
print $hogehoge;
------------------

このスクリプト動かしたとき、
1って表示されますか?それともnullでしょうか?
チェックしたいのですが、現在phpが動作しない状況でして
確認することができません。教えてくだせぇ
330nobodyさん:04/11/07 22:34:41 ID:???
>>329
1って表示されるはず。
前にfor文の中で$i使ってたときあって、文の始めにinclude_onceで読み込んだ先のファイル内でも$i使ってたりして
ハマったことあるなぁ・・・。
まさかスコープが同じとは思わなかったよ。
331nobodyさん:04/11/07 22:36:34 ID:???
>>330
ありがとうございますm(__)m
332nobodyさん:04/11/07 22:37:38 ID:???
文字列の分割です。例えば"*"を区切り記号として、

例1."abc" は "abc"と""(又はNULL)
例2."abc*" は "abc"と"*"
例3."abc*def" は "abc"と"*def"

explodeだと、"abc"と"def"になってしまいます。
また、例1と例2の区別が出来ません。

どうするのが一番スマートでしょうか?
333 ◆.jC7ANgFY. :04/11/07 23:00:20 ID:???
>>332
$str = "abc*";
$ret = explode('*', $str, 2);
if (count($ret) == 2) $ret[2] or $ret[2] = '*';
else $ret[2] = NULL;
334 ◆.jC7ANgFY. :04/11/07 23:01:29 ID:???
>>332
訂正です。添字ミス。$strを元に$retに結果が返ります。

$str = "abc*";
$ret = explode('*', $str, 2);
if (count($ret) == 2) $ret[1] or $ret[1] = '*';
else $ret[1] = NULL;
335nobodyさん:04/11/07 23:25:19 ID:???
>>334
ありがと。
でも、ifとか無しに
ならんかと考え中。
336nobodyさん:04/11/07 23:46:22 ID:???
>>332
多分、これでいいと思う。

$str1 = 'abc*';
$str2 = 'abc*def';
$str3 = 'abc*def*ghi';

print_r(preg_split('/(?=\*)/', $str1));
print_r(preg_split('/(?=\*)/', $str2));
print_r(preg_split('/(?=\*)/', $str3));
337336:04/11/07 23:54:55 ID:???
>>332
問題を少し読み間違えていたような気がするのでもう一度。
必ず 2 つに分割するのかどうかが問題を見ただけでは分からないけど。

$str0 = 'abc';
$str1 = 'abc*';
$str2 = 'abc*def';
$str3 = 'abc*def*ghi';

print_r(preg_split('/(?=\*)|$/', $str0, 2));
print_r(preg_split('/(?=\*)|$/', $str1, 2));
print_r(preg_split('/(?=\*)|$/', $str2, 2));
print_r(preg_split('/(?=\*)|$/', $str3, 2));
338nobodyさん:04/11/07 23:56:14 ID:???
アップロードした画像をGDでサムネイル作成するページを作成しています。
透過GIFの場合を考え、ImageColorTransparent を使用するつもりです。

新しく定義した背景色を指定する方法 ( ImageColorAllocate ) は見つかりましたが、
アップロードされた透過GIFに元々定義されている透過色を判断出来る方法はあるのでしょうか?

339nobodyさん:04/11/07 23:59:47 ID:???
>>320
とりあえず、$_POSTを、$_REQUESTに変える。
そもそも、commandをPOSTで送ってない。ってんなら。
array_key_exists()をかます。
340nobodyさん:04/11/08 00:21:09 ID:???
>>336,337
ありがと。>336の方がいいみたい。

マンモス本P.322を見ているのだが、
なんで>336の書き方で、区切り文字の
"*"が配列に残っているのか、不思議。
341320:04/11/08 01:10:50 ID:???
>>323 >>339
ありがと。あと、dumpで表示してみたら、NULLでした。

緊急措置としてif (array_key_exists("command", $_POST)){
かましてみました。上手く行きました。THX
342320:04/11/08 01:20:50 ID:???
何か
<input name=command type=hidden value="hogehoge">
で得てるみたい。
343nobodyさん:04/11/08 01:22:02 ID:???
>>339
俺毎回issetかましてるが、そんな関数もあったのか
344nobodyさん:04/11/08 03:10:22 ID:???
なぁPHPの連想配列はハッシュだぞ、、
345nobodyさん:04/11/08 03:17:17 ID:???
Array_key_existsは配列処理関数の完全性のためにあるんです。
346nobodyさん:04/11/08 04:01:12 ID:???
array_key_exists より isset の方が短くて好きよ。
347320:04/11/08 04:15:58 ID:???
switch($_POST['command'])で判定してるから
issetつかえねー(´・ω・`)

$_POSTの初期化ってどうするの?ヽ(`Д´)ノ
348nobodyさん:04/11/08 08:03:25 ID:???
>>347
( ;´・ω・`)人(´・ω・`; )
349nobodyさん:04/11/08 08:14:32 ID:???
>>347
switch(isset($_POST['command']) ? $_POST['command'] : FALSE)
350軟式PHP:04/11/08 09:06:18 ID:???
ボンクラ質問者が多くなってきたな
351nobodyさん:04/11/08 09:10:32 ID:???
>>350
あまり高度な質問されても解答できないだろ?
君にあわせてくれているんだよ。感謝しなきゃ。
352軟式PHP:04/11/08 09:16:16 ID:???
なるほどな。
353nobodyさん:04/11/08 10:01:32 ID:???
>>647
$_POST = array();
354nobodyさん:04/11/08 11:10:56 ID:pYeS35cG
教えてください。
PHPを使ってアップロードしたときに
ファイルサイズが制限を越えるファイルをアップすると
サーバ側でファイルサイズや名前が取得できないだけでなく
他の項目(<input type="text" など)のデータ
も設定されなくなるのですが
こういうものなのでしょうか?
355nobodyさん:04/11/08 11:38:30 ID:???
大根とか無理でしょ。
それじゃあ制限の必要ないじゃん。
無理かどうか確認しないと。
356nobodyさん:04/11/08 11:58:24 ID:vBQdFfe4
ネットショップ運営者です。
格安商材なので頻繁な銀行振り込み確認が非常にコストとなっています。
自動確認スクリプトみたいなのが作れたらいいなと思うのですが、
可能でしょうか?銀行から如何に振込み名義を取得するかが
ネックですが。
357nobodyさん:04/11/08 12:10:55 ID:???
微妙にスレ違いかもしれませんが、質問します。

サーバのphp.iniの設定をhtaccessで変更できると
聞いたのですがやり方がよく分かりません。
ググってみても参考サイトが探せなくて。。
何か参考になるサイトをご存じないでしょうか?
358nobodyさん:04/11/08 12:12:53 ID:???
>>356
取引先の銀行に相談されるのが先かと。
359354:04/11/08 12:14:21 ID:???
>>355
大根?
とりあえず無理ってことですよね
360nobodyさん:04/11/08 12:20:09 ID:???
>>356
ショップ経営してるなら普通ファックスサービスかメールサービス使わないか?
361nobodyさん:04/11/08 13:05:29 ID:???
362nobodyさん:04/11/08 15:47:12 ID:e4TPxf3I
php5のコンストラクタ、
なんで__constructに変わったんだろ?
__destructに合わせたかっただけ?
363nobodyさん:04/11/08 15:58:09 ID:???
もとから__construct()
364nobodyさん:04/11/08 15:58:33 ID:???

【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/

365nobodyさん:04/11/08 17:21:39 ID:???
誘導されてきました。
今、http://m@ki.私のドメイン.comというアドレスにしたくて
ki.私のドメイン.comを設定して、それはちゃんと表示されるのですが、
http://m@ki.私のドメイン.comとすると、print_rで$_SERVERを表示させても
そのmが入れられているかいないかの区別が付きません。どのようにPHPで記述すれば
その値が取得出来るのでしょうか?教えて下さい。m(_ _)m
366365:04/11/08 17:27:59 ID:???
なお、認証ダイアログ
if ($_SERVER['PHP_AUTH_USER'] == '' ) {
header('WWW-Authenticate: Basic realm="My Realm"');
header("HTTP/1.0 401 Unauthorized");
echo "ユーザーがキャンセルボタンを押した時に送信されるテキスト\n";
exit;
}
else {
echo "<p>こんにちは、{$_SERVER['PHP_AUTH_USER']} さん。</p>";
echo "<p>あなたは、{$_SERVER['PHP_AUTH_PW']} をパスワードとして入力しました。</p>";
}
は出さずに行いたいです。
367nobodyさん:04/11/08 17:39:07 ID:???
>>365
なんか良く分からんが、DNSの話なら板違いだな。
つーか @ を使おうとするなんて変態だな
368nobodyさん:04/11/08 17:43:50 ID:???
>>365-366
ルアーですか、そうですか
369nobodyさん:04/11/08 17:55:18 ID:???
>>367
認証要求されてないからブラウザが不要なユーザ名を削除してるだけ。
DNSはカンケーない。
370nobodyさん:04/11/08 17:58:06 ID:???
俺も一流の釣り師目指してがんがるよ。
371nobodyさん:04/11/08 18:37:59 ID:???
>>365
ドメインの前につける@の意味は知ってるのか?
372nobodyさん:04/11/08 19:57:36 ID:???
Basic認証の時に
http://user:[email protected]と出来るのを知っていて
その@だけ使って面白い事が出来ないのかと思ったのですがダメなんでしょうか?
ブラウザからGET Request出した時点で削除されるんですか?!
373nobodyさん:04/11/08 20:02:38 ID:???
@はクライアント依存だからなぁ・・・
374nobodyさん:04/11/08 20:09:54 ID:???
>>372
http://user:[email protected]と出来る
これ送出してるクライアントが持ってる機能だから。
で、使おうとしてるクライアントでは出来るの?
375nobodyさん:04/11/08 20:36:41 ID:???
>>374
出来る出来ない以前にIEは修正パッチのどれかを当てると出来なくなるのが問題になったのだが、
376nobodyさん:04/11/08 20:39:42 ID:???
またIEか。。。。
377nobodyさん:04/11/08 20:49:14 ID:???
別にこれに関してはIEが悪いわけじゃないけどなw
378nobodyさん:04/11/08 20:54:15 ID:???
なるほど・・・・完全にクライアント依存ですか。
どのブラウザでも(携帯も含む)。と思っているので流石に無理そうですね・・・。

現在、MacのIE5でチェックしています。
379nobodyさん:04/11/08 20:59:19 ID:???
携帯は全滅の筈。
380nobodyさん:04/11/08 21:01:10 ID:???
ftp://user:[email protected]/の形式を
httpに流用しただけで規格外
RFCに載ってなかったっけ?
381nobodyさん:04/11/08 21:06:53 ID:???
そういやいつの間にかIEで使えなくなってたな
382nobodyさん:04/11/08 21:08:13 ID:???
URI に user, password を含める形式は RFC で規定されている。
それが HTTP プロトコルの場合は BASIC 認証に置き換えている。
FTP の場合は USER, PASS でログインが実行される。

URI はあくまでリソースの位置を示す情報だからそれが常にそのままサーバに渡される訳ではない、ということ
383nobodyさん:04/11/08 21:13:56 ID:???
phpから.cgiをincludeして利用したいのですが、
コードが表示されてしまい、正しく表示されません。
.cgi単体では正しく動作しています。
どうすればいいでしょうか?宜しくお願いします。
384nobodyさん:04/11/08 21:17:31 ID:vBQdFfe4
ag
385nobodyさん:04/11/08 21:27:46 ID:???
>>383
まさかローカルのファイルを指定してないよなぁ・・・
386sage:04/11/08 21:34:35 ID:lTLj8kGr
>>385
いや・・・さすがにそこまでは・・・
ちゃんとHTTPでリクエストしていますよ。
同じサーバ内でリクエストしてもダメなんでしょうか?
execするとうまく動作してるのですが。
宜しくお願いします。
387383:04/11/08 21:42:25 ID:???
ローカル指定してますた orz
ありがとう。でもなぜにローカルじゃダメポ?

>>386
俺の書き込みを乗っ取ってどうしようと・・・w
388329:04/11/08 21:50:04 ID:???
>>330
表示されねーっす。
表示させる方法ないっすかね?
389nobodyさん:04/11/08 21:59:03 ID:???
>>387
なんで、って…単純にファイル読み込んでるだけになるからCGIが処理されるわけ無い
CGIファイルをブラウザにD&Dしても処理結果表示されないでしょ?

>>388
>>329の通りなら表示されるはずだが…
390nobodyさん:04/11/08 22:01:55 ID:???
> include(aaa.php);
これ変じゃね?
391386:04/11/08 22:05:38 ID:lTLj8kGr
>>389
私にもレスくださいよ・・・
392329:04/11/08 22:21:58 ID:???
すんません、表示されました。
でもこれ、include "***.cgi";
じゃ効果ないっすね。当たり前かな?
上手くPHPからperlに引数渡せる方法見っけたと思ったら
だめぽでしたな。うわーん
393nobodyさん:04/11/08 22:26:30 ID:???
>>392
file_get_contentsでURL渡すしかないかも
includeは単純にファイルを挿入するだけぽ
394nobodyさん:04/11/08 22:30:30 ID:???
PHPで、HTTPヘッダと一緒に送信したエンティティ部分を取得するには
どうしたらいいんでしょうか?
395329:04/11/08 22:34:41 ID:???
>>393
thanks, but muripo-desita.
396nobodyさん:04/11/08 22:47:24 ID:???
>>395
perlは結果を標準出力してphpで受け取ったあとPHPで出力・・・じゃだめか
397nobodyさん:04/11/08 22:55:10 ID:???
例 11-5. HTTP経由のinclude()

<?php

/* この例は www.example.com が.phpはPHPスクリプトとして扱い、.txtは通常の *
* ファイルとして扱うように設定されていると仮定しています。また、ここでの *
* '動作します'という言葉の意味は、変数$fooと$barが読み込まれる側のファイ *
* ルで使用可能である、ということです。 */

// 動作しません: www.example.com では file.txt はPHPコードとして解釈されません。
include 'http://www.example.com/file.txt?foo=1&bar=2';

// 動作しません: 'file.php?foo=1&bar=2' という名前のファイルをローカルファイル
// システム上から探し出そうとします。
include 'file.php?foo=1&bar=2';

// 動作します。
include 'http://www.example.com/file.php?foo=1&bar=2';

$foo = 1;
$bar = 2;
include 'file.txt'; // Works.
include 'file.php'; // Works.

?>

398329:04/11/08 23:09:43 ID:???
>>396-397
ありがとうございます。
.cgi(perl)にもこの方法で変数を渡すことができました。
実は渡したい変数というのがID/パスワードになるんですが、
セキュリティ的にどうだと思いますか?
includeしてるからブラウザのアドレス欄に残ることはなさそうですが・・・。
399nobodyさん:04/11/08 23:19:57 ID:???
>>398
セキュリティ的にはむしろ危険な方法だよ
仕組みを考えれば分かる
PHPからperlに変数送るのってどうやってやるんだっけ?
400nobodyさん:04/11/08 23:34:04 ID:???
>>399
どこがどう危険なんですか?
>>329じゃありませんが、教えてください。
401nobodyさん:04/11/09 01:06:28 ID:???
まだ初期の段階です。ttp://localhost/にアクセスしたら
ユーザー名とパス入力がでました。どうすればいいでしょうか?
402nobodyさん:04/11/09 01:11:24 ID:???
>>401
sine
403nobodyさん:04/11/09 01:31:49 ID:???
>>401
何故か笑ってしまった。
404nobodyさん:04/11/09 02:09:52 ID:???
文字列から特定の文字を削除する関数おしえてくださいませ
1時間ぐぐりまわったが、chopとかしか見つからなかったです
405nobodyさん:04/11/09 02:20:15 ID:???
str_replace
406nobodyさん:04/11/09 02:23:07 ID:???
$str = "あくあだあらあねあえあ質あ問あはあ他あスあレあであ";
str_replace("あ","",$str);
407nobodyさん:04/11/09 02:23:15 ID:???
>>404
strtrとかで空文字と置換してやるんじゃダメなのか?
408nobodyさん:04/11/09 08:45:17 ID:???
>>235
> ちなみに、PHP-4.3.Xでは同じ方法でインストールできたと思います。

これ本当?
readme.txt にはそんなこと書いていないようですが。
ところで、PDFlib-lite-6.0.0p1.tar.gzは普通に configure と make しても
libpdf_php.so が作成されないんだけど、どうやるのですかね?
それらしいオプションもなさそうですが。
409nobodyさん:04/11/09 09:48:43 ID:???
PHP5 以降は確か PECL に移動して PHP5 のソースには含まれなくなったはず。
PDFlib-lite-6.0.0p1 をインストールした後、

http://pecl.php.net/package/pdflib

から pdflib-2.0.2.tgz をダウンロードしてきて、

$ phpize
$ ./configure
$ make
$ make install

して、インストールに成功したら、dl("pdf.so") で呼び出すか、php.ini に
PHP 起動時に読み込まれるように設定する。

もしかすると、こんな手間を掛けなくても、

$ pear install pdflib

だけでも自動的にインストールされるかもしれない。
410nobodyさん:04/11/09 10:17:19 ID:???
文中の'\'を¥に変換したいのですが、単純に↓のようにやると、
SJISの時にソや表や十が文字化けしてしまいます。
str_replace("\\", '¥', 'ソラソラ表十け\けけ');

mb関数なら大丈夫かと思い↓なんてやってみたんですが、
mb_ereg_replace("\\\\", '¥', 'ソラソラ表十け\けけ');
str_replaceと同様の結果になりました。

どうすれば正しく'\'だけを置換できるでしょうか?

411nobodyさん:04/11/09 10:24:47 ID:???
>>409
ありがとうございます。が、PHP4.3.9でPDFlib-lite-6.0.0p1を使いたいのです。
readme.txtをみると PHP APIのバージョンが合ってないとだめと書いてあるようですね。
./configure --with-pdflib=/usr/local; make;ではmake時にエラーが出ます(Fedora core2)

PHP5に移行するかな‥
412410:04/11/09 10:27:13 ID:???
ありゃ、変換後の文字列は &yen;(半角)です。
413nobodyさん:04/11/09 10:27:36 ID:???
>>410
mb_regex_encoding() あたりかな?
マルチバイト文字列関数のマニュアルをよく嫁。
414nobodyさん:04/11/09 10:28:32 ID:???
¥
415410:04/11/09 10:57:43 ID:???
>>413
ありがとうございました。

事前にマニュアルを確認したところマニュアルには以下のように書いてあり
> 文字エンコーディングとしては、内部エンコーディングまたは mb_regex_encoding()で指定した文字エンコーディン グが使用されます。
内部エンコーディングにSJIS指定してたと思ったのですが、
どうやらそうなっていなかったようです。

mb_regex_encoding("SJIS");
を置換の前に指定することにより解決しました。
ありがとうございます。
416409:04/11/09 11:58:25 ID:???
>>411
エラーが出るのは PHP 4.3.9 のソースからコンパイルした場合かな?

PECL の pdflib-2.0.2 は PHP4 と PDFlib-lite-6.0.0p1 でも対応して
いるみたいなので、PHP 4.3.9 のソースでは pdflib を入れずに
インストールした後、モジュールとして pdflib のインストールを
試してみれば?

一応、試してみたけど、

$ pear install pdflib

でも大丈夫みたい。
417nobodyさん:04/11/09 13:17:59 ID:???
>>416
> >>411
> エラーが出るのは PHP 4.3.9 のソースからコンパイルした場合かな?

そうです。情報を小出しにして済みません。
既にpdflib-4.0.3が入っていたので、make uninstallして、PDFlib-lite-6.0.0p1をソースから
configure; make; make install;。
最後にPHP4.3.9を--with-pdflib=/usr/localしてmakeしているときにエラーが発生します。

--with-pdflib=noでPHP4.3.9をインストールした後に、pear install pdflibしてみましたが、
今度は
/tmp/tmpAAT0NG/pdflib-2.0.2/pdf.c:7155:19: pdf4.c: No such file or directory
make: *** [pdf.lo] Error 1
`make' failed
で落ちました。

対象のマシンは実験機でいろんなものを入れたり消したりしているので、不具合が
あるのかもしれません。一度OSからきれいに入れ直してみます。
418nobodyさん:04/11/09 14:08:28 ID:???
>>417
PHP 4.3.9 のソースに含まれているものは PDFlib-lite 6.0.0 には対応していない。

そのエラーが発生した pdflib-2.0.2/pdf.c のソースの該当行を見てみたけど、
どうやら PDFLib 4 がインストールされているものとして認識されているね。

#elif PDFLIB_MAJORVERSION == 4
 /* use the old PDFlib wrapper */
# include "pdf4.c"
#else /* PDFLIB_MAJORVERSION < 5 */
# error "PDFlib version does not match PHP-wrapper code"
#endif /* PDFlib >= 5.0.0 */

どこかに PDFLib 4 用のヘッダファイル(/usr/include/pdflib.h あたり?)が
残っていると思うので、削除するとか、pear でインストールするときに、
pdflib がインストールされている場所を聞かれるはずなので、
自動認識にせずに、/usr/local を指定するとかしてみるとうまくいくかもしれない。
419nobodyさん:04/11/09 17:51:40 ID:???
>>418
お手数をおかけします。
/usr/local/include に pdflib.h があったので削除して、
pear install pdflib-2.0.2.tgz を行いましたが、今度は以下のエラーで
終了しました。

/usr/local/src/pdflib-2.0.2/pdf.c:7081: error: `gdImagePtr' undeclared (first use in this function)
/usr/local/src/pdflib-2.0.2/pdf.c:7081: error: (Each undeclared identifier is reported only once
/usr/local/src/pdflib-2.0.2/pdf.c:7081: error: for each function it appears in.)
/usr/local/src/pdflib-2.0.2/pdf.c:7081: error: syntax error before "im"
/usr/local/src/pdflib-2.0.2/pdf.c:7099: error: `im' undeclared (first use in this function)
/usr/local/src/pdflib-2.0.2/pdf.c:7099: error: syntax error before "zend_fetch_resource"
make: *** [pdf.lo] Error 1

別のマシン(Minacle Linux 2.0+PHP4.3.9 PDFlib非インストール)で
PDFlib-lite-6.0.0p1を configure; make; make install;した後
pear install pdflib-2.0.2.tgz を行いましたが、ここでも以下のエラーで
終了してしまいした。

gcc: unrecognized option `-prefer-pic'
/tmp/tmp6cYe68/pdflib-2.0.2/pdf.c:87: ext/gd/php_gd.h: No such file or directory
/tmp/tmp6cYe68/pdflib-2.0.2/pdf.c:89: ext/gd/libgd/gd.h: No such file or directo
ry
make: *** [pdf.lo] エラー 1
`make' failed

gd関数は使用可能になっていますが、確かに/usr/local/lib/php/ext には
gd/php_gd.h はありません。

なにかいろいろ問題があるようです。
頭を冷やしてもう一度ドキュメント類を見直してみます。
420nobodyさん:04/11/09 18:04:30 ID:i/oj7Egh
すみませんが教えてください。
過去ログ読んでいると「内部エンコーディング」って言葉が
よく出てくるんですが、いったい何なのでしょうか?
421nobodyさん:04/11/09 18:05:27 ID:???
>>420
マニュアル読め
422nobodyさん:04/11/09 18:19:20 ID:???
423nobodyさん:04/11/09 19:17:22 ID:???
>>419
PDFLib-LiteはGDが必須ってだけだから、
PHPのソースのextをリンクすれば良いんじゃない?
424nobodyさん:04/11/09 19:51:04 ID:???
>>419
GD をインストールしているのが原因でエラーになるのか・・・。
GD のヘッダファイルを PHP のソースからコピーしたら解決できそう。

$ mkdir /usr/local/include/php/ext/gd

$ cd php-4.3.9/ext/gd
$ cp php_gd.h /usr/local/include/php/ext/gd/
$ cp -r libgd /usr/local/include/php/ext/gd/

$ pear install pdflib

>>423 が言っているように、手動で pdflib-2.0.2.tgz を展開して、
PHP-4.3.9 のソースの ext をシンボリックリンクしてコンパイルする
という方法もある。

PHP 側で GD をインストールするときはヘッダファイルのインストール
してくれると楽なんだけど。
425nobodyさん:04/11/09 19:57:29 ID:???
(´-`).。oO(FPDFじゃダメなんだろうか?)
426nobodyさん:04/11/09 20:20:51 ID:???
Perlのtr(文字単位での置き換え)みたいなのありますか?

$tmp =~ tr{123}{ABC}

123をABCに置き換えるんじゃなく、

1 -> A
2 -> B
3 -> C

のように文字単位で置き換えられる処理です。

10203 -> A0B0C
427nobodyさん:04/11/09 20:28:29 ID:???
>426
配列で指定する
428nobodyさん:04/11/09 20:31:38 ID:???
>>426
echo strtr('10203', '123', 'ABC');
429nobodyさん:04/11/09 20:31:45 ID:???
>>427
正規表現使うなら>>427の言うとおり。
正規表現を必要としないならstrtr()という関数が便利
430426:04/11/09 20:45:21 ID:???
皆さんありがとうございます。

>>428さん
strtr関数に気付きませんでした。もっと良くマニュアル読みます。

>>429さん
複雑な条件はなく、ただ単純に例みたいに置き換えるだけだから>>428さんので
大丈夫でした。

>>427さん
こんな感じで書いてみたんですけどうまくいきませんでしたorz

echo preg_replace( "/[123]/", "[ABC]", "10203" );

[ABC]0[ABC]0[ABC] になってしまいました。
431426:04/11/09 21:07:18 ID:???
>>427
できました。

<?php
$str = "10203";
$search = array("1", "2", "3");
$replace = array("A", "B", "C");
echo str_replace( $search, $replace, $str );
?>
432429:04/11/09 21:07:44 ID:???
7秒差でかぶった
433431:04/11/09 21:43:40 ID:???
>>432さん
助かりました。ありがとうございました。
434nobodyさん:04/11/09 21:53:17 ID:bn3NZRnm
クラス書く時点では、
継承するかどうかは分からないから、
とりあえずprotectedにしておけば問題ないですか?
逆にprivateにしておけばいいプロパティーって
どういうものがあるのでしょうか?
435400:04/11/09 21:57:20 ID:???
>>399
教えろやゴルァ!!
436nobodyさん:04/11/09 22:06:54 ID:???
失礼します。
ランダムにリンクを貼ったテキストを表示させようと思い、
これを別ファイルに記述し、
表示させたいページにrequireで呼び出しています。

<?php $com = array(
'<a href="http://">テキスト1</a>',
'<a href="http://">テキスト2</a>',
'<a href="http://">テキスト3</a>',
'<a href="http://">テキスト4</a>',
'<a href="http://">テキスト5</a>',
'<a href="http://">テキスト6</a>',
'<a href="http://">テキスト7</a>',
'<a href="http://">テキスト8</a>',
'<a href="http://">テキスト9</a>',
'<a href="http://">テキスト10</a>',
);
srand( (double)microtime()*1000000 );
print $com[rand(0,count($com) - 1)];
?>

同じページに二つ呼び出すと
どちらも同じテキストがランダムに出てしまいます。たとえば
テキスト1
テキスト1

再度読み込んで表示させてみても
テキスト2
テキスト2
となってしまいます。完全ランダム表示にするのは
どうすればいいでしょうか?
437nobodyさん:04/11/09 22:19:11 ID:???
>>436
> srand( (double)microtime()*1000000 );
これ、意味分かるか?
438nobodyさん:04/11/09 22:20:10 ID:???
>>436
srandだけrequireする側でやれ

1.436のソースからsrand部分を↓の場所に移動さす
2.残りをrand.phpとする

<?php
srand((double)microtime()*1000000);

require 'rand.php';
require 'rand.php';
?>
439nobodyさん:04/11/09 22:33:26 ID:???
初めまして。
早速質問です。


$file = "ccc.cgi";
if(get_magic_quotes_gpc()){
$ranking = stripslashes($_GET[aaa']);
$homename = stripslashes($_GET['bbb']);
}
$aaa = htmlspecialchars("$aaa");
$bbb = htmlspecialchars("$bbb");

$ok="http://";
if($ranking = $ok):
$fp = fopen($file, "w");
fwrite($fp, "<a href=\"$aaa\" title=\"$bbb\">$bbb</a>");
fclose($fp);
endif
?>

上のものは、http://〜〜〜?aaa=http://&bbb=ここに日本語
というふうにして、GETを使って、データを受け渡ししたいのですが、
ファイルにも上手く書きこめるのですが、bbb= で指定した値が日本語の場合、
文字化けして「ccc.cgi」に書きこまれてしまいます。
どこが間違っているのでしょうか?
ご指摘お願いします。
440nobodyさん:04/11/09 22:52:24 ID:???
DBへパスワード(会員の)を入れる場合はMD5で暗号化しますが、
ユーザがパスワードを忘れた場合、DB上のデータは暗号化されています。
どうやってパスワードをゲットするのでしょうか。
441nobodyさん:04/11/09 22:58:15 ID:???
>>440
MD5ハッシュがどういうものか理解してれば、
>どうやってパスワードをゲットするのでしょうか
なんて思わない。運用上で新規のパスワードを管理者が登録して、
あとでユーザの好きなように再設定させる。
442nobodyさん:04/11/09 23:15:35 ID:???
>>441 さんどうもです。

>なんて思わない。運用上で新規のパスワードを管理者が登録して、
>あとでユーザの好きなように再設定させる。

ユーザが再設定したPASSは管理者は関与しないんですか?
ユーザが設定したPASSをユーザが忘れた場合はどうするんでしょうか。
443nobodyさん:04/11/09 23:18:54 ID:???
忘れた場合はリマインダで適当なパスワードをメアドに送信
444411=417=419:04/11/10 00:00:20 ID:???
>>423,424
できました。やっと…。
結局 PHP4.3.9 のソースのext/gd ディレクトリの中身を /usr/local/include/php/ext/gd
へコピーしてビルドする方法で上手くいきました。

しかし、pear install pdflibだけで上手くいく環境ってなんでしょうか?
参考までに教えていただけませんか。

>>425
pdf_fit_textlineという関数が非常に便利なのですよ。
445nobodyさん:04/11/10 01:09:12 ID:???
>>442
>>441を繰り返す。

つか、生パスワードがどうしても必要だと思えるなら、照合用のハッシュ以外に
管理用として、セキュリティレベルの高いところに生パスワード保存しといたら?
「どうしても必要だと思う」運用や根拠を熟考すべきだと思うが。
446nobodyさん:04/11/10 01:21:47 ID:???
>>440
ttp://neta.ywcafe.net/000122.html パスワードの危機(その1) − きっかけ
http://neta.ywcafe.net/000123.html パスワードの危機(その2) − あるべき姿
447nobodyさん:04/11/10 02:58:37 ID:???
Warning: ob_start(): output handler 'ob_gzhandler' cannot be used after 'mb_output_handler' in index.php on line 2
と出てしまうのですが、
http://members.lycos.co.uk/dachshund/modules/newbb/viewtopic.php?post_id=84&topic_id=84&forum=6
とzlib.output_handlerの説明を見比べてたんですが、いまいちよく分かりません。
ob_gzhandlerがmb_output_handlerの後に使えなかった、これはどう対処すればいいんでしょうか?

php.iniの設定は以下のようになってます。(EUCスクリプトをEUC出力してます)
output_buffering = Off
output_handler = mb_output_handler

output_handlerだけコメントアウトして
zlib.output_compression = On
zlib.output_handler = mb_output_handler
を加えたんですが、ちっとも変わりません。どなたかアドバイスいただけると助かります。
448nobodyさん:04/11/10 03:05:19 ID:???
>>447
なぜ、output_buffering = On にしない?
449nobodyさん:04/11/10 03:29:41 ID:???
>>439
urlrawencode() OR urlencode()
450nobodyさん:04/11/10 03:50:52 ID:???
自動で出力バッファかけても一階層深くなるだけだからじゃねーの
451429:04/11/10 04:45:07 ID:???
>>433
律儀やね

>>436
srand()の意味が分かってないのでマニュアルを読んだ方が良い。
あと、今回のようなケースではshuffle()使った方が楽。
ランダムで吐き出す数が決まってるなら、array_rand()でも良い。

>>439
urlencode()

>>440
暗号化には2種類あって、複合化できるものとそうでないものがある。
md5()は後者。
そもそも、複合化できるなら暗号化する意味がない。
452429:04/11/10 04:46:27 ID:???
ゴメン。
最新レス取得せずに書き込みしてしまいたくさんカブってしまった。
453nobodyさん:04/11/10 05:17:03 ID:???
×複合化
○復号
454nobodyさん:04/11/10 07:42:04 ID:???
複合化だってよ...ださっ
455416:04/11/10 08:36:32 ID:???
>>444
PHP のソースに含まれている GD を組み込んでいない場合は GD のヘッダは
要求されないので pear install pdflib で成功する。

または、
http://www.boutell.com/gd/
の GD をインストールしている場合はそちらの方のヘッダを使用できるよう
なので、pear コマンドでも成功すると思う。
456軟式PHP:04/11/10 09:02:14 ID:???
>そもそも、複合化できるなら暗号化する意味がない。
頭悪そう・・・・
457nobodyさん:04/11/10 09:07:54 ID:???
>>456
オマエモナー
458軟式PHP:04/11/10 09:14:33 ID:???
>>457
。・゚・(Д`(⊂(゚Д゚ つ⌒
459444:04/11/10 09:54:01 ID:???
>>455
なるほど。JpGraphもよく利用するので gd は迷わず有効にしてました。
l今回は勉強になりました。どうもありがとうございました。

ちなみに pdf_fit_textline 関数はlite版では動かなかった・・・・
ライセンス買えってかorz
460nobodyさん:04/11/10 10:10:21 ID:???
>>456
オマエガナー
461nobodyさん:04/11/10 10:48:26 ID:???
軍事通信で暗号化するのも「意味がない」らしい(藁
462nobodyさん:04/11/10 14:02:56 ID:???
blowfishとかショボーンだな。
463nobodyさん:04/11/10 14:10:05 ID:???
軍事ってまだ秘密鍵なのか?
464nobodyさん:04/11/10 16:43:27 ID:???
教えて下さい
HTML>
body>

ココからヤフー
<?
readfile("ttp://www.yahoo.co.jp");
?>
/BODY>
/HTML>
上のように自分ページに他のアドレスのページをくっつけたいのですが
readfile関数を使うと相対URLで書かれていたリンクや画像が自分のURLになってしまうので
404エラーや画像が正しく出ません
絶対URLに直す方法を教えて下さい
あとreadfileで指定したURLがCGIなどで自動的にジャンプするときにはそのジャンプ先のアドレスを読み込み表示するようですが
ジャンプ先のURLの取得方法を教えて下さい

優しいかたおしえてください
465nobodyさん:04/11/10 16:55:17 ID:???
著作権違反です。
466nobodyさん:04/11/10 16:57:15 ID:???
>>464
> 絶対URLに直す方法を教えて下さい
正規表現で書き換え。この時点でreadfileで済ますのは難しくなるな。
> ジャンプ先のURLの取得方法を教えて下さい

HTTPヘッダのLocation: URL や HTMLヘッダのmeta refresh を使う場合がほとんどだから、
両方を自分で処理すればよい。

難易度がかなりアップしてるなぁ。人のページを取り込むなんてセコいことせずに
リンクだけ貼っておけばええやん<a href="〜">だけで済むぞ。良かったな!
467nobodyさん:04/11/10 17:14:31 ID:???
>>464
<base href= >を使えばいい
468nobodyさん:04/11/10 17:25:18 ID:???
>>467
やさしいひとありがd
469nobodyさん:04/11/10 17:33:44 ID:???
犯罪幇助乙
470nobodyさん:04/11/10 17:51:49 ID:???
ついにタイーホ者が・・・
471nobodyさん:04/11/10 18:24:24 ID:???
>>469>>470
面白いか?
472464:04/11/10 18:31:53 ID:???
ジャンプ先のURLの取得方法はどうすればいいですか?

やさしい人おしえてください
473nobodyさん:04/11/10 18:34:06 ID:???
>>467
絶対パスで書かれていたら無効。
やはり、ソース引っ張ってきてリンク部分を正規表現で変換していく方法となるだろう。
474nobodyさん:04/11/10 19:23:05 ID:???
>>471
犯罪者乙
475nobodyさん:04/11/10 19:35:49 ID:???
enctype が multipart/form-data で送信されるデータを
php://input などで読み取ることはできないでしょうか?
476nobodyさん:04/11/10 19:59:23 ID:???
>>475
  _、_       そろそろ自分で確かめてるだろうから、
( ,_ノ` )y━・~~~ 試した結果を教えてもらおうか
477nobodyさん:04/11/10 21:05:28 ID:???
>>472
ジャンプ先ってリダイレクト先のこと?
ヘッダにリダイレクトがあればそこに飛ばす。
それ系の説明したページは腐るほどあるからググれ。
時々リダイレクト先を相対パスで指す場合があるので、その辺注意。
478272:04/11/10 21:23:43 ID:???
pdfを読みたいんですがどうしたらいいですか。
出力する方法ならよく記事になってるんですが・・
ちなみにテキストだけでいいんです。
479nobodyさん:04/11/10 21:45:45 ID:???
>>478

PHPは素人だけど・・・。
pdftotext(とか言う奴だったと思うけど)使ってtxtファイルに変換して読めば?
480nobodyさん:04/11/10 23:38:53 ID:???
お返事ありがとうございます。>>449 >>451

$file = "ccc.cgi";

$aaa = stripslashes($_GET['aaa']);
$bbb = htmlspecialchars(urldecode($_GET['bbb']));


$ok="http://";
if($aaa = $ok):
$fp = fopen($file, "w");
fwrite($fp, "<a href=\"$aaa\" title=\"$bbb\">$bbb</a>");
fclose($fp);
endif

このようにしてみたのですが、上手く出来ません。
どこが間違っているのでしょうか?お願いします。
481nobodyさん:04/11/10 23:55:25 ID:MdRF7bmL
誤って'/usr/local/lib/php/'以下を削除してしまいました。
再インストールしてみても復活できませんでした。
実際の操作としては php-4.3.9/ で make install を行いました。
どのようにすれば復旧できるでしょうか。
482433:04/11/11 00:21:33 ID:???
>>451さん
ありがとうございます。
おかげさまで順調です。
483nobodyさん:04/11/11 02:12:24 ID:???
>>480
$aaa = $ok の時点で必ず $aaa は "http://" になり if 文は必ず true になり意味が無い
$aaa == $ok だとしても "http://" と比較するだけであり、リンクとなるのが <a href="http://" title="....."> しか有り得ない

なにがやりたいのかよくわからないが とりあえず上記の間違いは直しとけ……
484481:04/11/11 02:17:33 ID:???
自己レス
/usr/local/lib/phpディレクトリを削除して再インストールしたら復活しました。
485nobodyさん:04/11/11 03:32:26 ID:KRI/ACvq
system("platex test.tex");
とやってもうんともすんとも言ってくれません。

system("dir");
とかは普通に動くのですが。

なにかオマジナイがいるのでしょうか?

486nobodyさん:04/11/11 03:43:35 ID:???
>485
なんでエラー処理をしないんですか?
なんで絶対パス・相対パスを考慮しないんですか?
487nobodyさん:04/11/11 04:05:37 ID:???
>>485
なんで環境を書かないんですか?
488nobodyさん:04/11/11 05:59:46 ID:5oF+gWxQ
オブジェクトのプロパティーの初期値は
NULLで固定ですか?
わざわざNULLで初期値設定をしているプログラムをあまり見ないのですが…
489nobodyさん:04/11/11 07:51:51 ID:SAqbK5N3
>>486
ごめんちん。
いけました。
490nobodyさん:04/11/11 11:37:55 ID:ilzje3xZ
$fp = FOpen("http://www〜hoge.com","r");
とかやったあとに、そのURLから帰ってくる、html文を読むには普通のFgetSでいいんでしょうか?
491nobodyさん:04/11/11 12:00:43 ID:???
まずは自分でやってから、ここに報告汁
492nobodyさん:04/11/11 12:09:41 ID:???
>FOpen
>FgetS
キモイヨ
493nobodyさん:04/11/11 12:15:19 ID:???
FGetSにならないのが不思議w
494nobodyさん:04/11/11 12:16:22 ID:???
>FOpen
>FgetS
これって何言語の流儀?
495nobodyさん:04/11/11 13:17:25 ID:nmdKIJIz
フォートラン
496nobodyさん:04/11/11 14:22:58 ID:???
>>490
べつにいいけどさ、fgets()使うならポインタのオープンはfsockopen()でやった方が
タイムアウト処理とか楽だ。
497490:04/11/11 15:28:36 ID:ilzje3xZ
>491
しました。
FgetSで取ってきたら、ぬるぽでした

>494
オレオレ流
498nobodyさん:04/11/11 15:37:32 ID:???
へ?PHPで Null Pointer Extensionが出るわけねーじゃん
499nobodyさん:04/11/11 15:42:36 ID:ilzje3xZ
>498
かき方悪くてすまんですね

echo FgetS($fp,512);
しても表示されませんでした。

PHPだとなんていうんだい?
何もとって来れ無かったっていったほうがいいのかね?

厳密な定義のな言葉がわからないんで、気に触ったらすいませんね

500nobodyさん:04/11/11 15:45:04 ID:???
Null Pointer Exceptionなら知ってるが
Null Pointer Extensionって何?
501nobodyさん:04/11/11 15:50:03 ID:???
>>499
他の部分でもエラーハンドリングを確実にしているのにも関わらず
fgetsの返り値がfalseでなくて空文字だったのだったら、
何も取れなかったということですね。
502496:04/11/11 15:50:05 ID:???
>>497
PHPなら流れはこんな感じになるだろう。

$fp = @fsockopen();
socket_set_timeout($fp, 適当に);
fputs($fp, "GETなりPOSTなりお好きなように");
whileループとfgets($fp)組みあわせる等して色々;
fclose($fp);

ソケット使ってHTMLソース取得なんて他の言語も併せれば
資料いくらでもある。ググれ。
503nobodyさん:04/11/11 15:57:23 ID:ilzje3xZ
>501〜502
色々ありがd

ググって来ます
504nobodyさん:04/11/11 16:03:15 ID:???
>>502
普通に$fp=@fopen($url,"r");
と書いてたけど、fsockopen()がいいんだ。。。
次からそうします。

ところで、3行目のfputsはどこへ書きだしてるの?
505nobodyさん:04/11/11 16:20:08 ID:???
>>497
> オレオレ流

センス(趣味)悪いね。
506nobodyさん:04/11/11 16:44:22 ID:???
つまり、詐欺的。
507 ◆.jC7ANgFY. :04/11/11 17:33:02 ID:???
>>504
fopenとfsockopenはまったく違うものだよ。
fopenではURLを開くけどfsockopenはIPアドレス(又はドメイン)を指定して開く。
fputsは開いたポートからサーバーへデータを送っているって感じ。
前にここでサンプル晒したんだけどなぁ、前スレで、、
508 ◆.jC7ANgFY. :04/11/11 17:41:02 ID:???
>>504
どうしても見つからないようであればどうぞ。
あまりいいサンプルではないけど。
ttp://f9.aaa.livedoor.jp/~fcafe/fbox/lib/sock.phps
509nobodyさん:04/11/11 18:00:40 ID:???
自分は使い捨てのスクリプトなら、ものすごく単純にこうしているけど。

$contents = file( "http://なんたら" );
if ( $contents===false) {
// タイムアウトかURL not found
}

きちんとやろうとすると508のスクリプトになるのかぁ。ちょと大変。
510503:04/11/11 18:35:31 ID:ilzje3xZ
できました
ありがとう
511軟式PHP:04/11/11 18:48:54 ID:???
Imo氏はコメントがマメやね。
512nobodyさん:04/11/11 20:22:03 ID:???
メッソドワラタ
513nobodyさん:04/11/11 20:52:52 ID:QmAFV0EC
メッソド!メッソド!(・∀・)
514nobodyさん:04/11/11 21:27:25 ID:???
Mesthod
515nobodyさん:04/11/11 21:29:11 ID:???
Mesthod の検索結果 約 907 件
メッソド の検索結果 約 592 件
516nobodyさん:04/11/11 21:31:27 ID:???
メッソドのあるページってJava関連の記事ばっかだな
517 ◆.jC7ANgFY. :04/11/11 21:37:27 ID:???
>>511 コメント書かないと後から読めないので(爆

>>512
ヤヴァイ(;´Д`)やはり公開は危険を伴うなw

>>513
メッソド(・∀・)!メッソド(・∀・)!
518nobodyさん:04/11/12 01:47:24 ID:3oKIst3j
オブジェクトのプロパティーは
publicだと開けっぴろげすぎるので
とりあえずprotectedにする

そんなこと考えてるのは俺だけですか?
519nobodyさん:04/11/12 01:51:32 ID:???
どういう思考回路なのか理解に苦しむ。
520nobodyさん:04/11/12 01:56:43 ID:3oKIst3j
・外から直接いじられると嫌
・将来継承するかも分からない

ゆえにprotected
なんですが…
521nobodyさん:04/11/12 02:11:52 ID:???
>>519
OOな考え前提じゃなくてコーディングレベルだけで考えるとこうなる
PHPは特にそうだろうが、誰しもが分析・設計からコードに落とすわけじゃないと思われ
522nobodyさん:04/11/12 02:35:07 ID:???
形だけOOにしようとするとメンバのまとめ方、アクセス制限や
カプセル化で破綻しがちだーね。アクセス制限どうするかっていう部分から
考えはじめるのはオブジェクト指向とは相容れない

しかし現実的な問題もあるよ
IDE任せというわけにもいかないのがPHPだし
523nobodyさん:04/11/12 02:55:22 ID:???
>>522
分析クラスさえ固まってないのにもうコーディングしなきゃいけない、
でもオブジェクトの性格がはっきりしない、ええい面倒だ全部public!
IDEがあてにならないならリファクタリングなんかしなきゃいいんだ!
という選択肢を選ぶのが真の男。

つかこの手のネタはくだスレの方でやったほうがいいんじゃなかろうか。
524nobodyさん:04/11/12 03:09:50 ID:???
Webアプリケーションごときでクラスの設計とかにこだわるな。
525nobodyさん:04/11/12 03:20:31 ID:+Yt5Ck4w
mysqlのデータベースをupdateする方法がよくわからないんだけど、
基本的にdeleteしてinsertするってのが一般的なのでしょうか?
526nobodyさん:04/11/12 03:27:58 ID:???
>525
updateすればいいんでね?
527nobodyさん:04/11/12 03:28:44 ID:???
>>525
             . ィ
.._ .......、._    _ /:/l!  またまたご冗談を
 :~""''.>゙' "~ ,、、''‐'、|         _      
゙、'、::::::ノ:::::::_,.-=.  _〜:、         /_.}'':,  いくらなんでもMySQLをバカにしすぎ。
 ``、/:::::::::__....,._ `゙'Y' _.ェ-、....._ /_゙''i゙ノ、ノ
 ,.--l‐''"~..-_'.x-='"゙ー 、`'-、 ,:'  ノ゙ノブ     
"   .!-'",/  `'-‐'') /\ `/ でノ-〈
 .-''~ >'゙::    ‐'"゙./  ヽ.,'   ~ /
   //:::::       ',    /    ,:'゙
528nobodyさん:04/11/12 04:11:57 ID:???
>>525 ( ゚ ∀゚)<デリーツ

   f`::'ー 、,-、-、_ _,....-- 、_  _,....-=―ヽ―-、-、_        、ミ川川川彡
   ,.r'‐'゙´ヽ,r'  ヽ \ー、_:::::::::/,´:::::::::::,:::::::,::::::::ヽ::\`ー、     ミ       彡
 ,〃ィ  ,rヽ'-ヽ i 、 、 ヾ,、 `'y',ィ´/::::::::/|::::::ハ_::::::::ト、::::\ \  三  ギ  そ  三
r'/〃//    | i! |, \、_`ー!rf.,イ-,ィ/u ノ::::/ |::::`::::|iヽ::::::ヽ  ヽ. 三   ャ れ  三
iヾ!l i /,.=ヽ  i,ケ ハ,i', Y't=ラ゙,〉'|::::r'|! 彡´ ,!--、 |i!|::|::i::::::',   ', 三  グ  は  三
  {ヾllッ-,   〃ノ'-'、||ii i|i| |-/! /^ヽ    ´   ヾ|从ノ::i::::|   ||三  で     三
  >|゙! 0ヽ ノ' ´ 0 レノWノi |,.、!/ 0       0  ',' レ|,イ::::i,,_ | !三  言  ひ  三
  ',i ヽ- ,      _, "  |i| | |             ´ '´ハ',Y  .!三  っ  ょ 三
  /l   `        !| | i `´ r     'ー‐' u   (-, ' |   !三  て  っ  三
  /久        U  |! i|'´'、u              z_,ノ/ .i |三  る  と  三
 /イ |ヽ '==..‐_、      |!,'|Y´,ヽ  ___        ハ_ ,/i | |三  の  し 三
 |ト|、',::::\     _,.-‐イ//-'´::::!\'ー‐--ニュ     / ト_、 _| _!,=,|三  か て 三
  〉:ヾ_'、::::`ー‐r<   //イ|::::::_、:::`7i\ __,..-‐'´  .| |`゙"::"::|-"三  !?    三
 'ー‐'´¨`'ー、/,rケ  /,'1ノ人'-‐'`y'/::::, i| ,!,      |`iiイ:::::::::|  彡     三
    ,〃7,‐/ {   ´_,-'´ ,,‐!、=,/.〃::::i i|kハ    / ,ヾ、::::::|.|!  彡川川川ミ
   ,ッ'、_〃'f /゙-<´  r〃 〃 /イ::::,!ッ'/  ',  / /   |ト、:|:リ
  rir' 〃,y'、久_,.rヽ/〃  川/iケir'〃/ ,-'水´  /    〃  \
  f::}'ー'〃_i| /::::f|::::',  .〃 r/if |||ir' f| レ' r'o | .〃-、 〃     "i
  ,);'ーッ゙-. レ:::::/_|::::::',_,〃=_、!!|| !i/ ||:,ri   !o ∨/_)_〃        |
529nobodyさん:04/11/12 04:29:04 ID:???
わざわざリスクが高い選択はしないようにw
530nobodyさん:04/11/12 04:32:05 ID:???
なんかクラス設計がご大層なものだと思ってるアホがいるから
マルチポストしてきてやったぞ。
http://pc5.2ch.net/test/read.cgi/db/1096838301/268
531nobodyさん:04/11/12 05:48:47 ID:j3YLIEmE
cookieをセットするのに一番良いタイミングって何処でしょうか?
ob_start();とか使えばどこでもセットできるようですが
送信が溜まってると思うと苦いです。

if(phpversion()>="4.1.0"){
extract($_GET);
extract($_POST);
extract($_COOKIE);
extract($_SERVER);
}
の直後が一番良いのでしょうか?
532nobodyさん:04/11/12 05:49:21 ID:???
ageてしまって失礼しました
533nobodyさん:04/11/12 05:51:51 ID:???
妹がデュアルショックを股間に当てていました。兄もショックです。
テレビには、終始無抵抗で殴り続けられる平八が映し出されています。
妹と目が合いました。まずパンツを穿いてください。見つかりませんか。
脚に引っ掛けたままなのを忘れるほど動揺しているんですね。
床に投げ出されたコントローラーが、なおも続く振動でヴヴと鳴き蠢いています。
笑ってごまかしたって駄目です。しかし鉄拳3を選んだセンスは評価したい。
いま平八がKOされました。妹の醜態に兄も一発KOです。
534nobodyさん:04/11/12 05:56:14 ID:???
始めてみるコピペだが、平八の顔した妹が思い浮かんで萎えた。
535nobodyさん:04/11/12 05:57:05 ID:???
phpとは関係ないのでコチラに移動
妹がデュアルショックを股間にのガイドライン
http://that3.2ch.net/test/read.cgi/gline/1079969619/
536nobodyさん:04/11/12 08:53:02 ID:FC5lH0u1
PHP5で
self::method()と
$this->method()
は内部的に全く同じですか?
537nobodyさん:04/11/12 09:05:02 ID:DqN1EkY0
\r及び\nについてお聞きしたいことがあります。
一般的な言語では\r\nはそれぞれ0x0D 0x0Aだと思うのですが、PHPではどうなっているのでしょうか?
さまざまなサイトや関数リファレンス書籍等を見たところすべて\r=0x0A \n=0x0Dと記述されておりました。
しかしecho等で出力させたところ\r=0x0D \n=0x0Aとなりました。
実際にはどちらが正しいのでしょうか?
538nobodyさん:04/11/12 10:03:50 ID:???
>>537
>さまざまなサイトや関数リファレンス書籍等を見たところすべて\r=0x0A \n=0x0Dと記述されておりました。
>すべて\r=0x0A \n=0x0Dと記述されておりました。
そんなはずはありません。
539nobodyさん:04/11/12 10:13:39 ID:2WcufnQu
540nobodyさん:04/11/12 10:18:59 ID:2WcufnQu
多分上のマニュアル部分の事だと思うんだが、本家のマニュアルが間違ってるのをそのままコピーしてるだけ
http://jp2.php.net/manual/ja/tokens.php
では合ってる
541nobodyさん:04/11/12 10:36:31 ID:2WcufnQu
http://jp2.php.net/manual/en/function.trim.php
間違ってるのは日本語だけかな
542nobodyさん:04/11/12 11:11:39 ID:???
PHPの参照についての質問です。
------------------------------------------------------------------------
class X{
  var $n;
  function X($n){
    $this->n = $n;
  }
}
class Y{
  var $x;
  // 指定されたX型のメンバ変数を持つYオブジェクトを作成する
  function Y($x){
    $this->x = $x;
  }
}
var $x = new X(10);
var $a = new Y($x);
var $b = new Y($x);
$a->x->n = 20;
------------------------------------------------------------------------
これを実行すると、$b->x->n は10のままですよね。それを、
$a->x->n を変更したときに、$b->x->n の中身も
変更されるようにしたいのですが、何かうまい方法はないでしょうか?
543nobodyさん:04/11/12 11:14:49 ID:8aG2jjUM
すいませんちょっと質問ですよ。

"#"(シャープ)の入ったURLを読み取るにはどうすればよいのでしょうか・・
$_SERVER['QUERY_STRING']や$_SERVER['REQUEST_URI']では
読み取れないんですが・・

よろしくおながいします。
544nobodyさん:04/11/12 11:19:53 ID:???
<?php
class X {
    var $n;
    function X($n){
        $this->n = $n;
    }
}
class Y {
    var $x;
    // 指定されたX型のメンバ変数を持つYオブジェクトを作成する
    function Y($x){
        $this->x = & $x;
    }
}

$x = new X(10);
$a = new Y(& $x);
$b = new Y(& $x);
$a->x->n = 20;
?>

$x->n も変わるけど。
545nobodyさん:04/11/12 11:20:53 ID:???
>>543
無理。
546nobodyさん:04/11/12 11:25:07 ID:8aG2jjUM
>>545
回答ありがとう。
かなり衝撃的
547542:04/11/12 11:30:33 ID:???
>>544
なるほど。
コンストラクタ呼び出しの引数と、コンストラクタ内のメンバ変数の代入式の
両方を参照にするというのは思いつきませんでした。

ありがとうございました。
548nobodyさん:04/11/12 11:42:49 ID:???
\#とかでもむり?
549nobodyさん:04/11/12 11:52:36 ID:L9eWiqBv
質問です。
include() や file() で読み込むHTMLテンプレートの中に $addr などの変数を
書いておいて、自動でパースしてくれることを期待していたのですが、そのまま
$addr と表示されてしまいます。
これはPerlでも同じだったのですが、$bar = preg_replace('/\$addr/', $addr, $bar);
とでもやる以外にスマートな手はないものでしょうか。
550543:04/11/12 11:57:12 ID:???
>>548
\が/に変換されて#以降は消えてしまいました・・
551nobodyさん:04/11/12 12:21:35 ID:???
>>543
#以下のフラグメントが変わっただけではサーバへのリクエスト自体が行われないし。
552nobodyさん:04/11/12 15:10:38 ID:/lHAFZLN
次の仕事でPHPを使うことになり、現在勉強中です。
文法等の基本的なところは大体理解したのですが、
それに加えて最低でも押さえておいた方がよいことは
何でしょうか?
(PEAR、Smarty等いろいろありますが...)
553nobodyさん:04/11/12 15:19:15 ID:???
>>552
何をやりたいのかによると思うが?
554nobodyさん:04/11/12 15:25:00 ID:/lHAFZLN
>>553
教育機関の講師が使用する、情報閲覧システムのようです。

構成は↓のようなものが想定されます。
Windows + Apache + PHP + DB(Oracle or DB2 or ???)
555nobodyさん:04/11/12 16:06:27 ID:???
これでも読んどけば?
ttp://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html

あとこういうことはくだ質行ってくれ
556nobodyさん:04/11/12 16:06:29 ID:???
>>543
ブラウザが#以下を送信してるなら受け取れるとおもうぞ。
557nobodyさん:04/11/12 16:09:34 ID:/lHAFZLN
>>555
失礼しました。
558nobodyさん:04/11/12 17:42:30 ID:???
522はWebprog初心者スレをさんざん荒らして帰っていった奴だな
やはりPHPに来たかw
559nobodyさん:04/11/12 19:09:46 ID:???
>>543
JavaScript との連携で、JavaScript が location.hash を PHP に渡せば出来る。
560nobodyさん:04/11/12 19:20:32 ID:???
結論としては、ブラウザが送ってない値をPHPで受け取るのは、どうあがいても無理、と。
561nobodyさん:04/11/12 19:33:27 ID:???
>>560
何当たり前のこと言ってんだ・・・
562nobodyさん:04/11/12 19:40:11 ID:???
>>543みたく、そういう当たり前のことに気づかないやつもいるわけだし。
他にも、JavaScriptで動的に追加した<select>の選択項目を選択された項目とは別に取得するにはどういうPHPのコードを書いたらいいですか?みたいなのもあったりするし。
563nobodyさん:04/11/12 20:55:00 ID:???
C/Sが分かってないのとC側の問題かどうか分かってないのとじゃ大違いだボケ
564nobodyさん:04/11/12 21:04:28 ID:fQRp2mKb
PHP4にて1万件くらいのメール送信したときに

Warning: mb_send_mail(): Could not execute mail delivery program
'/usr/sbin/sendmail -t -i ' in

というエラーがでたのですがsendmailが原因かPHPが原因かどちらなのでしょうか?
また、どうすれば直るのでしょうか?
565nobodyさん:04/11/12 21:08:56 ID:???
>>564
コマンドラインとかからsendmailが生きてるか調べたらいいじゃん
566nobodyさん:04/11/12 22:01:20 ID:???
>>564
sendmailをpopenできなかった時にそのwarningが出る。
原因つーか負荷を掛けすぎたんでsendmailがゴネてるってことだな。
鯖の管理者に相談するとよい。つーか管理者から苦情くるだろうから
今のうちに言い訳を考えておくとよい。
567nobodyさん:04/11/12 23:43:39 ID:???
>>566
本人が素人管理者の悪寒
568nobodyさん:04/11/13 00:27:39 ID:???
eclipse で trustudio を使っているのですが、既存のphpプロジェクトを trustudio の phpプロジェクトにすることはできますか?
569nobodyさん:04/11/13 00:42:19 ID:???
>>568
既存のphp"プロジェクト"って何のプロジェクト?
Zend?
570nobodyさん:04/11/13 01:44:24 ID:???
Simple Project です。trustudio を入れる前に eclipse で作成しました。
そして、trustudio を入れました。新規作成で PHP Project を作成できるようになりましたが、
既存のSimple Project を PHP Project に変換する方法が分かりません。
新しく PHP Project を作成してファイルを移動するしか方法はないのでしょうか?
571nobodyさん:04/11/13 02:04:19 ID:Aaqq6gsU
perlのprint qq|<A href="http://www.yahoo.co.jp/">Yahoo</A>|;
みたいに"を気にしなくても使える(エスケープする必要の無い)
記述方法ありますか?
572nobodyさん:04/11/13 02:47:39 ID:???
シングルクォーテーションでくくる
573nobodyさん:04/11/13 04:05:10 ID:???
>>571
久々2年ぶりくらいにこの質問見た
574nobodyさん:04/11/13 12:07:31 ID:???
>>571
複数行にまたがるならヒアドキュメント使えばいいんでね?
575nobodyさん:04/11/13 12:08:21 ID:Yc7DSHDt
<br>\nって本にでてんだけど
¥nつける意味がわからん・・・改行がなんで二つもいるんだ。。
手抜きしすぎの参考書かうとだめだな・・・
576nobodyさん:04/11/13 12:11:46 ID:???
出力するHTMLを見やすくするためだろ。\nと<br>はイコールじゃねーぞ。
577nobodyさん:04/11/13 12:13:58 ID:Yc7DSHDt
でも多言語だと¥nだけで改行するけどphpは¥nだけだと
改行しないぞ、<br>だけなら改行するけど
578nobodyさん:04/11/13 12:17:42 ID:???
579nobodyさん:04/11/13 12:31:22 ID:???
>>575
釣りでしょ
580nobodyさん:04/11/13 12:31:52 ID:???
ヒアドキュメントってナンデスカァ?(。・_・。)キリリッ
581nobodyさん:04/11/13 12:59:14 ID:???
>>577

× phpは¥nだけだと改行しないぞ
○ htmlは¥nだけだと改行しないぞ
582nobodyさん:04/11/13 13:17:11 ID:???
htmlなんかを出力する場合、echoとprintどっちがいいの?
独学でやってきたけど、ずーーっとecho使ってました。
そもそも使い方が違うのですか?
583nobodyさん:04/11/13 13:17:57 ID:???
くだ質でやれつってんだろ池沼
584nobodyさん:04/11/13 13:31:11 ID:???
同じだろハゲ
585nobodyさん:04/11/13 13:32:38 ID:???
>545-546
かなりワロタ
586nobodyさん:04/11/13 13:47:38 ID:???
>>573
少し前に見たぞ、多分前スレくらい

>>575
ソース覗けばいいと思うよ
587 ◆.jC7ANgFY. :04/11/13 14:29:12 ID:???
>>582
$a = print('A');
$a = echo('A');
前者は普通に動くけど、後者はエラー。

print 'A','B';
echo 'A','B';
後者は普通に動くけど、前者はエラー。

<?='A'?>
echoには省略形もある。
# これはまた別と考えるべきかもしれないけど

違いはこれぐらいだよ。同じと思うべきかと。
588KB:04/11/13 15:00:00 ID:???
>>587

そんな違いがあったんだ。
といってもそんな使い方する場面が思い浮かばない^^;
589nobodyさん:04/11/13 16:02:53 ID:???
>>587
80へぇ〜を超えましたので記念に
590nobodyさん:04/11/13 16:50:56 ID:???
銀の脳がプログラムのお手伝いをします。
591nobodyさん:04/11/13 17:29:26 ID:6u/jhtaT
たしかにPHPはPerlよりは初心者にも分かりやすいけど、
もっと簡単で、やりたい事を直感的にプラグラミングできる言語が
開発されたらいいのになぁ。
592nobodyさん:04/11/13 17:34:31 ID:???
RubyかSmartyテンプレートかな
簡単だと汎用性に乏しくなるし。。。
593nobodyさん:04/11/13 17:44:13 ID:???
PHPはマニュアルが整ってるからマニュアル片目に作るといいね

俺の悩みはPHPのマニュアル内の検索の仕方がわからない
右上の検索欄は「関数名」しか対応してないみたいだし
594nobodyさん:04/11/13 17:52:24 ID:???
>>593
漏れはもうググッてるよw
そっちのほうが早い
595nobodyさん:04/11/13 18:03:14 ID:???
>>593
そこでManualをNamazuで構築ですよ


その代わりわかちガキだから半端なところで関数名切ると出てこないけど
596nobodyさん:04/11/13 18:57:25 ID:???
PHP4+Apacheの環境です。

Perlで

$str =~ tr/:;<=>?@[\\]^_`/ABCDEFGabcdef/;

と置換するのと同じ事をPHPでやるにはどうしたらよいのでしょうか?
部分的に置換などの方法は分かるのですが、上記のように
:はA
;はB
<はC

というように対応させたいのですが、PHPにそのような関数が見つからずに困っています。
どなたかご存じないでしょうか?
597nobodyさん:04/11/13 19:15:51 ID:???
>>593
winHLEP形式じゃだめなのか?
598nobodyさん:04/11/13 19:43:06 ID:???
>>596
preg_replace
599 ◆.jC7ANgFY. :04/11/13 20:11:21 ID:???
>>596
トリップ変換の時に使うところね。strtr関数がそのまま使える。
http://f9.aaa.livedoor.jp/~fcafe/fbox/lib/trip.phps
# 懲りずに自分のソースを晒してみる
600582:04/11/13 20:29:08 ID:???
>>587
ありがトン、するってぇと好みということですね。
601nobodyさん:04/11/13 20:37:07 ID:???
>>582
スピードで言えばただ単純に出力するなら作りの問題で、若干echoの方が早い。
(作りに問題があるからではない。要するに別名ではなく、別物だから)
あくまでも若干ね。
使い方については>>587

602nobodyさん:04/11/13 21:20:10 ID:???
>>570
Simple Projectを削除(コンテンツは削除しないで)
New Projectで、PHPプロジェクトを選んで、そのSimple Projectと同じ名前で
プロジェクト作成、ワーニング出るが、それをよく読んで実行。

きっちり検証してないから、どうなってもしらんぞ。
CVSに放り込むなり、バックアップ取るなりしろよ。
603602:04/11/13 21:30:58 ID:???
>>570
あ、そうだ、俺なら新規でPHP Project 作って、コンテンツを”コピー”するな。
604570:04/11/13 21:56:56 ID:???
>602

親切にどうもありがとう!
『新規でPHP Project を作って、コンテンツを”コピー”』で、できました。
605596:04/11/13 22:12:47 ID:???
>>598さん、>>599さんありがとうございます。

ソースまでいただけるとは思いませんでした。

$salt = ereg_replace("[^\.-z]", ".", $salt);

この部分まではなんとか関数調べて出来たんですが

$salt = strtr($salt, ":;<=>?@[\\]^_`", "ABCDEFGabcdef");

この関数まで見つけられませんでした。^^;

とりあえず実装してみて、キャップ機能は自分で移植できそうなのでがんばります。
ほんとにありがとうございました。
606nobodyさん:04/11/14 00:53:26 ID:???
質問させて下さい。よろしくおねがいします。
PHP4+Apacheの環境です。

私はウェブサイトのトップページをphp(index.php)で作っているのですが、
アクセスする度にMYSQLに接続しDBからデータを
引っ張ってきている為、トップページが少し重くなっています。

それを解消する為にindex.phpを実行した結果をindex.htmlとして
吐き出して、訪問者にはindex.htmlという静的なページを見てもらえれば
サイトが軽くなると考えました。

自分でindex.phpにアクセスして
そのページのソースをコピーしてindex.htmlとして
保存すれば簡単なのですが、これを自動で出来る方法は
ありませんか?

一定時間毎にindex.phpからindex.htmlを吐き出す方法はないものでしょうか。
607nobodyさん:04/11/14 00:58:11 ID:???
cronでwget?
しかし、それが気になるということは、ものすごいアクセス数なんだろうな。
608nobodyさん:04/11/14 01:05:38 ID:???
一定時間毎に吐き出すぐらいなら記事追加時とか、変更があったときだけ吐き出せばいい
609nobodyさん:04/11/14 01:07:17 ID:???
>>606
やはりcronかな?
wget使う使わないは好みで
610nobodyさん:04/11/14 01:24:59 ID:???
単にindex.phpを簡単なスクリプトにして一定時間後に踏んだ人だけ更新用のスクリプトを読み込ませればいいじゃん。
611nobodyさん:04/11/14 01:47:19 ID:ojuplhFm
>>606

cronの利用をしたくないか、cronの利用ができない場合は、
Smartyテンプレートを利用することをおすすめします。
Smartyのキャッシュ機能を利用することで、
例えば、キャッシュが有効な間はDBへのアクセスなどをスキップさせる
事ができます。

require_once("Smarty.class.php");

$smarty =& new Smarty();
$smarty->template_dir = "./templates/";
$smarty->compile_dir = "./templates_c/";
$smarty->caching = 2;
$smarty->compile_check = true;
$smarty->cache_lifetime = 60; // キャッシュの有効時間を1分に設定

$template = "index.tpl";

if(!$smarty->is_cached($template)) {
// このへんにDBへのアクセスとか
// $smarty->assign("変数名", "値");を行う
// キャッシュの有効期限が切れるまでは、ここは実行されない
}

// 画面表示
$smarty->displary($template);

※適当に書いたのでこのままでは動かないかもしれないけど、
雰囲気的にはこんな感じ。
612nobodyさん:04/11/14 01:51:34 ID:???
mmcacheだかなんだか、使えないの?
613nobodyさん:04/11/14 02:05:55 ID:???
素人なんで教えてください。

【やりたい事】
以下のファイルが存在します。
main.php
sub/sub.php
util/util.php
config/config.php
main.phpとsub.phpはそれぞれ、util.phpを使用します。
util.phpは、config.phpを使用します。

【やってみた事】
main,subそれぞれで、requireを使ってutil.phpを呼びました。(相対パス)
util.phpでconfig.phpを呼びました。(相対パス)

【結果と疑問点】
subは正常に動作しました。
mainは、utilでのconfigの呼び出しに失敗しました。
requireで読み込んだutilが、mainやsubの場所で動いているから
こうなるんだろうという事までは理解したのですが、
この仕組みを意図したとおりに動かすにはどうすれば良いでしょう?
reauireを使うのがそもそも誤りかと思ったのですが、
手元のリファレンスには適切な関数が見当たりません…。

ちなみに当方Java経験者(初心者だけど)で、
requireをimportの乗りで使ってました…(汗)
614nobodyさん:04/11/14 02:08:10 ID:???
include
615613:04/11/14 02:30:12 ID:???
includeとrequireはエラーの扱い方が違うだけとありましたが…。
616613:04/11/14 02:46:16 ID:???
includeについても調べてみました。

PHPマニュアルより
読み込むファイルはまずカレントのワーキングディレクトリからの
相対パスとしてinclude_path で探され、それから、カレントのスクリプトの
ディレクトリからの相対パスとしてinclude_path で探されます。

…とあるのですが、これなら例に挙げたものも動きそうなんですが…??
もう少し悩んでみます。
617nobodyさん:04/11/14 03:01:54 ID:???
試せばいいだろ
618613:04/11/14 03:13:19 ID:vN4rnj6x
>617さん
もちろん試しました。

…下げてた。ごめんなさい。
619nobodyさん:04/11/14 04:30:54 ID:???
>>613
呼び出し元からのパスでrequireなりinclude。
ていうかさ、呼び出し先でまたrequireとかあったら、メンテナンス性も糞もないと思うけど。
何のためにソース分けてるのか意味分からん。

main.php
require('util/util.php');
require('config/config.php');

sub/sub.php
require('../util/util.php');
require('../config/config.php');

ソースの見易さやメンテナンス性からいっても、requireはソースの先頭でまとめて宣言すれば?
メモリ節約とかでの例外はあるけどね。

あとincludeとrequireの違いは、↓読め
http://jp2.php.net/manual/ja/function.include.php

今回のケースではrequireの方が適切でしょ。
620nobodyさん:04/11/14 10:01:14 ID:???
>>613
require_once()で、解決。
621 ◆.jC7ANgFY. :04/11/14 10:48:03 ID:???
>>613
chdir関数でカレントディレクトリを統一してみ。
622nobodyさん:04/11/14 11:34:10 ID:TN0m6TVj
^([a-z0-9_]|\\-|\\.)
正規表現なんですけど、|\\-|\\.の部分がよくわかりません
|はORのことですよね\\は¥を含むってことですか?
623nobodyさん:04/11/14 11:49:27 ID:???
\\- → \- → -
\\. → \. → .
624nobodyさん:04/11/14 11:50:58 ID:???
>>622
^ ([-.a-z0-9_])
と同じじゃないの?
625nobodyさん:04/11/14 12:16:10 ID:TN0m6TVj
>>623
\\て¥のあとの文字を表示するんではないんですか?
PHPはじめてなもんですみません
¥^なら^とかって本にかいてたんで
626nobodyさん:04/11/14 13:10:05 ID:???
>>625
PHPパーサが\\を\にするから正規表現パーサには\.が渡される
627613:04/11/14 13:39:18 ID:???
>619
いや…メンテナンス性とか解り易さを求めているからソース分けしている訳で。
mainやsubからutil使う時、utilの中身なんて意識したくないでしょ。隠蔽っていうの?

…と思ってたのですが、PHPではそういう考え方はしないみたいですね。
諦めて別の方法を考えます。皆さんありがとうございました。
628613:04/11/14 13:40:40 ID:???
訂正。別の方法ってか設計自体やりなおします、の間違いでした。
お邪魔しました。
629nobodyさん:04/11/14 13:48:02 ID:???
別にいいんじゃないの?
C言語でもincludeの元にincludeとか当たり前だし。
階層化してるんだったらそれでいいと思う
630nobodyさん:04/11/14 14:08:21 ID:???
スコープ内でinclude使っといてどこがimportの乗りなんだか
631620:04/11/14 14:13:53 ID:???
>>627
だからよぅ…

あなたみたいな設計ももちろんする場合があるし、
そんな事以前に " require_once() "つうのがあるって言ってるじゃん(涙
632nobodyさん:04/11/14 14:40:04 ID:???
>>631
読み込むのがProcedure fileだったりしてw
633nobodyさん:04/11/14 14:56:51 ID:???
ん?Importは依存ライブラリの隠蔽なんかしないぞ。
他言語と同じ平凡なパス管理なんだけど。

カレントディレクトリを設定してるのはOSね。
よくわからんのなら__file__定数を使って解決つーのが手っ取り早い。
includeんとこにも載ってるが。

あと一般論として野良ライブラリはブラックボックス化するとメンテに
手間かかるよ。
634nobodyさん:04/11/14 14:59:41 ID:???
> ライブラリはブラックボックス化〜

ファイルの依存関係をクライアントプログラムから隠すつーことに限ってね。
635nobodyさん:04/11/14 15:22:31 ID:???
まぁ、なんだ。
纏めるとこういうことか。

[前提条件、つーか仕様]
include,require等は、最初に起動したスクリプトからの
相対パスで指定しなければならない

[実際の利用方法]
ネストしてinclude,requireする場合は
・_FILE_を使って上記の相対パスに変換する。
・chdir()を使う。
・require_onceを使う。

require_onceを言ってる人は、
・それぞれのファイルの中で そのファイルからの相対パスをrequire_onceすりゃいい。
・ネストが1つ上のファイルでもrequire_onceするのを忘れるな。
・その結果、一番最初に起動するスクリプトの指定が有効になりうまく動く。
ってことでいいのかな。
636nobodyさん:04/11/14 15:54:38 ID:???
ライブラリならグローバルスコープでインクルードするに決まってるんだから
require_onceしとけば十分だろ。ディレクトリ固定なら__autoloadを使う手もあるが、
どのみちディレクトリ構造指向ならimport文と同じことだからネストする意味が
全く無い気もするな。インクルード用のコマンダこさえるのに比べれば何ぼかマシ
かも知れんが。手段はset_include_path使うとか、Cみたいにディレクトリをハード
コーディングしないよう定数作るとか、正規のライブラリを使うとかいろいろあるだろ
うから好きにやればいいんだが、よほど多くのファイルが構造化されていない限り
インターフェイスとなるカレントスクリプトからライブラリを操作するという設計に
変更するべきだろうな。
637nobodyさん:04/11/14 16:16:08 ID:???
>>636
トリみたいに騒ぐなw
638nobodyさん:04/11/14 16:16:44 ID:/FGTdaOr
httpのWEBファイルはファイルとして簡単に取得出来るのですが
htttpsのものは何か特別なことをしなくてはいけないのでしょうか?
それとも出来ないのでしょうか?
639nobodyさん:04/11/14 16:17:44 ID:???
どこを縦よm(ry
640nobodyさん:04/11/14 16:19:40 ID:???
   ___    クルッ…   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  / || ̄ ̄|| <⌒ヽ ))  < >>636 はてさて、
  |  ||__|| <  丿    | どこを縦に読みゃいいんだ?
  | ̄ ̄\三⊂/ ̄ ̄ ̄/  \___________
  |    | ( ./     /
641nobodyさん:04/11/14 16:20:21 ID:???
アホネタ投下してんの同一人物だろ。
何が楽しいのかね。
642nobodyさん:04/11/14 16:21:22 ID:???
>>641
ありえない質問に普通に回答が帰ってくるこのスレの回答者のありえなさが
643nobodyさん:04/11/14 16:21:30 ID:???
636=641
644nobodyさん:04/11/14 16:22:35 ID:Do7sGTWF
どうでもいいけど鳥って何だ
645nobodyさん:04/11/14 16:23:03 ID:???
>>644
おまい
646nobodyさん:04/11/14 16:27:52 ID:???
>>641
このスレに憑き物がいるのは事実だと思うが、
普通人が消えた今ここにいるそういう連中は正常
なんじゃなかろうか。何も楽しんでいないんじゃな
かろうか。
647nobodyさん:04/11/14 16:29:03 ID:???
>>644
触れるな
648nobodyさん:04/11/14 16:29:52 ID:???
ちょっと質問なんだけどさあ
pathinfo()って関数名やばくね?やばくね?
649nobodyさん:04/11/14 16:32:01 ID:???
>>641-648
まあこのろくろ首でもみてまったりようよ。
http://www.tk3.speed.co.jp/gewa/mi-ke/save0000.jpg
650nobodyさん:04/11/14 16:35:03 ID:???
鳥が騒ぐと言うのは交尾を表す慣用表現。
651nobodyさん:04/11/14 16:37:26 ID:???
inlcudeだのなんだのマニュアルレベルばっかだな
俺に分からないような質問をもってこいよ池沼質問者ども
652nobodyさん:04/11/14 16:39:21 ID:???
inlcude = インルキュード
653nobodyさん:04/11/14 17:01:12 ID:TN0m6TVj
>>626
$str = "94852-769493"
if(ereg("[0-9\-]",$str2))

この場合だと\\-じゃなくて\-なんだけど
\\-になるときと\-になる違いていうのはなんですか?
参考書しらべまくってるんだけど正規表現あんまり詳しくのってないんです
ご存知のかたいたら教えてください。お願いします。
654 ◆.jC7ANgFY. :04/11/14 18:34:04 ID:???
>>653
""で囲む時の\の動作が一定じゃないのよね。
"\\-" == "\-"
"\\n" != "\n"
echoして調べてみるべし。
655nobodyさん:04/11/14 20:19:07 ID:???
>>653
マニュアルにも載っているのだが、
ttp://jp.php.net/manual/ja/language.types.string.php#language.types.string.syntax.double
>この他の文字をエスケープしようとした場合には、バックスラッシュも出力されます!

\が出力されるのは、-や.がエスケープシーケンスに含まれていないのがその理由
656nobodyさん:04/11/14 21:28:42 ID:???
すみません。サイトにアクセス解析を置きたいのですが、
まぁ自作スクリプトのヘタレ具合は別として、TOPページを
index.shtml としてperlでシコシコ書いたものと、
index.php としてphpでシコシコ書いたものでは、どちらが負荷が大きいんでしょう?

全部のページを解析しようとすると、全ページ XXX.php に?
コレって負荷大きすぎないんですか?

ヘタレですけど、がんばりますんで よろしくお願いします。
657nobodyさん:04/11/14 21:56:42 ID:???
phpでシコシコ書いたものは
おかずにより、負荷がかなりことなります。
658nobodyさん:04/11/14 22:01:51 ID:???
>>656
普通はサーバのログから解析するもんだと思うが。
特に負荷云々を気にするぐらいなら。
サーバでログ出力させた方が遥かに負荷が少ない。
659nobodyさん:04/11/14 22:15:59 ID:???
ミもフタもない答えが・・・・

まぁたしかにそうなのかも・・・・  ありがとう。
660 ◆.jC7ANgFY. :04/11/14 23:15:06 ID:???
phpの方が一般的にはやいといわれているよ。
661nobodyさん:04/11/14 23:22:28 ID:???
>>656
普通にHTMLで書いて<img src=解析スクリプト>を埋め込んだらダメなのかと
662nobodyさん:04/11/14 23:59:40 ID:???
アプリPHPで組んでいるんですけど
HTMLのフォームでやたら<hidden>が多くなってしまいました。
なんか、見ためかっちょ悪いです。
663nobodyさん:04/11/15 00:10:28 ID:???
そろそろセッションの使い方を覚えてもいい頃やね
664nobodyさん:04/11/15 00:29:48 ID:???
MVCでVは<hidden>の値で分岐処理などおこなっています。
そういう場合はしょうがないのでしょうか。
665nobodyさん:04/11/15 01:11:07 ID:Uy1hSbYj
すいません。

以下のように、ディレクトリ名を取得してアンカーを指定したいのですが、
ディレクトリ以外のもの、(ディレクトリの中には、htmlファイル以外を置かないのでhtmlファイル)
をとってきてしまい困っています。

$cd = $_REQUEST['path'];
$cdir = opendir("/myhome$cd/");
while(($dname = readdir($cdir)) !==false){
if(is_dir($dname) && $dname != "." && $dname != ".."){
print "<b><a href=$dname/index.html target=main src $dname/index.html>$dname</a> </b></font>";
}
}

$dnameがディレクトリのときだけアンカーをつけて表示させるように記述しているのに
どうしても、htmlファイルを取ってきてしまいます。どうすれば、ディレクトリ名だけを取るのか
ご存知の方、お知恵をお貸しください、
666nobodyさん:04/11/15 02:23:42 ID:???
>>665
aタグにsrcなんて属性あったっけ?
つーか、タグが滅茶苦茶だ。開いてないのに閉じてるし。
まあ、どうでもイイコトはおいといて、
$cdの行をコメントアウトして、$cdirに自分のホームディレクトリを指定して他は"そのまま"動かしたけど
ちゃんと、ディレクトリのみリンクが表示されたよ。

変数を一個一個echoして表示させてみたら?
例えば、ifの前後に$dnameをechoしてみるとか。

#環境も書かないでどうしたいのだろうか?
667nobodyさん:04/11/15 02:47:43 ID:???
>>666
>aタグにsrcなんて属性あったっけ?
ないよ。
668nobodyさん:04/11/15 09:45:52 ID:???
>>667 ちょうーまじ
669nobodyさん:04/11/15 10:03:08 ID:???
>>664
hidden の値がクライアント側で変化するか否かできまるんじゃない?

変化しないなら、サーバ側で、$_SESSIONで代替できるだろうし。
変化するなら、使わざるを得ないと。
670nobodyさん:04/11/15 18:42:53 ID:ObsXoKC2
PHPから接続したMySQLがSJIS・EUCどちらの文字コードをサポートしているかを
判断することって出来ますか?
671nobodyさん:04/11/15 18:57:22 ID:???
>>670
出来たら phpMyAdmin はとっくに実装してるだろうがな……
672670:04/11/15 19:07:14 ID:???
>>671
ですよね…
無理矢理、MySQLの設定ファイルを読み込んでっていうのもあるけど、現実的じゃない orz
673nobodyさん:04/11/15 19:26:11 ID:???
>>670
MySQLサーバやクライアントのバージョンも、
PHPのバージョンも書いて無いので回答に困る
(バージョンによる差異の大きいところだから)が、
一般的にはSHOW STATUSで取れる

最近では関数も増えて
http://www.php.net/manual/ja/function.mysql-stat.php
http://www.php.net/manual/ja/function.mysql-client-encoding.php
なども使える。

phpmyadminでやってないのは、ひとつの言語でエンコードが複数あるなんて
言語(アジア圏)は余りないからでしょ。
674673:04/11/15 19:28:05 ID:???
mysql-client-encodingで取れるのは、クライアント側の
エンコーディングなんで注意してね。(つまりMySQL4.1以降)
675673:04/11/15 19:31:47 ID:???
ゴメン。
×:SHOW STATUS
○:SHOW VARIABLES
676670:04/11/15 19:44:03 ID:???
あ、SHOW VARIAVLES LIKE 'character\_set%';で取得できました。
ありがとです。
677nobodyさん:04/11/15 19:44:59 ID:HnT7CqLI
<form method=POST action="http://aaa.com/ccc.cgi">
<input type=hidden name=mode value="weq">
<input type=hidden name=name value=ore>
<input type=hidden name=id value=042>
<input type=image src='http://aaa.com/img/bbb.gif' width=60 height=30'>ddd</form>

↑こんな感じのCGIへ送信するフォームを
例えば30分ごとに繰り返したい場合 、
前後をどんな風にすればいいでしょうか。
678nobodyさん:04/11/15 19:58:46 ID:???
>>677
JavaScriptでも使え
679nobodyさん:04/11/15 19:58:57 ID:???
「フォームを30分ごとに繰り返す」って意味ワケワカ。
違うフォームを30分ごとに生成すんのか?

初心者にも判るように正確に丁寧に質問してください。
680nobodyさん:04/11/15 21:09:53 ID:???
ボタン押すのか、、、?
681nobodyさん:04/11/15 21:13:12 ID:???
>>677
例えの使い方間違ってるだろ。
682nobodyさん:04/11/15 21:19:36 ID:???
>>679
多分、どこかのボタンにF5でもかますんじゃ
ねーの?
683 ◆.jC7ANgFY. :04/11/15 21:37:07 ID:???
>>670
MySQLで日本語のソーティングがうまくいかないときは
Binaryモードに変更すればいい。たいていの場合は
解決できると思う。
684665:04/11/15 22:21:09 ID:Uy1hSbYj
環境も書かずに申し訳ないです。

RedHat9
PHP4です。

>666さん

私も、ホームディレクトリでは動きました。
しかし、その下の「/homedir/hoge」まで記述すると何もとらなくなってしまいます。
ところが、「is_dir」を「!is_dir」にすると、ディレクトリとともにhtmlファイルもとってきてしまいました。
ためしに、hoge.jpgとダミーのファイルを置いたらそれもとってきてしまいました。

まぁ当然といえば当然なのですが、なぜ「!is_dir」でディレクトリまで取得するのがわかりません。

ソースを元に戻して、hoge配下にindex.htmlファイルとDirディレクトリを置いて、
if文の前後にechoを記述したところif文の前に書いたecho文に「...index.htmlDir」
と出てきてしまいました。これは、どういう意味なのでしょうか?

また、どうすれば、「Dir」だけを取り出せるのでしょうか

お知恵をお貸しください。
685nobodyさん:04/11/15 22:23:45 ID:Uy1hSbYj
>666さん
ありがとうございます。

>666, 667 html部分はコピペで気づかずそのまま利用してしまいました。
申し訳ないです。<font>もコピーするとき切れてしまいました。・・・orz
686nobodyさん:04/11/15 22:29:31 ID:???
> 「is_dir」を「!is_dir」にすると
ΩΩΩ ナンダッテー!!
687nobodyさん:04/11/15 22:47:05 ID:???
>>665
まだ解決してなかったのかい。

例えば
$dname = readdir($cdir)
この $dname はパスを含まないファイル名かディレクトリ名。
だからファイル操作する時の引数には $cdir.$dname にしないとだめだ。

>なぜ「!is_dir」でディレクトリまで取得するのがわかりません。

存在しないファイル名を is_dir で判定してたら全部 false になって当然。
688nobodyさん:04/11/15 23:59:08 ID:7AtpKkGf
可変長引数の関数を、
以下のような感じで書きました。

function test(){
$num = func_num_args();
if ($num > 0){
$a = func_get_arg();
}
if ($num > 1){
$b = func_get_arg();
}
if ($num > 2){
$c = func_get_arg();
}
}

ifの羅列がいまいちやぼったい気がします。
もっとエクセレントな書き方はないものでしょうか?
689nobodyさん:04/11/16 00:05:42 ID:2ZViTd8d
>687

ありがとうございます。
パスをつけて実行したらうまくいきました。

パスが必要だったとは・・・orz
感謝感謝です。
690 ◆.jC7ANgFY. :04/11/16 00:14:24 ID:???
>>688
これで動かないことはない、って感じ。
指定されてないものにはNULLが入ります。

function test() {
list($a, $b, $c) = func_get_args();
}
691nobodyさん:04/11/16 00:58:36 ID:???
>>688
$a,$b,$c…ってのに納めようとするから野暮ったくなってるんでは?
なんかに格納したいんなら、素直に、配列に落とし込めば良いと思う。

あるいは、最大で3つしか引数を取らないって言うなら、3引数の関数作って
デフォルトを与えた方が良いと思う。
692nobodyさん:04/11/16 01:48:09 ID:L8Qhj36n
>>688
同じ制御構造で代入以外の操作をしたいなら
switch(func_num_args()){
case 1:
/* 引数1つ以上のときの操作 */

case 2:
/* 引数2つ以上のときの操作 */

・・・

case n:
/* 引数nのときの操作 */
break;
default:
/* その他 */
}

まぁ、>688の場合は>>690
693nobodyさん:04/11/16 02:42:05 ID:???
>>690-692
なるほど!勉強になります。
690さんの方法で行こうと思います。ちょうどNULLが入って欲しかったので!
ありがとうございました。
694nobodyさん:04/11/16 05:05:06 ID:???
>>690
なんかperlっぽくてなつかすぃ
695nobodyさん:04/11/16 10:31:57 ID:kHelo3UA
こんにちは。
こんなときの対処法を教えていただきたいのですが。
環境は Linux+PHP4+Smarty+Apache+MySQL4.0です。

文字列検索をクエリーで行い、結果のリストを表示します。
リストはページングします。
select * from tablename where search_text like '%入力値%' limit x, y;
みたいな検索をするのですが、
対象データが10万件とかを超えるような場合、
結果表示が遅いことが想像できると思います。

なにも考えずに作ると、
ページを移動する毎に(limit指定のみ変わった)
重いクエリーを実行する必要があるため、
パフォーマンスの問題があります。
最初の一回のクエリーは重くてもいいとして、
ページングを軽くする方法はないでしょうか?
696nobodyさん:04/11/16 11:12:45 ID:t4iPftE+
RedHat9
PHP4.3.4
ですが、
セッンションを登録すると
内容が、すべて、Nになっているのですが、
何かヒントございませんでしょうか
よろしくお願いします

$s_start_time = strftime("",time()); ←ココでは、$s_start_timeに現在時刻(文字列)がきちんと入っている

session_start(); の後、
session_register("start_time");
として、trueが帰ってくる
結果をみるために、プリントすると

print "[".trim($start_time)."]"; ←こちらは、現在日付時刻が入っている
print "[".trim($_SESSION["start_time"])."]";
←コチラは、空文字になっている
697nobodyさん:04/11/16 11:14:46 ID:t4iPftE+
>>696
レス送信失敗…
修正
$s_start_time = strftime("",time()); ←ココでは、$s_start_timeに現在時刻(文字列)がきちんと入っている

$s_start_time = strftime("%Y-%m-%d %H:%M:%S",time()); ←ココでは、$s_start_timeに現在時刻(文字列)がきちんと入っている
です
698nobodyさん:04/11/16 12:14:48 ID:???
>>696
マニュアルは読んだかい?
699nobodyさん:04/11/16 12:38:46 ID:t4iPftE+
>>698
セッションオートスタートがオンになってると、
セッション変数不可
って項目ですよね
オフに、なっているんですが…
700nobodyさん:04/11/16 13:10:20 ID:???
>>696
session_registerを使うな
701nobodyさん:04/11/16 13:17:15 ID:t4iPftE+
>>700
え、その関数は不可ですんか…
アリガトンゴザイマスタ
702nobodyさん:04/11/16 13:21:00 ID:t4iPftE+
>>701 事後報告
セッションファイルにもきちんと値が入りマスタ
アリガトンゴザイマスタ
703nobodyさん:04/11/16 13:25:08 ID:???
マニュアルって使うの難しくね?
704yoro:04/11/16 14:44:19 ID:???
質問です。下のスクリプトを実行すると
「Parse error: parse error, unexpected $ in /test.php on line 3」
となります。
<?php
$val = 1;
print <<<END
\$val= $val
END;
?>

環境はローカルにインストールしたPHP4.3.9(DSO版)ですが、同じスクリプトをレンタルサーバー(PHP4.3.3 CGI版)に入れて実行するとなんの問題もありません。

ヒアドキュメント内の変数の展開を無効にするような設定ってありますか?
php.iniとかhttpd.confをあさったのですが、原因となりそうな設定項目はないように見えました。

ちなみに、ヒアドキュメントを使わずに
<?php
$val = 1;
print "\$val= $val";
?>
とした場合はエラーは出ませんので、ヒアドキュメント以外では変数の展開ができている模様です。
ヒアドキュメントを使えないとツラいので何とかしたいのですが、どなたか原因がわかる方がいらっしゃったら教えてください。
よろしくお願いします。
705nobodyさん:04/11/16 15:03:40 ID:???
706nobodyさん:04/11/16 15:22:12 ID:kHelo3UA
>>704
余計なインデントとかスペースとか入ってんじゃね?
ENDの後とか

ひとまず、マニュアルのソースコピーして貼り付け。
実行してみること。
http://www.php.net/manual/ja/language.types.string.php#language.types.string.syntax.heredoc
707nobodyさん:04/11/16 15:49:12 ID:wLOJos/k
関数で処理した結果を変数に入れたいんですけど、どすればよいですか?
たとえば、helloを返す関数、hello()があったとして、
$msg=hello();
な感じです。色々試してみましたが取れないです。hello()ではただ
echo "hello"; としてるだけです。
達人のみなさま、なにとぞ宜しくお願い致しまする。
708nobodyさん:04/11/16 15:54:51 ID:???
>>707
マニュアル見れ
function hello(){
return "helle";
}
echo hello();
709707:04/11/16 15:58:17 ID:???
>>708
ありがとうございました。
echoでなく、returnにしたらおかげ様で出来ました。
マニュアル読んだつもりになってましたが、全然読めてなかったんです
ね。反省いたします。
710yoro:04/11/16 16:21:53 ID:iDIPDCBP
>>706 さん
ご返答ありがとうございます。
指示されたようにマニュアルのコピー&ペーストをして再度試しましたが、やはり同じ結果でした。

先にも書きましたが、同じファイルが別のサーバーではきちんと実行できることを考えると単純なスクリプトの間違いではないように思います。
なにか他の可能性が考えられれば、ご示唆いただければうれしいです。よろしくお願いします。

ローカルにインストールしたPHP4.3.9はPHPの本家からリンクされているバイナリーパッケージ(Mac OSX版)を使ったので問題はなかろうと思っていますが、PHPをきちんとソースからコンパイルして入れ直した方がいいのかも知れません。
711nobodyさん:04/11/16 16:59:43 ID:???
うちの環境ではちゃんと動作した。

Mac OS X 10.3.6 & PHP 4.3.9(自前コンパイル)
END;の前にインデント入ったりはしてないよね?
712yoro:04/11/16 17:00:05 ID:iDIPDCBP
>>706 さん
改行コードの問題だと判明しました。

Mac上で実行する場合、改行コードがCR(Mac)だとエラーになるようです。
LF (Unix)またはCR+LF(DOS)にすれば大丈夫なようです。

リモートでは問題がなかったのは、Linuxサーバーだったからだと思います。

ヒントをいただいてありがとうございました。
713711:04/11/16 17:00:28 ID:???
>>711でアンカーわすれちゃった。
>>710
714nobodyさん:04/11/16 17:01:58 ID:???
>>712
おめ。&や ら な い か ?
715yoro:04/11/16 17:09:03 ID:iDIPDCBP
>>711 さん(ほかの方々)

ありがとうございました。

DreamWeaverで書いたコードの改行コードがCR(Mac)になってたのが原因だったのですが、DreamWeaverの環境設定にCode Formatというタブがあり、そこで改行コードをLF(Unix)に設定するオプションがありました。
今後は安心して書けると思います。お騒がせしました。
716nobodyさん:04/11/16 17:09:35 ID:wLOJos/k
配列の一番最後の値を特定して取り出すことってできますでしょうか?
先程から初心者な質問ですいません。
717nobodyさん:04/11/16 17:25:02 ID:???
>>716
特定する必要があるのか、ただ取り出せばいいのか

マニュアルの配列の項目
http://jp2.php.net/manual/ja/ref.array.php
の下のほうをじーーーと見れば、何を使えばいいのか分かる

直接関数がないなら、ひっくり返して前から取ればよくない?
718nobodyさん:04/11/16 17:37:53 ID:???
>>716

配列の要素数を返す関数 count() を調べろ。
それで最後の配列要素を取り出すことは出来る。

もしくは>>717のようにreverseさせて先頭要素[0]を取り出す手もある。

てかこのくらいGoogleかなんかでPHP講座とか探して勉強しろ。
719nobodyさん:04/11/16 17:43:46 ID:???
>>717
>>718
連想配列使って、
$temp_val = $val["インデックス"]
ってな具合に、取り出すのは、2度出間すかね?
720nobodyさん:04/11/16 17:46:59 ID:???
array_pop()がそうらしい
721nobodyさん:04/11/16 19:36:37 ID:???
array_pop()を使えばいいけど、元の配列から要素を削除するので注意。
722716:04/11/16 20:02:01 ID:???
いろいろとアドバイスありがとうございました。>>718さんの
おっしゃるようにカウンタ使っていたんですが、もっとスマートな
方法がないものか模索しておりましたが、array_pop()を使うことに
致しました。下記に作った自身のログファイル名を定義するスクリプトです。
もっと短くしたいんですが、これ以上無理でしょうか・・・

$res=split("/",$_SERVER['SCRIPT_NAME']);
$res=split("\.",array_pop($res));
$logfile="$res[0].log";
$logdir="./log";
$log="$logdir/$logfile";
723nobodyさん:04/11/16 20:21:22 ID:???
うーん、preg_replace使うかな・・・
724nobodyさん:04/11/16 20:30:06 ID:???
>722
正規表現、勉強しような
725nobodyさん:04/11/16 20:48:36 ID:???
俺なら
$filename = basename($_SERVER['SCRIPT_NAME'], ".php");
$filename.= ".log";
$log = "./log/{$filename}";
って書く
726nobodyさん:04/11/16 22:32:23 ID:???
$filename = basename($_SERVER['SCRIPT_NAME'], ".php");
$log = "./log/{$filename}.log";

でもいいわけだ。
727nobodyさん:04/11/16 23:22:24 ID:s1qPu0YC
特定の月末の日付を取得するにはどんな方法があるでしょうか?
728727:04/11/16 23:26:42 ID:s1qPu0YC
すいません、あと、
今日の日付 date() から1ヶ月先の日付を取得する方法を教えてくだせぇ。
お願いします。
unixタイムスタンプから1ヶ月分足す方法になると思うのですが、
1か月分のunixタイムスタンプがわからないっす
729727:04/11/16 23:29:08 ID:???
mktime使えば728は簡単にできそうですね・・・
スマソ。
727だけ教えてくださいませ
730nobodyさん:04/11/16 23:32:02 ID:???
それもmktime使います。自動補正便利だよねー。
731 ◆.jC7ANgFY. :04/11/16 23:33:25 ID:???
>>728
速い方法はほかにあるけどphpだからこその簡単な方法は
strtotime('+1 Month')
732nobodyさん:04/11/16 23:37:31 ID:tAnxVLV8
<form method="get" action"test.php">
.....<? echo $test1 ?>
フォームのPHPの埋め込みなんですけど、いきなり?
からはじまってます。。<?php echo >て言う感じにphpはいれなくていいんですか?
いれるときといれないときの違いっていうのはどういうことなんでしょうか?
ほんとに初心者からはじめれる本っていうのなんですけど、まったくこういうことに
ふれてないです><おしえてもらえればありがたいです
733727:04/11/16 23:37:51 ID:???
レスサンクスです。
分かりますた、ずばり日を1日に指定してそこから1日引くのですな!!
734nobodyさん:04/11/16 23:43:44 ID:???
php.iniの設定によっては?phpを省略する事も可能。
echoなら<?=$hoge?>でも可能。
735 ◆.jC7ANgFY. :04/11/16 23:45:20 ID:???
>>732
<?php echo 'A'; ?>
<?php echo 'A' ?>
<? echo 'A'; ?>
<? echo 'A' ?>
<?='A'?>
全部同じ意味です。ほかにscriptタグ使う奴
とかもあるけど気にしなくていい。
736nobodyさん:04/11/16 23:55:32 ID:???
> <?='A'?>

すわっ新種の顔文字かと思った。
737nobodyさん:04/11/16 23:58:37 ID:???
echoへのしょーとかっと
まぬあるにかいてあるべ
738nobodyさん:04/11/17 00:38:37 ID:???
でもあんま省略しない方がいいよ
739nobodyさん:04/11/17 00:55:24 ID:???
Apacheスタートしなくなったけど、
確かどこかにエラーメッセ出てたよね?
740nobodyさん:04/11/17 01:43:24 ID:???
>>739
意味不明。(apacheDir)/logs/error_log (error.log) の事を言ってるのか?
741nobodyさん:04/11/17 06:32:42 ID:???
長さを指定して空の2次元配列を作るにはどうすればいいの??
742695:04/11/17 10:30:45 ID:???
ショボーン。
やっぱり、自作で結果をキャッシュするしかないかな・・・。
743nobodyさん:04/11/17 10:50:38 ID:???
ちなみに10万件もヒットするDBって、どんなデータが入ってるの?
質問には答えられないけど、シチュエーションに興味あり。
744nobodyさん:04/11/17 11:02:24 ID:???
>>743
select * from hoge_table where 1;
745nobodyさん:04/11/17 11:18:07 ID:???
PHPのフリースクリプト探してるんですが、どこのスレに行って聞いたらいいですか?
基本的に日本語バグトラッキングシステムてPHPのやつ。
# 影舞いいんだけどRubyだし。
746nobodyさん:04/11/17 11:19:39 ID:???
>>745
板違い
747695:04/11/17 11:32:22 ID:???
>>743
10万件ヒットではなく、検索対象が10万件ですー。
そのうち20万件とか30万件が対象になる予定なんですけど。
これぐらいだと普通にありますよね?
748nobodyさん:04/11/17 12:22:32 ID:???
>>742
どんだけメモリ食うかしらんが、limitかけなきゃ良いんでは?
749nobodyさん:04/11/17 12:23:16 ID:???
Perl/sh でいうところの tr はありませんか?
tr/A-V/a-v/ をしたいのです。
750nobodyさん:04/11/17 12:41:09 ID:???
Webのアクセスログ(約26万件)を独自にPostgreSQLで記録しているが、
phpPgAdminで10万件ヒットの結果をviewingしても、最初の画面だけ
ちょっと待たされるものの、あとはそれほど重く感じない。
751nobodyさん:04/11/17 12:42:17 ID:???
752nobodyさん:04/11/17 12:56:44 ID:???
>>749
大文字->小文字ならstrtolower()
753nobodyさん:04/11/17 13:15:02 ID:???
>>751-752
ありがとうございました。
一部だけ小文字にしたいので strtr を使おうとマニュアルを見たら
> 引数を2つ指定してコールっ_場合
なんてのが。
754695:04/11/17 14:02:03 ID:???
>>748
最終的に検索クエリが遅いのは明らかなので、
ページングした際に再度クエリを投げないで済めば
早くなるのはわかっているんです。
なので、limit掛けない結果をキャッシュするしかないかなぁ?
ってのが>>742です。

>>750
文字列マッチでの検索とかした場合ですか?
シーケンシャルに読むだけならクエリー自体が軽いので、
ページングしても重くならないと思います。

もし文字列マッチでも早いなら、ソース見るしかないですかね・・・。
755nobodyさん:04/11/17 14:12:32 ID:???
デストラクタ的な後処理の為に、register_shutdown_function
を試しているのですが、register_shutdown_functionに登録された
関数内において、ログファイルの書き出しも、クラスファイル等のincludeも
いずれもpermissionエラーとなって実行できないのですが、
register_shutdown_functionの実行権限は、mainの処理とは異なるのでしょうか?
バージョンは4.2.3です。
756nobodyさん:04/11/17 15:06:42 ID:???
10万件のデータから中間一致検索しても一回当たり0.05秒掛からず
返ってくるけど。
757nobodyさん:04/11/17 15:11:44 ID:eshx/1+6
すいません、亀レスな上に横から質問で悪いんですが
>>688で可変長引数の質問について教えてください。

function test() {
list($a, $b, $c) = func_get_args();
}
のように、可変長引数にするメリットはなんでしょうか?
あんまり思いつかないのですが…。

>>691で言われているようにデフォルトを与えた方が
楽な気がします。
758nobodyさん:04/11/17 15:22:26 ID:???
windows版のapacheでSSL_FTP()を使いたいのですが、
apacheをどのような設定にすれば使用出来るようになるのでしょうか?
759nobodyさん:04/11/17 15:23:49 ID:???
>>757
俺もそう思う。
そもそもperl臭いのが嫌だ。
760nobodyさん:04/11/17 15:35:58 ID:???
>754
文字列マッチの場合なり
761695:04/11/17 16:04:49 ID:???
>>756
どひゃー。

ちょっと検索対象のフィールドの定義と、
1レコードのバイト数(概算)教えてもらえますか?
(中間一致ならindexは効かないですもんね)

他になにかやらかしてそうな設定ってあるかな・・・
762nobodyさん:04/11/17 16:09:58 ID:???
SQLからスピードを取ったら何が残るの?w
763nobodyさん:04/11/17 16:12:20 ID:ewTnqAG8
$aと$bと二つの配列があり、$aの値がone,two,tree、$bの値がtree
だとした場合、二つをマッチングさせて、マッチしたら1,マッチしなかたら
0を入れた配列$cを作りたいのですが、可能でしょうか?
$cの値は、0,0,1としたいんです。

どういうことかといいますと、$aが商品番号の配列。$bがユーザが持って
いる(購入済)商品番号。この情報から購入フラグ(購入済み0,未購入1)
配列を作りたいんです。どうかお知恵をお貸し下さい。よろしくお願い
致します。
764nobodyさん:04/11/17 16:12:37 ID:???
数百万なら俺も考えるが、数十万ならSQL+最近の鯖PCなら全然気にしない。
765763:04/11/17 16:15:42 ID:ewTnqAG8
すいません。追記です。
出来ましたら、$cは連想配列にして、echo $c[one];としたら0
と出したいんです。自分にはむずかしすぎて、取っ掛かりさえつかめない
状態です。
766nobodyさん:04/11/17 16:35:41 ID:???
>>761
フィールドは text。
1レコード15000バイトぐらい。
767748:04/11/17 16:42:06 ID:???
>>754
いやぁ、私が言いたかったのは、別に自前でキャッシュなんてしなくても、
limitかけないでクエリー発行して、mysql_data_seek()をつかえば、
MySQLの方でやってくれるぞ。って話で。

その際システム側でどんだけメモリなりのリソース食うかは預かりしらんが、って事で。
768nobodyさん:04/11/17 16:51:04 ID:???
>>765
どのへんがどうわからないの?答えようにも自分には(質問の意図をつかむのが)むずかしすぎて、取っ掛かりさえつかめない状態です。

とりあえず「いち、に、木」はやめよう。
769nobodyさん:04/11/17 16:52:34 ID:???
ワロタ
770768:04/11/17 17:01:31 ID:???
>>765
あれだけじゃ悪いから、スマートじゃないけど分かりやすい例ね。配列関連の関数を探すともうちょっと上手くかけるよ。
$a = array('one', 'two', 'three');
$b = array('three');

foreach ($a as $shohin) {
foreach ($b as $konyuzumi) {
if ($shohin == $konyuzumi) {
$c[] = 1;
} else {
$c[] = 0;
}
}
}

echo $c[0],'<br />';
echo $c[1],'<br />';
echo $c[2];
771695:04/11/17 17:07:52 ID:???
>>766
となると、MySQLの設定の問題又はサーバースペックの問題ってことですね。
スレ違い申し訳ない。

たしかに、そんなにスペックのいいサーバーではないのですが、
普通に1.5秒以上掛かります・・・
772nobodyさん:04/11/17 17:08:39 ID:???
>>770
$c[$shohin] = 1;
773nobodyさん:04/11/17 17:23:22 ID:zF/X7yAn
質問です。
ダウンロードダイアログ画面を出して
ファイルをダウンロードさせたいのですが、
大きいファイルだと保存画面がでるまでかなり時間がかかります。
これは何とかなりますか??

<?php
//down.php?file=ダウンロードファイル でアクセス

download($file);

function download($file){

//ファイルサイズ
if (($content_length = filesize($file)) == 0) {
die("error1");
}

//ヘッダ送信
header("Content-Disposition: attachment; filename=\"".basename($file)."\"");
header("Content-Length: ".$content_length);
header("Content-Type: application/octet-stream-dummy");

//出力
if (!readfile($path_file)) {
die("error2");
}
}
?>
774nobodyさん:04/11/17 17:25:56 ID:???
>>763では$bはstringとしか読めね
775nobodyさん:04/11/17 17:35:00 ID:???
>>767
仮に「自前でキャッシュ」するなら
「limitかけないでクエリー発行して、mysql_data_seek()をつかう」
の場合でも、どちらもシステム(PHP側)のリソースは食うので後者でOkかと。
サーバサイドカーソルはPHPでは無理だし。

しかしMySQLでlimit掛けても、内部的に条件判別に利用された結果
(全結果ではなく対象リストみたいなもの)はキャッシュされるので、
テーブルの値に変化とかなければ、2回目以降は比較的早く出る筈なんだが
システム上の作りが変なのか、特殊なのか…
776nobodyさん:04/11/17 17:55:44 ID:???
>2回目以降は比較的早く出る筈なんだが

だよね。0.05秒だったのが次やったら0.01秒切ったし。
777695:04/11/17 19:36:09 ID:???
>>776
最後に参考までにサーバースペック教えてください・・・。
778nobodyさん:04/11/17 19:39:20 ID:???
CPU AthlonXP2400 メモリ1GB
779822:04/11/17 21:14:58 ID:???
ADOdbの日本語ドキュメントってありますか??

あとPEAR::DBとの比較ってどっかにありますか??
780773:04/11/17 21:36:19 ID:zF/X7yAn
http://ns1.php.gr.jp/pipermail/php-users/2004-April/021685.html
まさにwinで↑なんですが解決法書いてあらず・・
781nobodyさん:04/11/17 22:35:51 ID:???
>>780
試しに fopen + fpassthru でなく readfile でやるとどう?
782781:04/11/17 22:36:30 ID:???
ごめん血迷った発言した。無視して
783781:04/11/17 22:42:49 ID:???
Windows 2K, Pentium3 700MHz, PHP 5.0.2 で 81MB のファイルを
>>773のスクリプトそのままで開いてみたけど特に問題は無いよ。
PHP 自体のバグだと思うから Version Up すれば解決するぽ
784nobodyさん:04/11/17 23:59:10 ID:OsVB8E9H
すみません、PHP超ド素人厨なのですが質問です。
借りてるレン鯖で設定しているあるメールアドレス宛てにメールが届いたら、
そのメール受信をキッカケにプログラム(自作のPHP)を
起動させてそのメールを処理(データベースに収納したり自動返信したり等)を
させたいのですが、そういうことは可能でしょうか?

自分で思いつく限り検索してみたところ、MTAでパイプ渡しが
どうのこうの・・・と、意味がよく分かりませんでした。
それに、そういうことは共用鯖では実現が難しそうな感じでした。

やっぱり専用鯖が必要なのでしょうか?(専鯖ならどこでも可能??)

すみません、自分のレベルが低いので分かりにくい質問かもしれませんが
どなたか技術的に分かる方がいらっしゃいましたら教えてください。
785nobodyさん:04/11/18 00:14:18 ID:???
>>784
forwardやprocmail等を使えば可能だけど共用鯖なら無理かも知れんね。
専鯖でも使えるかどうかはその鯖の設定次第。
786773:04/11/18 00:20:26 ID:???
>783
ありがとうございます。
環境変えてやってみます。
787nobodyさん:04/11/18 00:34:20 ID:GCCM5gSl
>>785
お答えありがとうございます。
ということは、「forward」や「procmail」というのが
使えるかどうかを鯖会社に質問すればOKですか??

もしかしたら専鯖じゃなくてVPSっていうのでも出来るのかな・・・?
788nobodyさん:04/11/18 01:02:27 ID:???
>>787
まぁ、共用・専用等の区分で明確に決まる訳でもなく、
あくまで鯖側の設定次第なので1つ1つ調べていくしかないですね。
789nobodyさん:04/11/18 01:02:50 ID:???
だな
790nobodyさん:04/11/18 01:50:03 ID:AjTyCRAu
秒数を時間に変換する関数って有りますか?
マニュアルを探したんですけど日付に変換するものしかなくて・・・

例えば、6000秒で01:40:00って表示するようなのが欲しいんです
791nobodyさん:04/11/18 02:01:24 ID:???
mktimeの秒数部分って60以上は入れられないのかな?
792nobodyさん:04/11/18 02:19:03 ID:???
>>790
$sec = 6000;
echo date('H:i:s', mktime(0, 0, $sec));

一応mktimeでいけるね
24時間以上だとこのままでは無理だけど
793792:04/11/18 02:32:31 ID:???
24時間以上に対応したいなら多分関数作った方が早い
参考になるか分からんけど漏れが作った奴載せとく

function sectohour($sec) {
 $hour = floor($sec / 3600);
 $sec %= 3600;
 $min = floor($sec / 60);
 $sec %= 60;

 return(sprintf('%02d:%02d:%02d', $hour, $min, $sec));
}
794nobodyさん:04/11/18 03:35:35 ID:???
携帯の振り分けなんですが、
FOMA端末のUA識別は
"DoCoMo/^2\.0" という表記で良いんでしょうか?

<?
$ua = $_SERVER["HTTP_USER_AGENT"];
if(ereg("DoCoMo/^2\.0",$ua)){
header("Location: aaa.html");
exit;
}else {
header("Location: bbb.html");
exit;
}?>

FOMAで「aaa.html」 それ以外は「bbb.html」へ飛ばすようにしてるつもりなのですが、
上手く動作しません。
795nobodyさん:04/11/18 04:36:45 ID:???
関係ないかもしれないけど携帯の場合だと
location hoge は絶対パスで書かないと駄目だとか
796790:04/11/18 08:35:27 ID:???
>>791,792,793

レスありがとうございます。なるほど、mktimeですか気付きませんでした。
しかし、24時間以上を扱う予定なので793さんのコードを参考に作ってみます。

みなさんありがとうございました。
797nobodyさん:04/11/18 09:49:06 ID:jaTiTZm1
10日でシリーズでPHPやってるんだけど
Fatal error: Call to undefined function: mb_convert_encoding()
のエラーで止まって動かなくなりました
bm_convert_encoding()の動きはわかるんだけど
PHPのライブラリ?から読み込んでるんですか?
798nobodyさん:04/11/18 10:23:09 ID:???
>>797
環境は?
Windowsだったらdll読み込んでないんだろうし、
Linux系だったらconfigureで-with指定してないんだろうな。
799nobodyさん:04/11/18 11:05:19 ID:???
>>797
<?php
phpinfo();
?>
実行結果をよく確認。
800nobodyさん:04/11/18 11:06:28 ID:???
797じゃないですが、win版でdllを読み込ませる場合って
c:\windows\system32にdllをおいてApacheを起動するだけでOKですか?
801nobodyさん:04/11/18 11:10:35 ID:???
php.iniを変更する。
802797:04/11/18 12:57:08 ID:jaTiTZm1
windows 環境で
phpdevをインストールした状態です
803nobodyさん:04/11/18 14:57:43 ID:z5HMJmKG
hoge=aaa
hoge=aaa&piyo=bbb
上の文字列の「aaa」の部分を抜き出したいのですが、うまい正規表現の仕方はないでしょうか?
preg_match_all("/hoge=(.+?)\&/",$str,$match);
だと、hoge=aaaのマッチが取れないのです…。
804nobodyさん:04/11/18 15:16:01 ID:???
>>803
そりゃそうだ。正規表現を勉強汁。PHPの質問じゃない。
805nobodyさん:04/11/18 15:28:11 ID:???
>>803
テンプレ

正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g
http://pc5.2ch.net/test/read.cgi/php/1069245758/
806nobodyさん:04/11/18 15:35:00 ID:???
>>803
$str = "hoge=aaa&piyo=bbb";
parse_str($str);
echo $hoge;
echo "<br>";
echo $piyo;
807nobodyさん:04/11/18 15:37:24 ID:???
>>806
それは穴になりかねんぞ
808805:04/11/18 15:46:53 ID:???
orz
正規表現勉強するなら、ここのテンプレにあるぞ。
っと言ったつもりだった。
あっちで質問してら。
809nobodyさん:04/11/18 15:48:45 ID:???
>>803
$_GET['hoge']の事だったりして
810nobodyさん:04/11/18 15:55:34 ID:???
意図がよく分かんない質問だったね。(終わった事にしてる)
preg_match_all の方を使おうとしてるのを考慮すると、>>809の可能性も。。。
811nobodyさん:04/11/18 17:12:40 ID:???
素朴な質問です
countとsizeof関数は、何か違うのでしょうか?
マニュアルには、sizeofはcountのエイリアスとしか記載されていませんでしたが
使い分ける必要等はあるのでしょうか?
812nobodyさん:04/11/18 17:40:40 ID:???
同じ同じ。
813nobodyさん:04/11/18 17:46:25 ID:???
>>809
いや実は俺もそうではないかと恐ろしくなって答えれなかった(w
814nobodyさん:04/11/18 17:57:38 ID:???
>>811
エイリアスとは何かを調べれば答えは自ずと分かるでしょ。
ついでに「ラッパー」とかも調べておくといいかも。
815nobodyさん:04/11/18 18:03:03 ID:???
count だとC言語使ってた香具師が多用してる変数countと
ごっちゃになるからだけだと思う。
sizeof導入も、C書きの人がすんなり入りやすいためだけだろう
多分。
816nobodyさん:04/11/18 18:03:29 ID:???
他の関数へのエイリアスとなっている関数は将来どう変更が加わってもおかしくないので
使わない方が無難
817軟式PHP:04/11/18 18:07:36 ID:???
(´・ω・`)?
818nobodyさん:04/11/18 18:18:24 ID:8nQGI/2a
レガシーASPから、PHPへの移行を考えています。

そこで質問なのですが、
ASPでのresponse.endに該当する記述は、PHPだと何になるのでしょうか?

具体的にはフォームから送られた内容を確認するために、
受け取った変数の中身をechoで表示したところで、1度スクリプトを停止させたいのです。

基本的な事で申し訳ありませんが、よろしくお願いします。
819nobodyさん:04/11/18 18:22:11 ID:???
exit;
820nobodyさん:04/11/18 18:58:04 ID:???
die;
821nobodyさん:04/11/18 19:05:33 ID:bps4zhVU
ereg_replace()にて文字列を変換してるのですが
たまに変換されずになることがあります。
変換内容はュ→ユのように小文字を大文字に直すだけなんですが
何か原因があるのでしょうか?
また、str_replace()とか使った方がいいですか?あまり違いがわからなくて・・。
822nobodyさん:04/11/18 19:08:54 ID:???
>>821
mb_convert_kana()をどうぞ
823822:04/11/18 19:13:29 ID:???
少し補足しておくと、
そういう処理はマルチバイトを考慮しない関数は使わない方がいい。
色々ググってみ。
824nobodyさん:04/11/18 19:29:34 ID:???
php.iniのextension=php_openssl.dll を有効にして起動したいのですが、
php_openssl.dllが見つかりませんというエラーになります。
extension_dirをフルパスに設定しても./(ドットスラ)にしても
見つからないらしいです。
他にも何か設定を変える必要があるんでしょうか?
825nobodyさん:04/11/18 19:39:34 ID:???
1. php_openssl.dllがそもそも無い。
2. 違うphp.iniを変更している。
826nobodyさん:04/11/18 19:53:52 ID:???
>>825

1. きちんとあります。それらしきところ(system32配下やカレントディレクトリなど)に
いろいろ配置してみましたがダメでした。見つからないらしいです。

2. extension=php_openssl.dll の行をコメントアウトして再起動するとエラーが消えるので
php.ini自体は正しいと思われです。
827nobodyさん:04/11/18 20:39:48 ID:???
>>826
エラーの内容だけど、他にdllが足りないってエラーは出てない?

828nobodyさん:04/11/18 20:45:57 ID:???
>826
http://php.s3.to/man/ref.openssl.html
>Win32ユーザへの注意: このモジュールをWindows環境で使用するには、PHP/Win32バイナリパッケー ジのDLLフォルダからlibeay32.dllを使用する WindowsマシンのSYSTEM32フォルダ(例: C:\WINNT\SYSTEM32または C:\WINDOWS\SYSTEM32)にコピーする必要があります。

これではないのか?
829nobodyさん:04/11/18 20:49:13 ID:???
>>826
libeay32.dllをsystem32フォルダにコピー
環境変数OPENSSL_CONFを新規作成してopenssl.cnfのパスを指定
830nobodyさん:04/11/18 20:51:20 ID:???
openssl.cnfはwindowsでは拡張子無しの短縮ダイヤルと表示されるので注意
編集する場合はエディタから開くで指定する。
831nobodyさん:04/11/18 22:14:30 ID:VOS+8K87
PHPでは、$obj->getchild()->getname();
のように、オブジェクトを返すメソッドから直接そのメソッドを呼ぶことは、
許されてないのでしょうか?
パースエラーになります。

PHP4です。
832nobodyさん:04/11/18 22:27:31 ID:XCBl1M85
単純な質問ですけど
PHPで一番得意なのはどういう処理ですか?
(DB操作や文字列処理、数値計算など)
833nobodyさん:04/11/18 22:40:23 ID:???
>>832
なんじゃこの質問
834nobodyさん:04/11/18 22:40:25 ID:???
>>832
マニュアルより。
PHPを使用する上で最も優れている点は、初心者に対しては非常に分かり 易いと同時に、
プロフェッショナルのプログラマに対しては多くの進んだ機能を提供している点です。
PHPの機能を羅列した長い一覧表を読まなければならないのかと心配する必要はありません。
PHPはすぐに始められますし、数時間の内に簡単なスクリプトが書けるようになります。
835nobodyさん:04/11/18 22:45:43 ID:???
>>832
まー勉強するなら普通にJava行っとけって。
836nobodyさん:04/11/18 22:55:21 ID:???
お遊びプログラマがJava覚えたって意味ねー
837nobodyさん:04/11/18 23:00:25 ID:???
>>836
未経験者ですか?
838nobodyさん:04/11/18 23:01:18 ID:???
>>833
他言語との速度比較をする際に参考にしようと思って質問しただけです

>>834
なるほど。
ということは処理的な特徴は特にないのですか?
(私はPHPを使った開発はしてません)

>>835
なぜ?

>>836
Java書けますけど
私もそう思います
839nobodyさん:04/11/18 23:05:03 ID:???
>>837

趣味でやってる程度のヤシが借りるレン鯖でjavaなんか使えねえよ世間知らず。
840nobodyさん:04/11/18 23:07:11 ID:???
>他言語との速度比較をする際に参考にしようと思って質問しただけです
それなら最初から速度に関して質問すればいいでしょ
全体的な処理の速さなら他の言語と違いあるだろうし、規模にもよるんだって回答もあるでしょう。
文字列処理だけ特別に早かったり、数値計算がなぜかすごく遅かったりなんていう言語はあるとは思えん。
841831:04/11/18 23:13:11 ID:???
で、831はダメ?
それだと、自分の中で、「PHPつかえねー」って結論になってしまいます。
それだとさみしいな。
842832:04/11/18 23:16:13 ID:???
>>840
全体的な速度とかは求めてません。
あくまでもPHPとして得意な処理ってなんなの?っていう件でお答えしていただきたかったのです

ちなみに特別に早いとか遅いはないですけど
得意・不得意は絶対にありますよ

特に数値計算は苦手な言語が多いので差が出やすいと思います
843nobodyさん:04/11/18 23:17:07 ID:???
早く言えば、phpはWeb利用を前提にしてるから
そういう方面に使いやすい
844nobodyさん:04/11/18 23:21:08 ID:???
得意不得意の前に、使う人間の頭による。
845832:04/11/18 23:22:15 ID:???
>>843
マニュアルでも確認できましたし
やはりそういう得意分野は処理ではなく開発(特に初心者向け)のほうで1歩前に出てるということですね
ありがとうございました。
846nobodyさん:04/11/18 23:22:25 ID:???
>>826
環境書け。
話はそれからだ。
847832:04/11/18 23:23:28 ID:???
>>844
それはプログラミング全体の言語以前の問題で
私もそれは常に思っています
848nobodyさん:04/11/18 23:27:05 ID:???
>>845
そう、初心者向けに開発しやすい
お約束が少ない


まぁ玄人(?)でも簡単に書けてすぐ動く。
速さを求めるなら、他のをどうぞ
849832:04/11/18 23:32:53 ID:???
>>848
なるほど。
わかりやすい回答ありがとうございます
850nobodyさん:04/11/18 23:42:50 ID:???
Web関係の物は標準で組み込まれてるから
鯖に易しい
851nobodyさん:04/11/19 00:03:18 ID:OG1nPnpo
MySQLの接続切断って記述しなきゃ、永遠に接続切れないのでしょうか?
852nobodyさん:04/11/19 00:17:02 ID:???
サーバーへのリンクは、mysql_close()のコールにより 明示的に閉じられない限り、
スクリプトの実行終了と同時に閉じられます。

http://jp2.php.net/manual/ja/function.mysql-connect.php

mysql_pconnect()は、二つの点を除いて mysql_connect()と全く同様に動作します。

1.すでにオープンされていないかどうかを調べます。
それがみつかった場合、新規の接続をオープンする代わりに
そのリンクのIDが返されます。

2、SQLサーバーへの接続がスクリプトの実行終了時にも 閉じられないということです
853nobodyさん:04/11/19 00:23:33 ID:???
>>851
MySQLサーバ側のタイムアウトで切断する。
あとPHPで普通の接続(永続的接続でない)した場合は、
スクリプト実行の終了時にPHPが自動的に切断処理を行う。
勿論自分でcloseするのも可。
854nobodyさん:04/11/19 00:43:00 ID:???
まぁPHPは組み込み関数が多くて楽だよな。
web系の事なら何をするにしても関数が用意されてる。
ただ、急に名前変わったり過去の関数をずっと引きずるのはいただけない。
ずっと68Kを引きずったMacのようだ。と元マカーの俺。
855nobodyさん:04/11/19 01:04:32 ID:???
>>831
ダメ。マニュアルのどっかに書かれていたのを読んだ記憶があるんだがみつからねー
()-> で検索できればエラー例が一発で出るんだけど仕様上無理なんだよなぁ
856nobodyさん:04/11/19 01:35:35 ID:???
PHP5からできるようになったみたいな記述も見たな
同じく探したが見つからなかった…
857nobodyさん:04/11/19 02:15:29 ID:???
設定をオートリンクにしたときurlじゃなく「こちら」って文字に
変換するにはどう変更すればいいんでしょうか?

if ($autolink) { $comment = auto_link($comment); }
になっているのですが・・・
858nobodyさん:04/11/19 02:17:52 ID:???
>>857
auto_link の定義は?
859nobodyさん:04/11/19 02:42:56 ID:???
>>858
# URLの自動リンク (0=no 1=yes)
$autolink = 1;

掲示板なんですがコメントにURLが張られるとそのままURLの文字にリンクが張られるので
こちら、って文字に置き換えてリンクを張りたいのです。
定義の意味がよくわからないので見当はずれだったらすみません;
860nobodyさん:04/11/19 02:49:13 ID:???
>>859
見当外れだ。auto_link 関数の定義があるでしょ。
どうせ http から始まる文字列を <a href="http**">http***</a> に replace してるんだろうから
それを <a href="http**">こちら</a> に変更すればいい。
861nobodyさん:04/11/19 02:56:13 ID:???
>>860
できました。見つけたらそうなってたのか、と思いました;
ありがとうございます。
862nobodyさん:04/11/19 05:57:46 ID:???
>>850
あんなに共有サーバの設定しにくい代物でサーバにやさしいのか?
サーバ管理者泣かせだと思うよ
モジュール追加する作業も面倒だし
たまに他のApacheモジュールと競合するときあるのよね
どうしたもんかね

まぁサーバにやさしいというか>>848が言ってるように
初心者にやさしいだけ

標準でいっぱい入れてるから遅いってのもあるけどね
863nobodyさん:04/11/19 06:28:08 ID:???
\____   ________________/
       \/
       人
    / ̄   ̄ ̄\
   (  人____)
   |./  ー◎-◎-) 
   (6     (_ _) )
   | .∴ ノ  3 ノ  ______
    ゝ       ノ  .|  | ̄ ̄\ \
   /   \__     |  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ    |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄
864nobodyさん:04/11/19 08:15:55 ID:???
\____   ________________/
       \/
       人
    / ̄   ̄ ̄\
   (  人____)
   |./  ー◎-◎-) 
   (6     (_ _) )
   | .∴ ノ  3 ノ  ______
    ゝ       ノ  .|  | ̄ ̄\ \
   /   \__     |  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ    |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄
865nobodyさん:04/11/19 09:26:48 ID:???
PHPからメールを送信したいのですが、SMTP AUTHで送信する場合は
どのようにしたらよいのでしょうか?
866nobodyさん:04/11/19 09:44:34 ID:???
>>862
共有鯖にApacheモジュールとして入れるなよ池沼
867nobodyさん:04/11/19 10:17:24 ID:???
まあ、普通はcgiにする罠。
868nobodyさん:04/11/19 10:48:57 ID:???
俺が愛用している共有レンタルサーバーは2社ともモジュールだよ。
869nobodyさん:04/11/19 11:01:01 ID:???
CGI、SSIが使えないならsafe_modeで安全に出来るけどな。
使えるならユーザ側でかなりの工夫しないとDBのパスワードとか盗まれるぞ。
safe_modeになってないのは論外。
870nobodyさん:04/11/19 15:26:29 ID:???
>>862
PHPユーザは入ってないと嫌だろ?
871nobodyさん:04/11/19 15:26:57 ID:???
↑スマン
>>866の間違い
872nobodyさん:04/11/19 15:56:12 ID:???
共有鯖ならモジュールじゃない方が良い。


そもそも設定が面倒とか言ってるヘタレ共有鯖管のトコ使わんけどな。
しまいにゃセキュリティホール塞ぐの面倒とか言い出しそうだ。
873nobodyさん:04/11/19 17:35:26 ID:???
PHPでMySQLのDatabaseの存在を判定するには
何使えばいい?
mysql_select_db?
874nobodyさん:04/11/19 17:59:52 ID:???
ファイルロックについての質問させてもらいます

phpのflock()の信頼性はどうなのでしょうか?
flockを使用せずmkdir()を用いた方が良いのでしょうか?
875nobodyさん:04/11/19 18:20:18 ID:???
そんなんだったらflockの存在意義が無いだろボケ
876nobodyさん:04/11/19 18:26:18 ID:???
元々存在意義無いし
877nobodyさん:04/11/19 19:04:08 ID:???
mkdirの存在意義はあるよ
878nobodyさん:04/11/19 19:30:42 ID:???
マルチバイト文字列関数を使いたいのですが、どの様にすれば良いでしょうか?

↓PHPマニュアルには
http://jp2.php.net/manual/ja/ref.mbstring.php
>configureスクリプトでモジュールを有効にする必要があります。
>詳細は、インストールの節を参照して下さい。
と書いてありますが、指定されたインストールのページには
詳細どころか configureスクリプト の文字すら無く、弱っております。
879nobodyさん:04/11/19 19:45:35 ID:???
>>878
志村〜
環境!環境!
880素人:04/11/19 20:44:15 ID:/iwixYaK
教えてくだされ

Apache バージョン 2.0.40
PHP Version 4.3.9

簡単なファイルアップロードのプログラムを動かすと
なぜかファイルサイズが倍(正確には倍より少しちいさい)ぐらいになってしまいます。
当然、中身もおかしいので画像ファイルだとずれた画像になってしまいます。
ftpだとうまくいきます。

プログラムは
http://www.pat.hi-ho.ne.jp/dimension/sample/sample_others_upload.shtml

のとおりなのですが、、、

どなたかお心当たりはありませんでしょうか。
881nobodyさん:04/11/19 21:35:16 ID:???
>>879
たぶんWindows。
なんとなく。ただただなんとなく。
882カポコン:04/11/19 21:38:18 ID:???
拡張モジュールを使いたいのなら
Linuxはエナブルで追加、
Windowsは、php**.dllを置いた所に拡張モジュールを置いて
リスタート
883nobodyさん:04/11/19 21:45:35 ID:???
>>882
ちゃんとした表記が出来ないなら英単語のまま書けよ。
検索も出来ないし意思の疎通が難しくなるだけだろ。
884nobodyさん:04/11/19 23:07:45 ID:???
Enable = エナブル
885nobodyさん:04/11/19 23:27:14 ID:???
aliasをジョージと読むことはあってもenableをエナブルとよぶ馬鹿はおらんやろ。
886nobodyさん:04/11/19 23:33:25 ID:???
エナブルってツールがあるのかと思ったよ。enableかよ。
887nobodyさん:04/11/19 23:54:10 ID:???
>>886
カポコンの言う事ですから!残念!!
888nobodyさん:04/11/20 00:03:07 ID:???
喝っ!・・・・・ポコ〜〜〜〜ン・・・
889nobodyさん:04/11/20 00:16:24 ID:???
発音はイネーブルだろ。英語勉強しなおせ
890nobodyさん:04/11/20 00:23:38 ID:???
何度注意しても タイトルを titole にしてくるデザイナーがうちにいるよ orz
↓次の質問いってみようか
891nobodyさん:04/11/20 00:29:02 ID:???
ループに使う変数をroopってするやつもうちの周りにいるな
whileループ使うよりfor使えばいいのに
892nobodyさん:04/11/20 02:03:29 ID:lZ7mI+hy
すみません
プログラム経験まったくない初心者で今日からPHPを勉強し始めました。
まだ本当の初心なのですが、
$x = 1;
$a = 2;
$b = $a + 3 * $x;

print("計算結果は".$a+3*$x."です<br>");
print("計算結果は".$b."です<br>");

としたときに

3です
計算結果は5です

と表示されるのはなぜなのでしょうか?
いろいろ調べてみたのですがわかりません。
教えていただけないでしょうか?
893nobodyさん:04/11/20 02:16:08 ID:???
>>892
http://jp.php.net/manual/ja/language.operators.php#language.operators.precedence
これ見ると、「.」と「+」の演算子の優先順位は同じだよな。
どういう順番で演算されてそういう結果になったと思う?
894nobodyさん:04/11/20 02:34:35 ID:lZ7mI+hy
こんな深夜にありがとうございます。
これを2時間くらい考えていて眠れなかったんです。

3*$xが先に計算されて3ですよね
その後に”計算結果は.$b”というありえない数字が足されたために無視されたので

3です

になったんでしょうか?
895nobodyさん:04/11/20 02:43:18 ID:???
"計算結果は".$a+3*$x."です<br>"

"計算結果は".$a+3."です<br>"

"計算結果は2" +3."です<br>"

3. "です<br>"

"3です<br>"
896nobodyさん:04/11/20 02:46:18 ID:???
>>894
取り敢えず、動作が分からなくなったら、
895みたいな感じで、確認する癖つけよう。
一番手っ取り早く理解出来る。
897nobodyさん:04/11/20 02:48:59 ID:???
>>894
少しもちつけ。
「"計算結果は".$a+3*$x."です<br>"」の演算について話してる時に$bは出てこないだろう。
「"計算結果は".$a」の部分の結果が "計算結果は.$a" となるわけでも無い。

落ち着いたら、さっきのリンクしたページから文字列演算子について調べてみよう。
英文かもしれないが答えは見つかるはずだ。
898nobodyさん:04/11/20 02:50:17 ID:???
>>895-896
深夜なのにどうもすみませんでした
なかなか奥が深いのですね。
試料を探すだけじゃなくていろいろやりながら勉強してみます。
ありがとうございました。
899894:04/11/20 03:06:00 ID:???
>>897
えっと…
$a+3*$xだと(2+(3*1))になるから5ですよね
前の""の文字列は0で認識されるんですよね

"計算結果は".$a+3*$x.だと0.2+3に…
だと変だな
余計にこんがらがってきたw
900nobodyさん:04/11/20 03:07:23 ID:???
で、ところで、print文の中で演算させる方法はあるのでしょうか?
perlで言うと@{[ ****** ]}みたいな…
901nobodyさん:04/11/20 03:28:05 ID:???
perlでの機能をPHPで…
ってのは、もうウンザリ。
902nobodyさん:04/11/20 03:37:37 ID:???
>>899
これで最後にしてくれ
>"計算結果は".$a+3*$x.だと0.2+3に…

"計算結果は".$a+3*$x

"計算結果は".$a+3

//文字列と数値を . (ドット)で演算すると、数値は文字列に変換されてくっつく
"計算結果は2" +3

//文字列と数値を + (プラス)で演算すると、文字列はゼロに変換されて加算される
0 +3
903nobodyさん:04/11/20 03:42:02 ID:???
>>899
もちつけ。>>902が既に書いているが念の為

1. まず、「*」演算子が一番優先度が高いのでそこが評価される。
   → "演算結果は".$a+3*1."です<br>" → "計算結果は".$a+3."です<br>"
2. 「.」演算子と「+」演算子は優先度は同じ。左から順番に評価される。
3. "計算結果は".$a の部分。演算子の両側を文字列として扱うので、
  $a の値である 2 は "2" と変換される。
   → "計算結果は"."2"+3."です<br>" → "計算結果は2"+3."です<br>"
4. "計算結果は2"+3 の部分。演算子の両側を数値として扱うが、
  数値で始まっていない文字列 "計算結果は2" は 0 に変換される。
   → 0+3."です<br>" → 3."です<br>"
5. 3 は "3" に変換される。
   → "3"."です<br>" → "3です<br>"
904nobodyさん:04/11/20 04:16:37 ID:???
お。なんかいい感じのレスが続いてるねぇ。

print("1. 計算結果は".$a+3*$x."です<br>");
print("2. 計算結果は".$b."です<br>");
これも行っときますか。
905nobodyさん:04/11/20 05:38:05 ID:???
>>904
"1. 計算結果は" が 1.0 に変換されるというパターンか。
釣られてはみたものの、単に「マニュアル読め」、「試せ」で終わらせたい気もする。
http://jp.php.net/manual/ja/language.types.type-juggling.php
906nobodyさん:04/11/20 05:41:33 ID:???
>>900
それ系の質問ウンザリだからわかってるPerlを使っとけ
907905:04/11/20 05:55:12 ID:???
しまった。"1. 計算結果は2" が浮動少数点数の 1 に変換されて…だな。
>>903 でも "演算結果は" とかヤっちゃってるし、吊って来る…
908nobodyさん:04/11/20 09:12:17 ID:???
文字列の途中に計算結果を . で結合したい時は()[括弧]で括れってことだな。
print("計算結果は".($a+3*$x)."です<br>");
909nobodyさん:04/11/20 09:19:06 ID:???
漏れはecho派だからこうするかな
echo "計算結果は", $a+3*$x, "です<br>";

括弧の対応で悩まなくて済むくらいしか利点が無いけど
910nobodyさん:04/11/20 12:04:58 ID:???
意外と勉強になった人も多いんでは?w
建設的だったぽい
911nobodyさん:04/11/20 12:25:13 ID:???
っていうか普通カッコつかうだろ
912nobodyさん:04/11/20 12:37:14 ID:VmPsi8L8
$result = mysql_query("SELECT username, password
FROM user
WHERE username = '$username' AND password = '$password'", $con);
$row = mysql_numrows($result);
if($row != "0"){


上みたいな感じで会員制サイト作る際のログイン基準作ってるんですが、
セキュリティ的にこれで大丈夫ですかね?
あまりにシンプル過ぎてカナーリ心配なのですが・・・
ご指摘求みます
913nobodyさん:04/11/20 12:56:28 ID:???
>>912
そんなコード書いてたら俺みたいなスーパーハカーに簡単に全ユーザの
パスワードを盗まれちゃうよ。

クロスサイトスクリプティングとかサニタイジングでググッてみれ。
914nobodyさん:04/11/20 13:00:12 ID:???
$password'
ここに
・・・・; drop・・・
915912:04/11/20 13:12:09 ID:VmPsi8L8
クロスサイトってjavascriptとか使ってやるあれですよね?
上の例でなぜCSSが問題になるのかよく分からないのですが?
username と password に入力制限するだけでは駄目なのでしょうか?
916912:04/11/20 13:14:06 ID:???
XSSでしたなorz
917nobodyさん:04/11/20 13:15:08 ID:???
最近の若いモンは算数が出来ないと聞くがここの連中は特に凄いのが集まってるな。
918nobodyさん:04/11/20 13:15:23 ID:???
>>915
まあ素直にググッてみれ。
919nobodyさん:04/11/20 13:16:11 ID:???
>>917
おばさんかもしれないよ
920912:04/11/20 13:20:50 ID:???
ググッてみましたが、
分かりませんです。
一応XSSについては気をつけていたつもりなのですが。
サニタイジングって無効化するやつですよね。
上記の例で何を無効化すべきなのか分かりません。
username と passwordですか?
914さんの発言を見ると、passwordの入力フォームで
ある内容を入力されるとパスワードがdropできちゃうってことですかね?
921912:04/11/20 13:22:59 ID:???
例えば上記例で、不正ユーザが$row=1として送っても、
4行目でrow=0に上書きされるはずですよね・・・
922nobodyさん:04/11/20 13:34:06 ID:???
$password = " passwd; drop table user;"
923nobodyさん:04/11/20 13:40:04 ID:???
>>917
こんなの算数でもなんでもないだろ
924nobodyさん:04/11/20 13:45:53 ID:???
パスワード欄に「' or password !=' 」とか打たれると…。
925912:04/11/20 13:51:16 ID:???
なるほど、ちょっと感心しちゃいました。
名前入力とかはXSS気をつけてたんですが、
最も重要なポイントをサニタイジングするのを忘れてるようですね汗。

ありがとうございました。
926nobodyさん:04/11/20 14:00:19 ID:???
そもそも作ってて気づけ。
927nobodyさん:04/11/20 14:19:42 ID:???
$a=2004/11/25(日付)
$b=3(ヶ月)

$aに$bを足して、
$a=2005/02/25としたいのですが、
方法がよく分かりません。
$a=strtotime($a);
$a=mktime (0,0,0,date("m", $a)+$b, date("d", $a), date("Y", $a));
として02/25の部分はなんとかできたと思うのですが、
2004を2005にするにはどうすればいいでしょうか?
ご教授くださいませ
928nobodyさん:04/11/20 14:37:13 ID:???
>>927
list($y,$m,$d) = explode("/", $a);
$a = date("Y/m/d", mktime(0.0.0. $m+$b, $d, $y));
929 ◆.jC7ANgFY. :04/11/20 15:49:00 ID:???
>>927 strtotimeは便利だよ。だから
$a = strtotime('2004/11/25 + 3 Month');
とかも書ける。"for($i=0;$i<20;$i++);"ぐらいの時間かかるけど。

下ので様子を見てみるといい
echo date('Y/m/d', strtotime('2004/11/25 + 3 Month'));
930nobodyさん:04/11/20 15:58:54 ID:mKhjN6bd
サーバでスクリプトとしてphpを利用したいのですが
何もせずに戻り値だけ0を返すような物はどう書いたらいいでしょうか?
これkだえだとどうもダメだったので、教えてください。

#!/usr/bin/php
<?
?>

931nobodyさん:04/11/20 16:06:16 ID:???
は? 何もしないならHTMLで良いやん
932nobodyさん:04/11/20 16:10:58 ID:???
>>930
return 0; でいいのかな?何に対する戻り値か分からん。。
OSへ返す終了ステータスならexitとか。
933nobodyさん:04/11/20 16:11:55 ID:???
単にechoだけつかって
それをfileで他の鯖から読み込んで中継にしてる香具師は俺くらいか
934nobodyさん:04/11/20 17:01:04 ID:???
>>930
これ以上PHPユーザの質を下げないでくれ。
935nobodyさん:04/11/20 17:10:44 ID:???
質の高いPHPユーザーはこんなトコ来ん
936nobodyさん:04/11/20 17:36:08 ID:???
普通のユーザももう逃げてる
937nobodyさん:04/11/20 17:44:26 ID:???
>>874
一日200万回程度回るカウンタでも壊れた事はないので、まぁそれなりなのではないかと思う。
938nobodyさん:04/11/20 17:57:03 ID:???
俺のクリスマスの予定が決定
↓レス番1桁目     ↓時刻の秒1桁目
1 妹の前で       1 愛を叫ぶ
2 自分の部屋で    2 「ごきげんよう お姉さま」と言う
3 体育倉庫で      3 一人で手淫
4 姉の前でに      4 美少女とSEXする
5 地元の小学校で   5 運命の美少女と出会う
6 クリスマスに      6 首吊り
7 親の前で        7 掘られる
8 トイレで        8 谷亮子でオナニー
9 好きな子の前で   9 練炭で自殺
0 2ちゃんねるで    0 2ちゃんねる引退
939nobodyさん:04/11/20 17:58:28 ID:???
>>874
「PHPのFLOCK」の意図するところがわからない
940nobodyさん:04/11/20 18:17:46 ID:???
>>912からXSS対策ができてないと言い切れるおまえらは天才ですね
プログラマーはだから馬鹿にされるんですよ
941nobodyさん:04/11/20 18:29:57 ID:???
>>940
当たってたから良いんじゃね?w

確かに>>912だけじゃxss対策してるかはわからん罠。
942nobodyさん:04/11/20 18:44:51 ID:???
>>912
あれだけしか出してこなくて『これで大丈夫ですかね?』って聞いてるんだから対策してないと考えるのが妥当でしょ。
だってaddslashesとかやってたらそのコードも書くっしょ。
943nobodyさん:04/11/20 19:08:46 ID:???
>>922
>>924
これ、本当に成功します?
いろいろ試してみたけどmysql_queryに2文入れられないみたいだし・・、シングルクォーテーションをエスケープしてたら絶対無理そうだし
944nobodyさん:04/11/20 19:15:04 ID:???
>>939
PHP のソースコード内の信頼性を言ってるんじゃないか?
C言語でファイルシステムの fcntl(UNIX) か LockFileEx(Win32) を呼んでるルーチンがあるところ。
945nobodyさん:04/11/20 21:22:29 ID:???
算数より読解ヤバイ
946nobodyさん:04/11/20 21:24:51 ID:???
>>943
>シングルクォーテーションをエスケープしてたら絶対無理そうだし
912のソースからそういう想定をするのは無意味。
出された情報が少ないんだから、一般論で答えるしかないだろ。
少なくとも書いてないことまで補って妄想するよりまし。
今回は912にも思い当たることがあったみたいだからいいじゃんよ。
947nobodyさん:04/11/20 23:00:29 ID:???
>>946
int型でシングルクォーテーションつかってない部分でもできませんでした。
912のソースのような部分が私のスクリプトにもあって、それで本当にどうなのか知りたかったのです。
自分のスクリプトでいろいろ試したのですが抜け穴なかなか見つけられなくて
948nobodyさん:04/11/20 23:03:55 ID:???
>>947
対策してるんならOK 対策してないんならダメ

何が対策になるのかわからないのは問題外
949nobodyさん:04/11/20 23:06:18 ID:???
content 云々でページを転送させる記述が思い出せない。
だれかおしえてくり
950nobodyさん:04/11/20 23:08:27 ID:???
>>947
まあ確かに、どこまでやれば大丈夫かということに不安になる気持ちも分かる。
とりあえず下記のURLでも読んで、じっくり考えてみて。
ttp://www.ipa.go.jp/security/awareness/vendor/programming/a01_02_main.html
951nobodyさん:04/11/20 23:17:11 ID:???
>>949
移動しろ

△▲ WebProg 初心者の質問 Part10 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1095633323/
952nobodyさん:04/11/20 23:23:05 ID:???
>>949
htmlの話なら web制作板へ
953949:04/11/20 23:26:25 ID:???
php上での記述の仕方が知りてーんだよ
954nobodyさん:04/11/20 23:26:53 ID:???
移動しろ。
955nobodyさん:04/11/21 02:52:46 ID:???
phpで構築されてるサイトで、
phpinfo(); の内容がすぐにわかってしまうのは
セキュリティ上、まずくはないんでしょうか?
956nobodyさん:04/11/21 02:56:28 ID:???
>>955
phpinfo()の内容はphp.iniで制御できるよ。
957nobodyさん:04/11/21 05:41:12 ID:???
phpinfo()が使えないように設定してあっても、php.iniやhttpd.confが
perlで作ったスクリプトで覗けてしまう無料レンタルサーバはよくあるな。
958nobodyさん:04/11/21 08:53:49 ID:???
結局自作のphpinfo()関数作ればどうにでもなりそうな気もする
959nobodyさん:04/11/21 13:01:17 ID:mw841Fe0
教えてください

RedHat9
PHP4
にmime_magic_moduleが
入っている環境なのですが、

 以下のソースの中で、mime-type: text/htmlのときに表示させるように
したいのですが、具体的なmime_magicの使い方がわからず困っています。

具体的にどうすればよいのかお教えください。

$cd = $_REQUEST['path'];
$dirname = "/home/hoge/public_html$cd/";
$dh = dir($dirname);
while ($entry = $dh->read()){
  if($entry != "index.html"){
    print $entry;
  }
}

よろしくお願いいたします。
960nobodyさん:04/11/21 17:11:10 ID:???
>>955
PHPは初心者向けだからセキュリティよりもまずは利便性なんだよ
961nobodyさん:04/11/21 17:17:27 ID:???
そう言う問題なのか…?w
962nobodyさん:04/11/21 17:54:26 ID:???
>>955
どの項目だ
963nobodyさん:04/11/21 18:19:45 ID:???
>>960
まぁ確かにブラウザにエラー出力するスクリプトが多いし
セキュリティよりも利便性ってのもある気もするな
964nobodyさん:04/11/21 19:58:14 ID:???
大量に行があるテキストファイルから目的の行を探し当て取得するのに
もっとも効率のいい方法ってどんな感じですか?
whileで回しながら一行ずつチェックするのは
最後のほうに目的の行があった場合、時間がかかって困ってます。
データベース使わずになんとかならないでしょうか。
965nobodyさん:04/11/21 20:10:43 ID:???
インデックスをつけるとか?
名前ならaから始まるのはここ、bから始まるのはここという情報を記憶するみたいな
966nobodyさん:04/11/21 20:14:35 ID:???
データ次第。リニアサーチが不安定なら他のも試せ
967959:04/11/21 21:53:54 ID:mw841Fe0
 すいません、なにとぞmime_magicの使い方をお教え願えないでしょうか?
maime_magic以外にも、ファイルの形式を判断できる方法があれば、
そちらも教えていただきたいのですが、よろしくお願いします。

うざくて申し訳ないです。
968nobodyさん:04/11/21 22:10:00 ID:???
>>967
Mimetype関数
969nobodyさん:04/11/21 23:48:46 ID:???
"ソ"という文字をフォームを使って入力されると
データの中身が「ソ\」になってしまいます。
なので「ソ\」の後ろから「\」をとりたいのですが
上手に正規表現を組めません。
パターン構文のサイトを見て試行錯誤したのですが上手にできません。

どのようにすればいいか教えてください。

foreach ($src_list as $i => $v)
$v = ereg_replace ("ソ\\\", "ソ\", $v);
970nobodyさん:04/11/21 23:52:50 ID:???
>969
それはエスケープされているわけだが「ー」「表」なども同様の副作用が生じる。
エスケープと逆の事をする関数を使え。
971nobodyさん:04/11/21 23:55:03 ID:???
ありがとうございます。
その\と逆の事をする関数を探します。ラジャ
972nobodyさん:04/11/21 23:57:06 ID:???
>>969
.htaccessに「php_flag magic_quotes_gpc Off」って書いとけば無問題
そして必要なところでは自分でエスケープすればいい
973nobodyさん:04/11/21 23:58:43 ID:???
みつけました>逆の事をする関数
stripslashes

>>972
ありがとうございます。
是非やってみます
974nobodyさん:04/11/22 00:57:12 ID:ui2dUAYs
質問です。
文字列"a1"から$a1を作り出す(読み出す)ことってできるのでしょうか。
JavaScriptやVBAなら文字列→変数に変換できるので、PHPでも同じことが
できるだろうと調べてみたものの見つからず。。
よろしくお願いします。
975nobodyさん:04/11/22 01:11:21 ID:???
>>974
可変変数のことでしょうか?

$a["sample"] = "ほげほげ";
$name = "sample";

echo $a[$name];

−−−−−−−−−
出力結果:
ほげほげ
976nobodyさん:04/11/22 01:11:30 ID:???
>>974
$a1= 'hoge';
$str='a1';
echo ${$str};
977nobodyさん:04/11/22 01:18:51 ID:???
>>975 >>976
即レスありがとうございます!関数も使わずこんな簡単にできるんですね・・・
いやお恥ずかしい・・・。ありがとうございました。 <(_ _)>


978nobodyさん:04/11/22 01:21:05 ID:???
>985は単なる連想配列のような気がする
979nobodyさん:04/11/22 01:40:45 ID:???
>>985
ウィットの聞いたレスで楽しませて欲しい。
980nobodyさん:04/11/22 01:41:27 ID:???
>>985
高まる緊張
981nobodyさん:04/11/22 01:54:57 ID:???
>>985
これは何かの暗示か・・・
982nobodyさん:04/11/22 02:15:03 ID:???
>>985
そう来たか・・・
983nobodyさん:04/11/22 02:31:50 ID:???
>>985
……!!
984nobodyさん:04/11/22 02:43:04 ID:???
>>985
このままDAT落ちしたりして・・・
985nobodyさん:04/11/22 02:49:41 ID:???
         │ト、l、 /´, '`⌒'´ `ヽ: : .
          ヾヽ!lV/ / ,/ /  ,' ハ、: .
       ,ィニ≧ゝレ' / /  ,./   / , ハ : : .
      く<-‐7´ _」] l l/_,∠/   / / / い : : .
        ̄ノ/: :f r'l l /レ'/、_/‐ト'、/l| li l : : : : .
      . : {ハ : :|{(l|y==ミ   _ノ、/ソリ ll | : : : : :
      : : : :ヽヽ: :|、lハl、゙      ⌒ヾlノリ ll l : : : : : :
      : : : : : : : : V\ヽ、 `ー  ゛ノルんイリノ : : : : : :
      : : : : : : : : : ,.--、_ハ`−r=ニ--、′ノ. : : : : : : :
      : : : : : : : : /  /-ョロ'ヲ´   i l : : : : : : : : : :
      : : : : : : : 〈  ,ハフ'兀「     ! } : : : : : : : : :
      : : : : : : : : ヽ,   ト{‐lハ. ヽ ' ノ : : : : : : : :
986nobodyさん:04/11/22 02:52:12 ID:???









                あーあ・・・・

                        _,,..,,,,_
                       ./ ゚ 3  `ヽーっ
                       l ゚ ll ⊃ ⌒_つ
                       `'ー---‐'''''"
987nobodyさん:04/11/22 03:20:31 ID:???
>>978

>>985は連想配列ではなく動的配列のような気がす
988nobodyさん:04/11/22 05:17:54 ID:???
>>987
ボクは妄想配列だと思います
989nobodyさん:04/11/22 10:57:48 ID:???
>>990
おまえも、なんとか想配列って言えよ。
990nobodyさん:04/11/22 10:59:02 ID:???
心臓配列 はい次
991nobodyさん:04/11/22 12:07:22 ID:5v0Qpc9v
オブジェクトのコンストラクタで、引数が不正だったとかでエラーを返したいときは、
どうするのがよいのでしょう。
通常の関数でエラー発生時は、falseを返すようにしてたのですが、
コンストラクタで、 return false とやっても、
普通にオブジェクトができてしまうみたいで。
992991:04/11/22 12:09:01 ID:???
書くの忘れました。PHP4です。
993nobodyさん:04/11/22 12:09:19 ID:???
ぼくはじめてぴーえいちぴーべんきょうするんだけど
ぼくでもわかるほんがあったらおしえてちょーだい*^^*
994nobodyさん:04/11/22 12:12:24 ID:???
>>993
ありません。
995nobodyさん:04/11/22 12:38:40 ID:???
>>991
どうすれば「良い」かはわかりませんが、
・オブジェクトを呼び出す前にチェックする
・引数をチェックする関数を実装して、コンストラクタから呼び出す
くらいでしょうか。
996nobodyさん:04/11/22 14:24:59 ID:???
>>991
・コンストラクタは空にして、別に初期化用のメンバ関数を追加する
class A {
 function A() {}
 function init(...) { return /*初期化*/; }
}
$a = new A();
if (!$a->init()) { ... }

・エラーチェック用のメンバ変数とエラーチェック用のメンバ関数を追加する
class A {
 var $err = 0;
 function A(...) { if (!/*初期化*/){ $this->err = /*エラー番号など*/; } }
 function get_error() { return $this->err; }
}
$a = new A(...);
if ($a->get_error() != 0) { ... }

・こういうのが嫌なら、PHP5に移行して例外処理で。
997991:04/11/22 14:39:17 ID:???
>>995-996
ありがと。

でも、ちょっと違うような気がする。

別方面で、$this = false;
ってやればいいと知ったので、それでいくことにします。
ほんとは、PEARのエラーオブジェクトを返すといいそうです。
998nobodyさん:04/11/22 15:16:31 ID:???
PHPよりJavaのほうが勉強になる?
999nobodyさん:04/11/22 15:18:06 ID:???
>>998
うん
1000nobodyさん:04/11/22 15:19:05 ID:???
>>998
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。