前スレ最後に質問したものです。 キチンと入ってました・・・すみません
6 :
nobodyさん :04/11/01 11:33:35 ID:ddZqjuW7
Gifファイルが動画Gifであるか確認する方法はないでしょうか? PHP Version 4.3.9です 関係ないかもしれませんが、画像処理の GD Version 2.0 or higher っていうのも入っています よろしくお願いいたします
すみません、一点質問があります。
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
よろしくお願いします。
12 :
7 :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コードで書かれています。
x-men
>>12 一応、php.iniのmbstringの項もチェックしてみ。
phpinfo()で設定内容が表示されるし。
15 :
10 :04/11/01 12:20:48 ID:???
何でhttpd.confなんか見てんだ? 鯖のレスポンス拾えばはっきりする話だよ
最初に出てきた"/"の前とそれ以降を分離したくて 以下のように書きました。 ereg("^([^/]*)/?(.*)$",$i,$regs) これがfalseになる事ってあります? また、もっとスマートな書き方ってありますか?
17 :
nobodyさん :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); }
>>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); //「内容」の書込み
}
}
>>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>
>>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>
長すぎて読む気がしねえ
丸投げすんじゃねーよぼけが!!!誰も答えなくていいんで宜しく^^
>7 headerで文字コード指定すれ。
丸投げするなカス、さっさと氏ね
>>16 URLの解析なら
parse_url()
パスの解析なら
basename() dirname()
お前まだ張り付いてたのか
30 :
7 :04/11/01 13:36:25 ID:???
>>14 php.ini の mbstring 確認しましたが、
EUC-JPになっていました。
>>10 HTTPのプロキシサーバを立てて、
やりとりしているHTTPの内容を確認したんですが、
リダイレクトの時だけ Charset のヘッダが出ていませんでした。
(かといってShift_JISと書いてあったわけではないです)
結局のところ、リダイレクト先のHTMLを修正しなおしたところ、
なぜか正常にいくようになりました。
おかしい箇所が5文字の全角テキストに断定できたんですが、
そこを見ても特に問題ない普通の文字でした。
(一つ一つコメントアウトとテストを繰り返してたどり着きました)
なぞです。
PHPが甘やかしすぎるからこういう馬鹿が絶えない
>>31 自分の無能さをPHPのせいにするとは良い度胸だな。
取り敢えず、無能はオナってろ。
>>30 charset のヘッダーが出ていないと言うことは、そのおかしいと思われる全角テキストで
文字コードを判別しようとして失敗したんだな。
適当な解決法→htmlの先頭にEUCらしいw文字をコメントで入れておく
ちゃんとした方法→
>>23 のいうとおりにする
>>33 > charset のヘッダーが出ていないと言うことは、そのおかしいと思われる全角テキストで
> 文字コードを判別しようとして失敗した
あいかわらず無能レスが続くなこのスレ。
>>31 ,34
このスレじゃ最近PHPの質問少ないw
他のスレが多少救われてるだろ。
>>34 どんなに煽ろうとお前の丸投げ質問には誰も答えないわけで(プゲラ
それくらいの働きはないとな
ワラタ
>>40 某スレと同じように駄目質問と素人回答を観察するスレですが、何か?
もう顔真っ赤で必死です
丸投げっていうとCSVがどうとかってやつか。
>>31 たしかにperlならこの勘違いは起こらなかっただろうが、、。
PHPのせいとか言い出すとタマゴとニワトリじゃないの。
>>25 それだ!!THX!
>>24 ,27
参考になりました。
「最初の"/"」で区切るのがポイントなんで、
今回は>25が最適みたいです。
なんか温度差の激しいスッドレだな
>>24 改造じゃなくて丸投げスレのほうがよくね?
小泉総理のまねしてもだめだよ。もう時代遅れなんだから。まるなげ
教えてやってもいいけど。教えてもいい?
>>51 もったいぶらずにおながいしますm(_ _)m
ワラタ
>>52 教えてあげるよ。
例えばテーブルを bbs にして id 名前 発言内容 のカラム作って
単にMySQLで接続して記録していけばいいんでないか?そんだけ
丸投げだったら他スレあったよな。いってみ。
これで終わったか?
PHP固有の質問なんてあるの? どこかと絶対共有してない?
なら、てきとうに。 //------------------------------------------------------------ // ここからが主処理 //------------------------------------------------------------ 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]; }
ほれこれも てきとう 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 ;
ググったら、結構出てきたよ CSV方式→MySQL
水掛け論が楽しい人もいることに配慮してくれないと。
水掛けようか?
水掛け論を楽しみたいなら、そのようなスレ立てて そこで1人でやってくれ
67 :
カポコン :04/11/01 16:04:58 ID:???
,,,,,,,,, (´ω`)cm < ミ タ ナ 〜 ♪ ノ( )ノ ☆ブリ ..ノ__)) / ||| £: −☆ブリ ー ̄ ̄ーーーーーーーーーーーーーーーー
>65 その発現自体も水掛け論なんだが。
水掛けようか?
70 :
nobodyさん :04/11/01 16:30:50 ID:3x+bX1j+
file_get_contentsでURLを開く場合、 タイムアウト処理はどのように働きますか? 1. タイムアウトするまでの時間(デフォルト) 2. タイムアウトするまでの時間の設定変更方法 が知りたいです。
あいうえお眉幅というのもあったな
>>73 どこかと絶対共有してない?
> 絶対どこかと共有してない?
だろ
>>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;
}
?>
サーバ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 です。何か初歩的なところを見落としてるでしょうか……?
>>77 「絶対共有」で区切るわけじゃないことを示したんじゃないか?
お前は発想のレベルが変わらんなあ
>>78 PHP4とPHP5は基本的に別物と考えた方がよい。
そのスクリプト5の方で動かしたときに何かエラー出てないか?
>>73 と
>>74 ,79 のどっちが真正の天然なのか。
それが問題だということじゃないだろうか。
>>82 池沼の溜まり場に漬かってる癖に何を言ってるんだか。
また「動きません」かよ
テンプレないのに何でこう同じようなレスが出来るんだろうなw
>>80 斬新な釣りでも思いついたら教えてくれ
>>84 プッ
それってコピペだろ。
長文書き込んで頭いいように見せかけたつもりだろうけど、
空気読んでないからバレバレなんだよ
ゲラゲラ
「上手くいきません」と双璧でつね。つーか回答も質問も釣りなのか真性なのか区別つかな過ぎだよ。こまるよ。
87 :
nobodyさん :04/11/01 19:55:29 ID:Qp2szwoV
, -,:' / ̄) i{'r‐-、 `ヽ、 . _...,,o‐y ,:'- '⌒ ⌒ヽ. `ヽ' , (o( ,' / / 、 `ヾ. ヾ, ,:'´//7,' ,' .,' ,:' ! } i !', ':, ':, ゙:, ,' / ,' {l. ! {/ ,イ / }| !|', !. ', ', ゙, ハ〃 ! !| | | ∠/ ,:'-ノ} /リ l ,ム. ! } |! ハヽ、ゝ!| l | ,:',;='ィ'、'´ ,'.ノ ノ.,;lノ=、l .,' ,' ,' ノ { l l ', |'ヲi(_ノ.} ´ i(ノ.}゙!ノ,:',:''´ ', h. ', ',゙、 ':゙゙_.ノ. ':゙_ノ〃ン ':, { ',', ':,':, 丶 ,' l .} ヾ ':,':, ':ヾ、._ 「´/ ,' | .,' / ̄ ̄ ̄ ̄ ̄ ̄ `ヾ-、`ヽ_ `´ _,.ィリ.ノ ,' < 絶対大丈夫だよ! リ';',ヾ| ` ‐┬ ´ _ノノ,'/ \______ ヾ,、-- 、 _ | ´ノ' f ヾ、..___ ヽ、 ー‐'' /_......_ \
89 :
nobodyさん :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なんか使うぐれーなら自分で組め。
PEARの詳しい説明してるHPがない
93 :
78 :04/11/02 03:03:28 ID:???
>81 エラーはでません。 $_SERVER['PHP_SELF']で同じスクリプトに戻ってくるようにして、 $_FILESの存在で動作を切り替えてあるので、 最初と同じフォームが表示されるだけです。 エラーメッセージか何か出るほうがまだ対処のしようもありそうなものですが、 $_FILES["userfile"]自体が設定されてこないってのは……
>>93 変数の内容をechoしてPHP4とPHP5で同じになってるか
一つ一つ確認していくしかないような気がする。
>>93 $_FILES["userfile"]['error']にエラーコード入ってないですか。
96 :
78 :04/11/02 10:33:53 ID:???
>94 >95 連想配列$_FILES自体が存在していないんです。 じゃあPOSTできてないのか?というとそうではなくて、 $_POSTと$_RESPONSEにMAX_FILE_SIZEが入ってます。 phpinfo()のPHP Variablesにリストされないという勢いなので、 間違えて上書きしているとかそういうケアレスミスでも無いと思うのですが……
>>96 あとは、通信内容を直接覗く位かな?
クライアントが何を投げてサーバーが何を受け取っているのか。
98 :
nobodyさん :04/11/02 12:11:45 ID:IRAW9bdb
arrayの中に「文字列+数字("./abcd/001.txt","./bcde/002.txt")」で出来ているファイル名が入っています。 これを数字部分でsortするにはどうしたらいいですか? sort_numericと言うのをやってみたのですがうまく行きませんでした。 PHP4.3.3です。お願いします。
>>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";
}
?>
100 :
98 :04/11/02 12:41:54 ID:???
>>99 ありがとうございました!!
かんぱきにできました!
お前等、このままじゃあ ショタ好き=キモイ、痛い、厨房と思われても致し方ないぞ。 版権でショタがいる作品はただでさえ ショタ好きどもが他の迷惑も顧みず大暴れ、結局そのキャラの話をしないのは 暗黙の了解という流れに一度はなり。 ショタ好きと他の萌え嗜好がぶつかり合う場所でも ショタ好きどもが他の迷惑も顧みず大暴れ、という流れに一度はなるというのに。
ちょっと聞きたいんだけど、こういうのってどうやって作ってるの?
http://fileman.n1e.jp/TOP.php たぶん PHP でやってると思うんだが。
アップロードした動画を即座に Flash に落としたり、
左下に著作権表示させたり。かなりスゴイ。
こういうのって Ming でできるのかなぁって疑問。
あとは裏でプログラム動かすしかないんだが。詳細キボン。
ショタはつみみ
Warning: Shotakon Error! Shotakon Error!! Line:
>>101
>>102 かなり君の解析は見当違い。
ほぼFlashの機能で実現してるだけ。
1)動画を即座にFlashに落とす(落とすってのがまず間違いだが。
動画再生用Flashを作成。
Flashに動画のパスをつけたURLを生成すれば完成。(***.swf?file=***.mpg)
2)著作権表示
動画再生用Flashに組み込んでるだけ。
>>105 ソースを見ても、パスを渡してる雰囲気はないんだが。
それに、Flash は動画ファイルをパスで読み込めない。
107 :
102 :04/11/02 13:10:03 ID:???
>>105 変換するという意味で落とすって使っただけ。
>動画再生用Flashに組み込んでるだけ。
そんな簡単なもんじゃないだろう。
Flashのままでも見れるな。ただ読み込んでるだけってことはなさそう
最初のローディング画面とボタンは共通で 後は動画を画像に分解したのが並んでいるだけですね 画像分解と音声分解ができればそれをFlashにするのは簡単
じゃあ 画像分解+音声分解 → exec Flash化 → Ming ってことか。
4フレーム分と5フレームのテンプレだけFlashで作っておけば5フレーム以降は Soundとjpegのバイナリデータ、その容量、ID番号の置換を繰り返すだけでいいからMingもいらないよ
むずかしいですなあ
113 :
78 :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:○ お手上げです……
>>113 一応念のため
Apacheの再起動はした?
115 :
78 :04/11/02 15:27:56 ID:???
>114 もちろんやってます。 phpinfo()の表示でOffからOnに変わったのを確認もしています。
FORMタグにenctype="multipart/form-data"はつけてる?
117 :
78 :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>
118 :
78 :04/11/02 16:17:30 ID:???
使用ブラウザ書き忘れました。いずれも挙動変わらずです。 Netscape7.1 Mozilla Firefox 1.0RC Internet Explorer 6.0.2800
119 :
nobodyさん :04/11/02 16:31:40 ID:09F3GGP8
めちゃめちゃ頭の悪い質問しますが、
ttp://xxx/xxx.php?xxx のように.phpの後に?xxxとつけるためにはどうすればいいのですか?
htmlのページから飛んだときとかに?以降をつけたいのです
静止画をflashに読み込むのって簡単なの? やってみたひと詳細教えて。
〃∩ ∧_∧
⊂⌒( ´・ω・)く
>>122 にはマニュアルがお似合い
`ヽ_っ⌒/⌒c
124 :
122 :04/11/02 17:50:20 ID:???
〃∩ ∧_∧ ⊂⌒( TεT;) 読んでも分からん。 `ヽ_っ⌒/⌒c
あぼーん
〃∩ ∧_∧ ⊂⌒( ・∀・) おまえも氏ね `ヽ_っ⌒/⌒c
128 :
nobodyさん :04/11/02 21:41:19 ID:QiT/le0d
お世話になっています。 phpの中にインナーフレームを埋め込みそこへhtmlを読み込んで、 targetで中身を書き換えるようにしているのですが、 インナーフレームの中のhtmlファイルが変わったときに そのhtmlファイルが存在するディレクトリ名を取得して、 そこまでのルートをリンクとして、表示させたいのですが、 手法がわからず困っています。 なにとぞ、お知恵をお貸しください。 また、こういうことを解説しているHPや、ヒントになりそうなHPの 情報もいただければと思います・ よろしくお願いいたします。
>>128 >そこまでの"ルートをリンクとして、表示"させたいのですが、
"ルートをリンクとして、表示"というのが、具体的にどういうことなのか分からないのですが。
「どこに」表示するのも聞かなくていいのかな
>>117 $_FILES['userfile']['name']は空でも
$_FILES['userfile']['error']はsetされてるかもよ
>133 $_FILES 自体が無いみたいよ?
135 :
78 :04/11/03 14:43:14 ID:???
>134 そうです。セットされていたらコメントアウトしてある phpinfo()の時点でリストされるはずですよね。
Fedora 2か。
>>135 単純にファイルアップロード自体が無効になってるということはないよね?
140 :
128 :04/11/03 16:35:49 ID:lSNB2eWk
もうそのくらいじゃ驚かないよ
142 :
131 :04/11/03 16:48:43 ID:lSNB2eWk
ああ俺もだ。jpgは基本だよな。
144 :
131 :04/11/03 16:53:04 ID:lSNB2eWk
function &getcurrentd() ^^この&ってどういう利点があるの?
>>144 <a href="〜.html" target="main">iframe内書き換え その1</a>
のように静的ファイル(html)を呼び出そうとしているなら無理だよ。
そこにPHPの介在する余地は無い。
サンプルが無いので したいらしい事を適当に想像するに、
iframeを含むページ自体を毎回書き直す方法が良いと思われ。
>>146 気にしたら負けと思われ
148 :
131 :04/11/03 17:24:29 ID:lSNB2eWk
>147 ご指摘のとおりです。htmlを呼び出しているだけです。 iframeを含むページ自体を書き換えるとするとどのような 処理が必要になるのでしょうか? リンク先をクリックした情報を取得して、index.phpを書き換えるということでしょうか? クリックしたということを取得するにはセッション情報が必要になるのでしょうか? やりたいことはわかるのですが、何が必要で、どう処理すればよいのかわからず困っています。 どうそ、お知恵をお貸しください。 よろしくお願いいたします。
149 :
131 :04/11/03 17:30:02 ID:lSNB2eWk
>146 実は、わかっていないです。 サンプル等見ながら作成していたので、そのまま利用しています。 ディレクトリ名をメニューにして、iframe内のhtmlまでのディレクトリの階層 を「index >> 階層1 >>階層2」と表示できればページの管理が楽になるなと 思い作成を始めました。だったら、xmlで書けといわれそうなのですが、それだと、 かなり時間がかかると思い、できる限り簡単に短時間に作成できるように考えました。 自分の知識から考えると、これがベターかなと思って作成しています。
そんなあなたにpukiwikiでtopicpathプラグイン
>>149 動的にやる意味がない気がする。
ファイル数が不定期に増減して、ファイル名もランダムに変わるというなら意味ありそうだけど
ファイル数は一定でファイル名も固定なのであれば、何かスクリプトを書いてそれを使って
静的なhtmlを書いてしまえば、いいと思う。
んで、ファイル数が著しく増えたらもう一回スクリプトを走らせる、と。
単にHPの管理が楽になるってんじゃないの?
つまり、Wikiみたいなの作ろうとしてんのか。 俺もやったことあるけど、151の言う通りだと思う。
いや、激しく違うと思うのだがw
155 :
131 :04/11/03 18:14:10 ID:lSNB2eWk
>151 ディレクトリも、htmlファイルもランダムに変わります。 >152 の言う通りHPの管理を楽にするためです。 >153 どういう手法なのかお教え願えないでしょうか? お願いいたします。
156 :
131 :04/11/03 19:11:19 ID:lSNB2eWk
>154 何を激しく思うのでしょうか???
変数に入っている複数行のテキストから一行目だけ抜き出したいのですが、 $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; こんな風になってしまいました。。 もっとスマートに書く方法はありませんか?
$testに複数行あるとして(LF改行ね) list($result) = explode("\n",$test);
159 :
131 :04/11/03 21:26:46 ID:lSNB2eWk
index.phpのiframeをincludeにしてして、仮にiframe.phpとして、 index.phpのリンク先をどこか別のところに書き出し、 さらに、index.phpを再度読みiframe.php内に書き換えたiframe.phpを 書き出せばよいのでしょうか? こうするには、何が必要になるのでしょうか? クリック情報を得るには何が必要でしょうか?
うぜーな iframeとかいってる時点でスレ違いなんだよ
すいません、もう小一時間悩んでるんですが、 1回 addslashes して投稿した本文は 2回 addslashes した検索キーじゃないと同じようにマッチしないんですか? データは MySQL に入れているのですが……。
>>157 list($result) = explode("\n", $text, 2);
>>161 MySQLだったら addslashes じゃなくて mysql_escape_string を使えよ
未だに mysql_escape_string と addslashed の効果の違いが分からないので教えてください……
166 :
161 :04/11/04 05:37:04 ID:???
回答ありがとうございます。
>>163 何回も試しましたが、やはり>161のようになってしまいます。
これは常識なのでしょうか……できれば何故そうなるのかも理解したいです。
>>164 試したところ、やはり結果は同じでした。
>>166 magic_quartがONになってない?
漢字、全角ひらがな、全角カタカナをマッチングしたいんですが、 範囲を教えてください mb_ereg使って正規表現すればいい?
169 :
161 :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 側の問題のような気がしてきました……。
>>162 おまいlist理解してるか?
いや、それでも動くけどさ
174 :
170 :04/11/04 10:12:37 ID:???
頼むからマニュアル読んで発言してくれ
>>170 >>174 プッ。。。頭悪すぎ。。。w
Hint
1)array explode()
2)要望者は$resultに1行目のデータを入れたい。
explodeで2個に分けてるのにlistが1個だけなら意味がないと思う list($result, $test) = explode("\n", $text, 2); なら分かるけど
こんにちはー 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認証部分をコメントすると、問題なく動作します。 よろしくお願いします。
178 :
176 :04/11/04 10:37:55 ID:???
間違えてるし list($result, $text) = explode("\n", $text, 2); $resultが1行目$textは2行目以降の残りの部分になる。
>>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スレの方で聞いてみます。
失礼しました。
なんか必死な奴が混ざってるが笑えるな。 マニュアル読むまでも無いと思うが。 list($result, ) = explode("\n", $text, 2); こんな書き方もある。 それぞれに変数を用意してやる必要はない。
183 :
nobodyさん :04/11/04 13:18:10 ID:XSGSYvoF
送られたメールのsubjectをそのまま本文に載せて返したいのですが、 MIMEの文字列をJISに変換するにはどうしたらよいでしょうか
ああやればいいじゃん!
185 :
183 :04/11/04 13:28:05 ID:???
そうですね^^解決しました^^
>>183 取りあえずマニュアルの mail 関数の項に目をとおしては?
どなたかお知恵をお貸しください。
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);
宛先を各個人にするにはやっぱりループさせるしかないですよね。
これがすさまじく処理に時間がかかるんです。
大量メールの場合や、添付ファイルをつけた場合、
これではサーバーが持たないですかね・・・
宛先に各個人を表示するプログラムってやっぱきついんですかね?
ループさせないで送る方法も考えつかないですし・・・
どなたかよい知恵があれば教えてください。
188 :
170 :04/11/04 19:22:30 ID:???
>>175 とりあえず、動かすぐらいしてみたらどうだ?
ちゃんと1行目だけ入るから
>>187 自分でプロトコル接続プログラムを作成して送信していくのがいいと思う。
サーバーは持つけど長くなるけどね。
うまくPHPを同時に複数走らせたりすればサーバーに適したスピードでの
送信も可能です。そのときは複数送信をしないような方法を考えましょう。
>>187 mail関数使わずに、qmail-queueに投げて処理してる。
リモートにしかMTAが無いなら、
>>189 の言うようにSMTP話すようにして、
1通毎にコネクション切らないようにしてやれば若干マシ。
ところで、間違っても共有サーバで動かそうと思って無いだろな?
>>187 俺も興味ある話だから便乗させて。
mail関数使わずに、popen()でパイプオープンして内容を投げればええのかな?
何かよいサンプルソースがあればと思い探してるのだが。。
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できる方法があればご教授お願い致します。 よろしくお願いします。 #くだ質の方に間違って書いてしまいました。ごめんなさい。
>>192 header("Content-Disposition: attachment; filename=\"test.wmv\"");
ならどぉよ。
196 :
192 :04/11/04 22:35:49 ID:???
>>193 できました。本当にありがとうございました。
197 :
nobodyさん :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を付けたいのですがなんか良い方法ないでしょうか?
>>197 それはHTMLのお話。
<option 〜 selected>のselectedの部分を ”自分で” 出力すればよい。
他のフォーム要素についても同じ。
199 :
197 :04/11/05 00:54:35 ID:FgI15ehK
>>198 selectedをつければいいということは解ってるのです。
mysql_fetch_arrayで拾い出してくる値のうち、
既に入力された情報のoptionにだけwhileループのなかで
いかにして自動的にselectedをつけるかで悩んでるのです。
200 :
nobodyさん :04/11/05 00:58:36 ID:onIpwNyM
perlのサブルーチンに該当するのってphpでは何でしょうか?
>>200 perlのsubはphpではfunction
∩___∩ |
| ノ\ ,_ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ (
>>200 )
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
\ " / | |
\ / ̄ ̄ ̄ /
>>199 pearにそういうこともできるパッケージがあるけど、
selectedを付ける程度だったらarray_mapかなんかで実装した方がいいかも知れない。
204 :
nobodyさん :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でマルチバイトストリングが扱えるようにオプションを つけています.)
>>204 /usr/sbin/sendmail はSMTPサーバじゃない、コマンドだよ。
>>204 > SMTPサーバにメールが送られていないようです
メル鯖のログを見た?
> エラーメッセージが一切出てこないこともあって
mb_send_mail はbooleanを返すけど、それはどうなってるの?
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_; ?> てな感じで読み出したい・・・ 変数の中に命令文を入れたら 動かないのは分かるのですが どうすれば出来るのかわかりません (´・ω・`)ショボーン 初心者ですいませんがお教えい下さい。
208 :
nobodyさん :04/11/05 06:32:47 ID:puzbyGUU
今日の寝巻きは赤でした 今日の寝巻きは黄でした 今日の寝巻きは緑でした っというような文章があり、 色の部分だけ取り出して変数に入れるにはどうすればよいのでしょうか 入門書の正規表現のところを見ても英語の例しかなくうまくいきません
echo str_replace(array('今日の寝巻きは','でした'), '', '今日の寝巻きは赤でした');
foreach($a as $b) { if ($b==$c) { array_merge($a,$d[$c]); ここで現在のforeachループを破棄して、 もう一度最初から$aの評価をしたいのです。 ($dの内容によっては無限ループに陥る 可能性があるのは目をつぶるとして) どう書けば良いでしょうか。
$a = reset( $a );
miss reset( $a );
>>210 do {
foreach ($a as $b) {
if ($b==$c) {
array_merge($a, $d[$c]):
break;
} // endif
} // endforeach
} while(TRUE)
かな?
このままだと常に無限ループだが、
中のforeachから抜けるには break 2; を使えばいい
214 :
nobodyさん :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です。
216 :
214 :04/11/05 11:34:45 ID:???
218 :
212 :04/11/05 11:52:41 ID:???
すまん。かなり嘘教えてた。 while( list( $key, $b ) = each( $a ) ) { if( $b == $c ) { array_merge( $a, $d[$c] ); reset( $a ); } } で、どうだろう。
なんと break 2;でネスト2個抜けれるのか・・便利だ
220 :
204 :04/11/05 12:22:22 ID:ipfVcK1A
>>206 メール鯖のログは昨日みましたが,やはり何ものこっていませんでした.
mb_send_mailがbooleanを返すということでしたので、今試して見たところ,false
が返ってきています.
phpinfo()をすると,mbstringはenableで,sendmail_pathもちゃんと設定されています.
falseが返る原因として他に何が考えられるでしょうか?
>>218 うん。(笑)
試してみたら、resetではforeachはresetされなかった。
>218ならいけそうな予感。
でもいささか古めかしい書き方なのは、仕方ないかな。
無限ループ前提でbreak2で抜けるのとどちらが良いかは、
好みが分かれる所かな?
>>191 >mail関数使わずに、popen()でパイプオープンして内容を投げればええのかな?
そんな感じ。厳密には使ってるのはproc-open()だったり、オリジナルのqmail-queue
ではなかったりしてるけど。後は単純にqmail関係の話だから、そっちの資料(本もあるし)
を当たった方が良いよ。
1を4回echoしたいんだけど while(4){echo "1";} これではあかんのかな?
式( 4 ) が真である間 echo "1" を繰り返す、という文だね
$i = 0; while($i++ < 4){echo "1";}
おお!そうするのか! 225を参考にforを使ったやつも考えてみた for($i=0;$i<4;$i++){echo "1";} うーん、いろいろ出来るね。サンクス>224-225
( ゚Д゚)ポカーン
これが噂のVB厨かな?
229 :
nobodyさん :04/11/05 14:47:25 ID:onIpwNyM
classとかfunctionって使ったほうがスクリプト自体はサクサクになる んでしょうか?原理的には変わらん気がしますが。 それとも構造が分かりやすくて編集しやすいって利点のみ? 初心者なんでこれらを使わない方が作りやすいんですが・・・
一生初心者で終わる気なら気にしなくていいよ
>229 どっちもどっち。 作りやすいほうをどうぞ。
>>229 なんとなくfunction使うとちょっと遅くなってclass使うともっと遅くなる、ような気がする。
今じゃ、PCの性能UPしてるからソンナニ変わらん class使うのは、再利用したい為と 共同開発するときに他人にも分かりやすくする為 どっちにしろ、初心者には関係ない
保守性・生産性を無視するならfunctionもclassもいらないなぁ。 しかし、使わないと吐き気が出るプログラムが出来そうだがw
PHP-5.0.2にPDFlib-Lite-6.0.0p1.tar.gzをいれようと思ってるんですが PDFLib-Liteを入れた後、PHPを再コンパイルする際に、 --with-pdflib=/usr/localをつけたにもかかわらず、 インストールされないってどういうことでしょうか教えてください。 ちなみに、PHP-4.3.Xでは同じ方法でインストールできたと思います。
二度とそのファイルは開きたくないだろうな
>>235 PHP5に対応しているとはどこにも書いてないようですが?
使うな危険とも書いてないけど。
>>229 OOPできなくても、構造化プログラミングぐらいしてないと、
趣味プログラムでも後で泣くよ。
保守できなくて。
色々と工夫してclassとかfunctionとか作ってると、
新しいプログラムを作るときに
新たに書くコード量が減ってきていい感じになる。
functionとかclass使えば、
普通はパフォーマンス落ちるよ。
そのパフォーマンスの落ちが問題なのかどうかってのも、
普通は検討事項。
職業プログラムなら、悩むまでもなくパフォーマンス落ちを取る。
# そもそも気にするほど遅くならない
239 :
nobodyさん :04/11/05 15:55:45 ID:VQSnf7DD
PHPからSQLのデータをCSVファイルとしてダウンロードさせたいのですが この時に列幅等指定できないのでしょうか?
>>239 列幅を扱えるようなCSVファイルなら、そのフォーマットにそって出力すればよい。
ただ、MS-ExcelのCSV出力のように列幅データを持たないものもある。
PHPのsession_start()ってクッキー使ってるんですか?
使う場合と使わない場合がある。
最近phpを勉強し始めました。 書籍買って、カウンターのコードサンプルみてふと思ったのですが、 perlの場合、lockしてるのをよくみかけますが、 phpではlockする必要ないのですか?
糞サンプル(初心者に分かりやすいように書いてる)だからロックしてないだけだと思われ。 ロックはしないとぶっ壊れるよ。
>>243 そういう糞スクリプト俺でさえ作らないのに…
どこの出版社よ?この際晒してみてよ。
入門書にまともなコードを書くやつはいない。 なぜなら、まともなコードを書くと入門書では紙面が足りないコードになるから。 一例を挙げれば入力のサニタイジングだって必須だけど省かれるし…・。 文字コードの色々な問題についても省くよね。 初心者になんでもかんでも説明するのは事実上不可能。 しかし、説明の無いコードが大量にあったら糞入門書だ。 つまり、入門書は雰囲気のみ。 実際に使えるコードなど無い。
247 :
nobodyさん :04/11/05 19:41:36 ID:QUoZnGJq
array_search で0番めの配列がヒットした場合、 ヒットしなかった時の値(false=0)が返って来ますよね? みなさんはどうやって切り分けていますか?
249 :
241 :04/11/05 20:50:01 ID:???
早速session_start()試してみたんですが、 クッキーオフにしたら機能しなかった・・・。 セキュリティリスク高いからできるだけクッキーは 使いたくなかったんですが、これはしょうがないのかな? 初歩的な質問スマソ
マニュアル。
>>249 勘違いしてるようだが、クッキーを使った方がセキュリティリスクが低いぞ。
もちろん、secureフラグを使用した場合だが。
252 :
241 :04/11/05 21:06:23 ID:???
了解、一個だけ質問ヨロシコ。 クッキーを使う場合についての注意点として、 ・unsetを忘れない ・時間設定しておく ・パスワードなんかの重要情報は暗号化しておく くらいしか思いつかないんだが、やばいですか?
253 :
241 :04/11/05 21:08:19 ID:???
>>251 secureフラグ、初耳でした。
SSL利用しないとクッキーはかなーり危険でしか?
セキュリティを考えるとセッションはCookie使うべき。
255 :
241 :04/11/05 21:10:24 ID:???
必須としてないから何でしょう?
257 :
241 :04/11/05 21:13:44 ID:???
クッキーはGET使ってデータやり取りするより危険と思ってマスタ orz
CookieにはセッションIDだけを埋め込むのが普通。
259 :
241 :04/11/05 21:23:22 ID:???
おもっきりパスワードをCookieに埋め込んでましたが何か? 勉強しなおしてきます。ありがとうございました。
まあ暗号化してやり取りするならそれでもいいと思うが
Cookieに限らず、通信路を暗号化しておかないと全てにおいて危険はつきまとう. 無線LAN環境でパケットスニッフしてみると良く分かる.
まあ扱うデータにもよるが
>>239 ,240
列幅を扱えるCSVってどんなんだろう。。。
264 :
191 :04/11/05 22:03:04 ID:???
>>222 遅レスだけどサンクス。
popen()使ってたけどproc-open()なんてのもあるんだ。
知らなかった。。
値Aが値Bの倍数であった場合を真、そうでない場合を偽と判定するコードってどう書けば? A%Bで出てきた値が1以上の整数だった場合を真とすれば出来そうだけど整数である事の判定の仕方が分かりません。 教えて下さい。
is_int
便乗だが、 COOKEI OFFにして session_start(); print $PHPSESSID; しても $PHPSESSIDが表示されないぽ。 なぜぽ? COOKEI ONなら 正しく表示されるのに なぜぽ?
クッケーキターーーーーーーーーー!!!!!!!!!!!
>>265 まず A >= B でなければ偽
さもなくば A == B なら1倍で真
さもなくばBと等しいか大きくなるまでAを足していって
ちょっきりBと等しくなれば真
残りは偽
>>267 session_start();
$PHPSESSID = session_id();
print $PHPSESSID;
じゃないの?
まちがえた まず A >= B でなければ偽 さもなくば A == B なら1倍で真 さもなくば初期値0に対してAと等しいか大きくなるまでBを足していってちょっきりAと等しくなれば真 残りは偽
273 :
272 :04/11/05 22:46:23 ID:???
!A%B でもいいのか。
>>267 session.use_trans_sid を 1 にしれ.
もしくは自分でリンクに全部 <?=SID?> をつけれ.
話はそれからだ.
276 :
nobodyさん :04/11/06 07:02:58 ID:T75+ILHO
Windows上で動作しているPHPで、ミリ秒かマイクロ秒単位のsleep()をする方法はないでしょうか? usleep()はWindows上だと動かないので(-_-)ウツ
277 :
187 :04/11/06 12:04:59 ID:???
>>189 >>190 >>191 アドバイスどうもです。
そんな感じの方法で少しがんばってみます。
共有サーバーでこんな思い処理やばいのは百も承知でっす。
でも、使うのは自分じゃないから何とも言えないけども。
1通毎にコネクション切らないで行う方法など、
とりあえずなんかしらで少しでも処理軽くする方法考えます。
popen()ついてですが、自分もなんかしらのソース探してみます。
道のりは長いですね・・・
スパムの提供か?
279 :
nobodyさん :04/11/06 12:19:48 ID:BQGFb7uF
なぜにスパムに! そんなことするソフトだったら作らずともいくらでもあるような。 今回はデータ管理でせっかくアドレスもあるからメール送る機能も追加しといてってだけ。 作ってればあれもこれもと欲がでてくるみたい。 きりがないからこっちはお疲れモード。
280 :
nobodyさん :04/11/06 12:23:30 ID:veEoJvKd
$ls = `ls /home/abc`; ってのをユーザabcから使ってみたんですが、 ls: `/home/abc': Permission denied apacheのエラーログにというエラーが表示され、 結果を取得することができません。 perl-suEXECのときはこれでいけたんですが、 PHPってどういった権限で動いてるんでしょうか? 解決方法はありますか? 宜しくお願いします。
> 共有サーバーでこんな思い処理やばいのは百も承知でっす。 > でも、使うのは自分じゃないから何とも言えないけども。 こういう馬鹿のお陰で、今までいくつも便利なサービスが停止されていった。 自鯖でやれ、屑。
>>280 Apacheのモジュールで動いていれば実行はapache(wwwとかnobodyとか)になる。
PHPをCGI(suExec)で動かせばよい
283 :
280 :04/11/06 12:41:02 ID:???
>>282 なるほど、サンクスです。
ちなみにsudoで apacheにlsの権限を与えるのは危険過ぎですか?
危険過ぎっぽいですが。
284 :
191 :04/11/06 12:42:54 ID:???
>>281 便乗させてもらってる俺が言うのも何だが、激しく同意
285 :
280 :04/11/06 12:44:31 ID:???
スマソ。1つ追加質問です。 phpをCGIとして動作させるとモッサリするってのは よく聞きますが、このモッサリするってのは 「動作が重くなる」に加えて、「負荷が高くなる」も含みますでしょうか? 当初、perlの方が作りやすかったんですが、 phpの方が負荷が低いからいいかなと思ってたんですが。
286 :
nobodyさん :04/11/06 12:58:34 ID:BQGFb7uF
>>281 >>284 ちょっと書き方が悪かったです。すいません。
今あれやこれやと検討中です。
もちろん自分としては、こんな重いもの共有サーバーでやりたくありません。
そのことについては何度も何度も説明しています。
もしそれでも相手話を飲んでくれないのでしたら、
一回の処理での上限数を決めるなりして、
処理が大きくなりすぎないようにこちらでするつもりです。
少しでもサーバーの処理を低減したいと言うことと、
上限を決めるにも一回の処理で多くこなせるに超したことはないので、
今回質問いたした次第です。
いくらなんでも、サーバーが悲鳴を上げるようなもの作るつもりはありませんので・・・
いろいろとすいませんでした。
>>277 ああ、じゃあ提示した案はどれも多分無理だぜ。
>>286 全部他人のせいにしてるみたいだが、共有サーバしか使えない発注元って何だ?
ある特定phpの実行時のエラーを画面に出さないようにするには どうすればよいのでしょうか? php.iniのdisplay_errorsを変更すると他のphpにも影響がでるので Onのままです。
>>289 エラーが出ないように書けばいいだけじゃね?
>>289 関数で制御できるよ
error_reporting
292 :
nobodyさん :04/11/06 16:37:25 ID:RH6kTyyV
文字のコード番号を取得する方法ってありますか? 例えば'a'なら97(0x61)などです。
294 :
nobodyさん :04/11/06 16:52:00 ID:RH6kTyyV
解決しました
295 :
nobodyさん :04/11/06 16:53:58 ID:RH6kTyyV
>>293 良く解らなかったのでマルチバイトまで対応させたり色々しました。
文字→数字というのは式では出来なかったので
bin2hex($src);
を使いました。
こっちは16進数ですが、16進数が使いたかったので丁度よかったです。
他に方法があるならば教えてください。
お願いします。
296 :
289 :04/11/06 17:44:18 ID:???
>>291 ありがとうございます。
無事できました。
298 :
nobodyさん :04/11/07 00:28:11 ID:559ttViC
mb_send_mailがSMTPに実際にアクセスしているときにどのような
やり取りをしているのでしょうか?
もしくは,それが書いてあるような仕様書とかってありますか?
別にプログラムを作成してstdinからmb_send_mailの送信内容を読むと読めるのですが,To:
[email protected] の1行しか読めなかったり,ヘッダ全部を読めたりと動作がまちまちでよくわからないのですが.
299 :
272 :04/11/07 00:30:25 ID:???
つーか反応返せや。 教え損だわ、ホンマ。
>>298 ソース見れば一目瞭然。
仕様に関しては、
mb_send_mail
| (使用しているSMTPサーバのマニュアル参照。メル鯖プログラムに依存)
MTA(phpが話すメル鯖)
| (RFC参照。番号忘れた)
外部MTA
>>299 まぁその程度教えたぐらいで煮えるな。
もっとぐたぐた説明して反応返さないやつなんぞアホほどいる。
>>299 代わりに反応しておくとそのコードじゃ倍数判定は出来ない上、empty関数のコールは全くの無駄
これがやぶへびか
つか、普通に!A%Bだろ わざわざempty持ってきて何がしたいんだ しかも条件式1個答えただけでそこまで偉そうにされてもな
>>298 マニュアルにも書いてある通りメール送信部分はmail()のラッパ。
mail()は普通にsendmail(もしくは互換のもの)に対してpopenして
パラメータを出力してるだけ。これはSMTPを話してる訳ではないよ
(Win32の場合は異なる。さっき見たらNetWareも違うな)
mail.c読んでごらん。mb_send_mailから追うならmbstring.cも。
307 :
nobodyさん :04/11/07 03:49:37 ID:tqDkdxs2
プロトタイプ宣言の類って無いん?
308 :
nobodyさん :04/11/07 05:05:37 ID:mIUFi7Zu
>>307 PHP6で実装されます。お楽しみに・・・
実装されるまでずっと言われるよなコレ
はっきり言うわよ!!
311 :
292 :04/11/07 10:25:36 ID:SeAJAIhj
>>297 あんまり慣れてないので話すと長くなりますが。
Apacheサーバーでphpを動かしています。
phpで直リンクのURLを作成したかったのです。
私はWindowsを使っているので
[Shift_JIS]→[UTF-8]
にする必要がありました。
さらにそれぞれ一文字ずつを16進数で分割して数字の前に%をつける必要もあったのです。
数字(10進数)でなくても良かったので、
むしろこれでよかったと思います。
312 :
nobodyさん :04/11/07 10:41:56 ID:ff0yHRS4
有難う御座いました。
>>308 前に自作関数がくるんは好きじゃないので
自作関数は別ファイルにしてincludeしてますが、
常に別ファイルを読みに行ってしまうわけですから、
この部分がボトルネックになったりしますか?
下手の考え休むに似たり 取らぬ狸の皮算用
>>311 URLエンコード用の関数はUTF-8だとダメなのかな?
>>312 ファイルの読込なんて構文解析に比べたら
速いか遅いかはわかりません
類が友をよびまくってまたまたネタだらけだな
317 :
292 :04/11/07 13:34:02 ID:SeAJAIhj
>>314 urlencode
こんな関数があったんですね。
ありがとうございます。
318 :
292 :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
>>318 mbstring使えないサーバだとmbstringエミュレータ使うといいですよ
php4と思わしきコードを自鯖のphp5で試してみたら Notice: Undefined index: command in C:〜 と出る。そこを調べてみたら、どうやら$_POST['command'] $_POSTで送られてきてるのが全てNoticeになってるみたい。 PHPのマニュアルを見ても、ググってもイマイチ分かりません。 Noticeを出さないように改善する方法はありませんか?
げ、$_POST['command']使えなくなるのかな・・
>>316 ↑
すぐにこんな人ワラワラ
湧いてくるよね。。。
>>320 error_reporting( error_reporting() ^ E_NOTICE );
で表示上はNOTICEは出なくなるが根本的な解決ではない
$_POST を var_dump OR print_r して中身を確かめてみれば?
324 :
280 :04/11/07 21:35:35 ID:IUwmjDQr
色々な理由により.cgiとしての利用は難しいのが現状っぽいです。
>>282 以外に解決方法はないでしょうか?
lsコマンドの部分だけ他のスクリプトで書けば?
>>320 ハァ?
定義されて無いんだからNoticeはあたり前だろが
何今更いってんだ?
327 :
280 :04/11/07 22:22:21 ID:???
328 :
nobodyさん :04/11/07 22:27:07 ID:ZgNgeUkw
$hogehoge=1; include(aaa.php); ------------------ aaa.php print $hogehoge; ------------------ このスクリプト動かしたとき、 1って表示されますか?それともnullでしょうか? チェックしたいのですが、現在phpが動作しない状況でして 確認することができません。教えてくだせぇ
>>329 1って表示されるはず。
前にfor文の中で$i使ってたときあって、文の始めにinclude_onceで読み込んだ先のファイル内でも$i使ってたりして
ハマったことあるなぁ・・・。
まさかスコープが同じとは思わなかったよ。
文字列の分割です。例えば"*"を区切り記号として、 例1."abc" は "abc"と""(又はNULL) 例2."abc*" は "abc"と"*" 例3."abc*def" は "abc"と"*def" explodeだと、"abc"と"def"になってしまいます。 また、例1と例2の区別が出来ません。 どうするのが一番スマートでしょうか?
>>332 $str = "abc*";
$ret = explode('*', $str, 2);
if (count($ret) == 2) $ret[2] or $ret[2] = '*';
else $ret[2] = NULL;
>>332 訂正です。添字ミス。$strを元に$retに結果が返ります。
$str = "abc*";
$ret = explode('*', $str, 2);
if (count($ret) == 2) $ret[1] or $ret[1] = '*';
else $ret[1] = NULL;
>>334 ありがと。
でも、ifとか無しに
ならんかと考え中。
>>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));
337 :
336 :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));
アップロードした画像をGDでサムネイル作成するページを作成しています。 透過GIFの場合を考え、ImageColorTransparent を使用するつもりです。 新しく定義した背景色を指定する方法 ( ImageColorAllocate ) は見つかりましたが、 アップロードされた透過GIFに元々定義されている透過色を判断出来る方法はあるのでしょうか?
>>320 とりあえず、$_POSTを、$_REQUESTに変える。
そもそも、commandをPOSTで送ってない。ってんなら。
array_key_exists()をかます。
>>336 ,337
ありがと。>336の方がいいみたい。
マンモス本P.322を見ているのだが、
なんで>336の書き方で、区切り文字の
"*"が配列に残っているのか、不思議。
341 :
320 :04/11/08 01:10:50 ID:???
>>323 >>339 ありがと。あと、dumpで表示してみたら、NULLでした。
緊急措置としてif (array_key_exists("command", $_POST)){
かましてみました。上手く行きました。THX
342 :
320 :04/11/08 01:20:50 ID:???
何か <input name=command type=hidden value="hogehoge"> で得てるみたい。
>>339 俺毎回issetかましてるが、そんな関数もあったのか
なぁPHPの連想配列はハッシュだぞ、、
Array_key_existsは配列処理関数の完全性のためにあるんです。
array_key_exists より isset の方が短くて好きよ。
347 :
320 :04/11/08 04:15:58 ID:???
switch($_POST['command'])で判定してるから issetつかえねー(´・ω・`) $_POSTの初期化ってどうするの?ヽ(`Д´)ノ
>>347 ( ;´・ω・`)人(´・ω・`; )
>>347 switch(isset($_POST['command']) ? $_POST['command'] : FALSE)
ボンクラ質問者が多くなってきたな
>>350 あまり高度な質問されても解答できないだろ?
君にあわせてくれているんだよ。感謝しなきゃ。
なるほどな。
354 :
nobodyさん :04/11/08 11:10:56 ID:pYeS35cG
教えてください。 PHPを使ってアップロードしたときに ファイルサイズが制限を越えるファイルをアップすると サーバ側でファイルサイズや名前が取得できないだけでなく 他の項目(<input type="text" など)のデータ も設定されなくなるのですが こういうものなのでしょうか?
大根とか無理でしょ。 それじゃあ制限の必要ないじゃん。 無理かどうか確認しないと。
356 :
nobodyさん :04/11/08 11:58:24 ID:vBQdFfe4
ネットショップ運営者です。 格安商材なので頻繁な銀行振り込み確認が非常にコストとなっています。 自動確認スクリプトみたいなのが作れたらいいなと思うのですが、 可能でしょうか?銀行から如何に振込み名義を取得するかが ネックですが。
微妙にスレ違いかもしれませんが、質問します。 サーバのphp.iniの設定をhtaccessで変更できると 聞いたのですがやり方がよく分かりません。 ググってみても参考サイトが探せなくて。。 何か参考になるサイトをご存じないでしょうか?
359 :
354 :04/11/08 12:14:21 ID:???
>>355 大根?
とりあえず無理ってことですよね
>>356 ショップ経営してるなら普通ファックスサービスかメールサービス使わないか?
362 :
nobodyさん :04/11/08 15:47:12 ID:e4TPxf3I
php5のコンストラクタ、 なんで__constructに変わったんだろ? __destructに合わせたかっただけ?
もとから__construct()
366 :
365 :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>"; } は出さずに行いたいです。
>>365 なんか良く分からんが、DNSの話なら板違いだな。
つーか @ を使おうとするなんて変態だな
>>367 認証要求されてないからブラウザが不要なユーザ名を削除してるだけ。
DNSはカンケーない。
俺も一流の釣り師目指してがんがるよ。
>>365 ドメインの前につける@の意味は知ってるのか?
@はクライアント依存だからなぁ・・・
>>374 出来る出来ない以前にIEは修正パッチのどれかを当てると出来なくなるのが問題になったのだが、
またIEか。。。。
別にこれに関してはIEが悪いわけじゃないけどなw
なるほど・・・・完全にクライアント依存ですか。 どのブラウザでも(携帯も含む)。と思っているので流石に無理そうですね・・・。 現在、MacのIE5でチェックしています。
携帯は全滅の筈。
そういやいつの間にかIEで使えなくなってたな
URI に user, password を含める形式は RFC で規定されている。 それが HTTP プロトコルの場合は BASIC 認証に置き換えている。 FTP の場合は USER, PASS でログインが実行される。 URI はあくまでリソースの位置を示す情報だからそれが常にそのままサーバに渡される訳ではない、ということ
phpから.cgiをincludeして利用したいのですが、 コードが表示されてしまい、正しく表示されません。 .cgi単体では正しく動作しています。 どうすればいいでしょうか?宜しくお願いします。
384 :
nobodyさん :04/11/08 21:17:31 ID:vBQdFfe4
ag
>>383 まさかローカルのファイルを指定してないよなぁ・・・
386 :
sage :04/11/08 21:34:35 ID:lTLj8kGr
>>385 いや・・・さすがにそこまでは・・・
ちゃんとHTTPでリクエストしていますよ。
同じサーバ内でリクエストしてもダメなんでしょうか?
execするとうまく動作してるのですが。
宜しくお願いします。
387 :
383 :04/11/08 21:42:25 ID:???
ローカル指定してますた orz
ありがとう。でもなぜにローカルじゃダメポ?
>>386 俺の書き込みを乗っ取ってどうしようと・・・w
388 :
329 :04/11/08 21:50:04 ID:???
>>330 表示されねーっす。
表示させる方法ないっすかね?
>>387 なんで、って…単純にファイル読み込んでるだけになるからCGIが処理されるわけ無い
CGIファイルをブラウザにD&Dしても処理結果表示されないでしょ?
>>388 >>329 の通りなら表示されるはずだが…
> include(aaa.php); これ変じゃね?
391 :
386 :04/11/08 22:05:38 ID:lTLj8kGr
392 :
329 :04/11/08 22:21:58 ID:???
すんません、表示されました。 でもこれ、include "***.cgi"; じゃ効果ないっすね。当たり前かな? 上手くPHPからperlに引数渡せる方法見っけたと思ったら だめぽでしたな。うわーん
>>392 file_get_contentsでURL渡すしかないかも
includeは単純にファイルを挿入するだけぽ
PHPで、HTTPヘッダと一緒に送信したエンティティ部分を取得するには どうしたらいいんでしょうか?
395 :
329 :04/11/08 22:34:41 ID:???
>>393 thanks, but muripo-desita.
>>395 perlは結果を標準出力してphpで受け取ったあとPHPで出力・・・じゃだめか
例 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.
?>
398 :
329 :04/11/08 23:09:43 ID:???
>>396-397 ありがとうございます。
.cgi(perl)にもこの方法で変数を渡すことができました。
実は渡したい変数というのがID/パスワードになるんですが、
セキュリティ的にどうだと思いますか?
includeしてるからブラウザのアドレス欄に残ることはなさそうですが・・・。
>>398 セキュリティ的にはむしろ危険な方法だよ
仕組みを考えれば分かる
PHPからperlに変数送るのってどうやってやるんだっけ?
文字列から特定の文字を削除する関数おしえてくださいませ 1時間ぐぐりまわったが、chopとかしか見つからなかったです
str_replace
$str = "あくあだあらあねあえあ質あ問あはあ他あスあレあであ"; str_replace("あ","",$str);
>>404 strtrとかで空文字と置換してやるんじゃダメなのか?
>>235 > ちなみに、PHP-4.3.Xでは同じ方法でインストールできたと思います。
これ本当?
readme.txt にはそんなこと書いていないようですが。
ところで、PDFlib-lite-6.0.0p1.tar.gzは普通に configure と make しても
libpdf_php.so が作成されないんだけど、どうやるのですかね?
それらしいオプションもなさそうですが。
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
だけでも自動的にインストールされるかもしれない。
文中の'\'を¥に変換したいのですが、単純に↓のようにやると、 SJISの時にソや表や十が文字化けしてしまいます。 str_replace("\\", '¥', 'ソラソラ表十け\けけ'); mb関数なら大丈夫かと思い↓なんてやってみたんですが、 mb_ereg_replace("\\\\", '¥', 'ソラソラ表十け\けけ'); str_replaceと同様の結果になりました。 どうすれば正しく'\'だけを置換できるでしょうか?
>>409 ありがとうございます。が、PHP4.3.9でPDFlib-lite-6.0.0p1を使いたいのです。
readme.txtをみると PHP APIのバージョンが合ってないとだめと書いてあるようですね。
./configure --with-pdflib=/usr/local; make;ではmake時にエラーが出ます(Fedora core2)
PHP5に移行するかな‥
412 :
410 :04/11/09 10:27:13 ID:???
ありゃ、変換後の文字列は &yen;(半角)です。
>>410 mb_regex_encoding() あたりかな?
マルチバイト文字列関数のマニュアルをよく嫁。
¥
415 :
410 :04/11/09 10:57:43 ID:???
>>413 ありがとうございました。
事前にマニュアルを確認したところマニュアルには以下のように書いてあり
> 文字エンコーディングとしては、内部エンコーディングまたは mb_regex_encoding()で指定した文字エンコーディン グが使用されます。
内部エンコーディングにSJIS指定してたと思ったのですが、
どうやらそうなっていなかったようです。
mb_regex_encoding("SJIS");
を置換の前に指定することにより解決しました。
ありがとうございます。
416 :
409 :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
でも大丈夫みたい。
>>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からきれいに入れ直してみます。
>>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 を指定するとかしてみるとうまくいくかもしれない。
>>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 はありません。
なにかいろいろ問題があるようです。
頭を冷やしてもう一度ドキュメント類を見直してみます。
420 :
nobodyさん :04/11/09 18:04:30 ID:i/oj7Egh
すみませんが教えてください。 過去ログ読んでいると「内部エンコーディング」って言葉が よく出てくるんですが、いったい何なのでしょうか?
>>419 PDFLib-LiteはGDが必須ってだけだから、
PHPのソースのextをリンクすれば良いんじゃない?
>>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 をインストールするときはヘッダファイルのインストール
してくれると楽なんだけど。
(´-`).。oO(FPDFじゃダメなんだろうか?)
Perlのtr(文字単位での置き換え)みたいなのありますか? $tmp =~ tr{123}{ABC} 123をABCに置き換えるんじゃなく、 1 -> A 2 -> B 3 -> C のように文字単位で置き換えられる処理です。 10203 -> A0B0C
>426 配列で指定する
>>426 echo strtr('10203', '123', 'ABC');
>>427 正規表現使うなら
>>427 の言うとおり。
正規表現を必要としないならstrtr()という関数が便利
430 :
426 :04/11/09 20:45:21 ID:???
皆さんありがとうございます。
>>428 さん
strtr関数に気付きませんでした。もっと良くマニュアル読みます。
>>429 さん
複雑な条件はなく、ただ単純に例みたいに置き換えるだけだから
>>428 さんので
大丈夫でした。
>>427 さん
こんな感じで書いてみたんですけどうまくいきませんでしたorz
echo preg_replace( "/[123]/", "[ABC]", "10203" );
[ABC]0[ABC]0[ABC] になってしまいました。
431 :
426 :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 );
?>
432 :
429 :04/11/09 21:07:44 ID:???
7秒差でかぶった
433 :
431 :04/11/09 21:43:40 ID:???
>>432 さん
助かりました。ありがとうございました。
434 :
nobodyさん :04/11/09 21:53:17 ID:bn3NZRnm
クラス書く時点では、 継承するかどうかは分からないから、 とりあえずprotectedにしておけば問題ないですか? 逆にprivateにしておけばいいプロパティーって どういうものがあるのでしょうか?
435 :
400 :04/11/09 21:57:20 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
となってしまいます。完全ランダム表示にするのは
どうすればいいでしょうか?
>>436 > srand( (double)microtime()*1000000 );
これ、意味分かるか?
>>436 srandだけrequireする側でやれ
1.436のソースからsrand部分を↓の場所に移動さす
2.残りをrand.phpとする
<?php
srand((double)microtime()*1000000);
require 'rand.php';
require 'rand.php';
?>
初めまして。
早速質問です。
$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」に書きこまれてしまいます。
どこが間違っているのでしょうか?
ご指摘お願いします。
DBへパスワード(会員の)を入れる場合はMD5で暗号化しますが、 ユーザがパスワードを忘れた場合、DB上のデータは暗号化されています。 どうやってパスワードをゲットするのでしょうか。
>>440 MD5ハッシュがどういうものか理解してれば、
>どうやってパスワードをゲットするのでしょうか
なんて思わない。運用上で新規のパスワードを管理者が登録して、
あとでユーザの好きなように再設定させる。
>>441 さんどうもです。
>なんて思わない。運用上で新規のパスワードを管理者が登録して、
>あとでユーザの好きなように再設定させる。
ユーザが再設定したPASSは管理者は関与しないんですか?
ユーザが設定したPASSをユーザが忘れた場合はどうするんでしょうか。
忘れた場合はリマインダで適当なパスワードをメアドに送信
>>423 ,424
できました。やっと…。
結局 PHP4.3.9 のソースのext/gd ディレクトリの中身を /usr/local/include/php/ext/gd
へコピーしてビルドする方法で上手くいきました。
しかし、pear install pdflibだけで上手くいく環境ってなんでしょうか?
参考までに教えていただけませんか。
>>425 pdf_fit_textlineという関数が非常に便利なのですよ。
>>442 >>441 を繰り返す。
つか、生パスワードがどうしても必要だと思えるなら、照合用のハッシュ以外に
管理用として、セキュリティレベルの高いところに生パスワード保存しといたら?
「どうしても必要だと思う」運用や根拠を熟考すべきだと思うが。
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
を加えたんですが、ちっとも変わりません。どなたかアドバイスいただけると助かります。
>>447 なぜ、output_buffering = On にしない?
>>439 urlrawencode() OR urlencode()
自動で出力バッファかけても一階層深くなるだけだからじゃねーの
451 :
429 :04/11/10 04:45:07 ID:???
>>433 律儀やね
>>436 srand()の意味が分かってないのでマニュアルを読んだ方が良い。
あと、今回のようなケースではshuffle()使った方が楽。
ランダムで吐き出す数が決まってるなら、array_rand()でも良い。
>>439 urlencode()
>>440 暗号化には2種類あって、複合化できるものとそうでないものがある。
md5()は後者。
そもそも、複合化できるなら暗号化する意味がない。
452 :
429 :04/11/10 04:46:27 ID:???
ゴメン。 最新レス取得せずに書き込みしてしまいたくさんカブってしまった。
×複合化 ○復号
複合化だってよ...ださっ
455 :
416 :04/11/10 08:36:32 ID:???
>>444 PHP のソースに含まれている GD を組み込んでいない場合は GD のヘッダは
要求されないので pear install pdflib で成功する。
または、
http://www.boutell.com/gd/ の GD をインストールしている場合はそちらの方のヘッダを使用できるよう
なので、pear コマンドでも成功すると思う。
>そもそも、複合化できるなら暗号化する意味がない。 頭悪そう・・・・
459 :
444 :04/11/10 09:54:01 ID:???
>>455 なるほど。JpGraphもよく利用するので gd は迷わず有効にしてました。
l今回は勉強になりました。どうもありがとうございました。
ちなみに pdf_fit_textline 関数はlite版では動かなかった・・・・
ライセンス買えってかorz
軍事通信で暗号化するのも「意味がない」らしい(藁
blowfishとかショボーンだな。
軍事ってまだ秘密鍵なのか?
教えて下さい
HTML>
body>
ココからヤフー
<?
readfile("
ttp://www.yahoo.co.jp ");
?>
/BODY>
/HTML>
上のように自分ページに他のアドレスのページをくっつけたいのですが
readfile関数を使うと相対URLで書かれていたリンクや画像が自分のURLになってしまうので
404エラーや画像が正しく出ません
絶対URLに直す方法を教えて下さい
あとreadfileで指定したURLがCGIなどで自動的にジャンプするときにはそのジャンプ先のアドレスを読み込み表示するようですが
ジャンプ先のURLの取得方法を教えて下さい
優しいかたおしえてください
著作権違反です。
>>464 > 絶対URLに直す方法を教えて下さい
正規表現で書き換え。この時点でreadfileで済ますのは難しくなるな。
> ジャンプ先のURLの取得方法を教えて下さい
HTTPヘッダのLocation: URL や HTMLヘッダのmeta refresh を使う場合がほとんどだから、
両方を自分で処理すればよい。
難易度がかなりアップしてるなぁ。人のページを取り込むなんてセコいことせずに
リンクだけ貼っておけばええやん<a href="〜">だけで済むぞ。良かったな!
>>464 <base href= >を使えばいい
犯罪幇助乙
ついにタイーホ者が・・・
472 :
464 :04/11/10 18:31:53 ID:???
ジャンプ先のURLの取得方法はどうすればいいですか? やさしい人おしえてください
>>467 絶対パスで書かれていたら無効。
やはり、ソース引っ張ってきてリンク部分を正規表現で変換していく方法となるだろう。
enctype が multipart/form-data で送信されるデータを php://input などで読み取ることはできないでしょうか?
>>475 _、_ そろそろ自分で確かめてるだろうから、
( ,_ノ` )y━・~~~ 試した結果を教えてもらおうか
>>472 ジャンプ先ってリダイレクト先のこと?
ヘッダにリダイレクトがあればそこに飛ばす。
それ系の説明したページは腐るほどあるからググれ。
時々リダイレクト先を相対パスで指す場合があるので、その辺注意。
478 :
272 :04/11/10 21:23:43 ID:???
pdfを読みたいんですがどうしたらいいですか。 出力する方法ならよく記事になってるんですが・・ ちなみにテキストだけでいいんです。
>>478 PHPは素人だけど・・・。
pdftotext(とか言う奴だったと思うけど)使ってtxtファイルに変換して読めば?
お返事ありがとうございます。
>>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
このようにしてみたのですが、上手く出来ません。
どこが間違っているのでしょうか?お願いします。
481 :
nobodyさん :04/11/10 23:55:25 ID:MdRF7bmL
誤って'/usr/local/lib/php/'以下を削除してしまいました。 再インストールしてみても復活できませんでした。 実際の操作としては php-4.3.9/ で make install を行いました。 どのようにすれば復旧できるでしょうか。
482 :
433 :04/11/11 00:21:33 ID:???
>>451 さん
ありがとうございます。
おかげさまで順調です。
>>480 $aaa = $ok の時点で必ず $aaa は "
http:// " になり if 文は必ず true になり意味が無い
$aaa == $ok だとしても "
http:// " と比較するだけであり、リンクとなるのが <a href="
http:// " title="....."> しか有り得ない
なにがやりたいのかよくわからないが とりあえず上記の間違いは直しとけ……
484 :
481 :04/11/11 02:17:33 ID:???
自己レス /usr/local/lib/phpディレクトリを削除して再インストールしたら復活しました。
485 :
nobodyさん :04/11/11 03:32:26 ID:KRI/ACvq
system("platex test.tex"); とやってもうんともすんとも言ってくれません。 system("dir"); とかは普通に動くのですが。 なにかオマジナイがいるのでしょうか?
>485 なんでエラー処理をしないんですか? なんで絶対パス・相対パスを考慮しないんですか?
488 :
nobodyさん :04/11/11 05:59:46 ID:5oF+gWxQ
オブジェクトのプロパティーの初期値は NULLで固定ですか? わざわざNULLで初期値設定をしているプログラムをあまり見ないのですが…
489 :
nobodyさん :04/11/11 07:51:51 ID:SAqbK5N3
490 :
nobodyさん :04/11/11 11:37:55 ID:ilzje3xZ
$fp = FOpen("
http://www 〜hoge.com","r");
とかやったあとに、そのURLから帰ってくる、html文を読むには普通のFgetSでいいんでしょうか?
まずは自分でやってから、ここに報告汁
>FOpen >FgetS キモイヨ
FGetSにならないのが不思議w
>FOpen >FgetS これって何言語の流儀?
495 :
nobodyさん :04/11/11 13:17:25 ID:nmdKIJIz
フォートラン
>>490 べつにいいけどさ、fgets()使うならポインタのオープンはfsockopen()でやった方が
タイムアウト処理とか楽だ。
497 :
490 :04/11/11 15:28:36 ID:ilzje3xZ
>491 しました。 FgetSで取ってきたら、ぬるぽでした >494 オレオレ流
へ?PHPで Null Pointer Extensionが出るわけねーじゃん
499 :
nobodyさん :04/11/11 15:42:36 ID:ilzje3xZ
>498 かき方悪くてすまんですね echo FgetS($fp,512); しても表示されませんでした。 PHPだとなんていうんだい? 何もとって来れ無かったっていったほうがいいのかね? 厳密な定義のな言葉がわからないんで、気に触ったらすいませんね
Null Pointer Exceptionなら知ってるが Null Pointer Extensionって何?
>>499 他の部分でもエラーハンドリングを確実にしているのにも関わらず
fgetsの返り値がfalseでなくて空文字だったのだったら、
何も取れなかったということですね。
502 :
496 :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ソース取得なんて他の言語も併せれば
資料いくらでもある。ググれ。
503 :
nobodyさん :04/11/11 15:57:23 ID:ilzje3xZ
>501〜502 色々ありがd ググって来ます
>>502 普通に$fp=@fopen($url,"r");
と書いてたけど、fsockopen()がいいんだ。。。
次からそうします。
ところで、3行目のfputsはどこへ書きだしてるの?
>>497 > オレオレ流
センス(趣味)悪いね。
つまり、詐欺的。
>>504 fopenとfsockopenはまったく違うものだよ。
fopenではURLを開くけどfsockopenはIPアドレス(又はドメイン)を指定して開く。
fputsは開いたポートからサーバーへデータを送っているって感じ。
前にここでサンプル晒したんだけどなぁ、前スレで、、
自分は使い捨てのスクリプトなら、ものすごく単純にこうしているけど。
$contents = file( "
http://なんたら " );
if ( $contents===false) {
// タイムアウトかURL not found
}
きちんとやろうとすると508のスクリプトになるのかぁ。ちょと大変。
510 :
503 :04/11/11 18:35:31 ID:ilzje3xZ
できました ありがとう
Imo氏はコメントがマメやね。
メッソドワラタ
513 :
nobodyさん :04/11/11 20:52:52 ID:QmAFV0EC
メッソド!メッソド!(・∀・)
Mesthod
Mesthod の検索結果 約 907 件 メッソド の検索結果 約 592 件
メッソドのあるページってJava関連の記事ばっかだな
>>511 コメント書かないと後から読めないので(爆
>>512 ヤヴァイ(;´Д`)やはり公開は危険を伴うなw
>>513 メッソド(・∀・)!メッソド(・∀・)!
518 :
nobodyさん :04/11/12 01:47:24 ID:3oKIst3j
オブジェクトのプロパティーは publicだと開けっぴろげすぎるので とりあえずprotectedにする そんなこと考えてるのは俺だけですか?
どういう思考回路なのか理解に苦しむ。
520 :
nobodyさん :04/11/12 01:56:43 ID:3oKIst3j
・外から直接いじられると嫌 ・将来継承するかも分からない ゆえにprotected なんですが…
>>519 OOな考え前提じゃなくてコーディングレベルだけで考えるとこうなる
PHPは特にそうだろうが、誰しもが分析・設計からコードに落とすわけじゃないと思われ
形だけOOにしようとするとメンバのまとめ方、アクセス制限や カプセル化で破綻しがちだーね。アクセス制限どうするかっていう部分から 考えはじめるのはオブジェクト指向とは相容れない しかし現実的な問題もあるよ IDE任せというわけにもいかないのがPHPだし
>>522 分析クラスさえ固まってないのにもうコーディングしなきゃいけない、
でもオブジェクトの性格がはっきりしない、ええい面倒だ全部public!
IDEがあてにならないならリファクタリングなんかしなきゃいいんだ!
という選択肢を選ぶのが真の男。
つかこの手のネタはくだスレの方でやったほうがいいんじゃなかろうか。
Webアプリケーションごときでクラスの設計とかにこだわるな。
525 :
nobodyさん :04/11/12 03:20:31 ID:+Yt5Ck4w
mysqlのデータベースをupdateする方法がよくわからないんだけど、 基本的にdeleteしてinsertするってのが一般的なのでしょうか?
>525 updateすればいいんでね?
>>525 . ィ
.._ .......、._ _ /:/l! またまたご冗談を
:~""''.>゙' "~ ,、、''‐'、| _
゙、'、::::::ノ:::::::_,.-=. _〜:、 /_.}'':, いくらなんでもMySQLをバカにしすぎ。
``、/:::::::::__....,._ `゙'Y' _.ェ-、....._ /_゙''i゙ノ、ノ
,.--l‐''"~..-_'.x-='"゙ー 、`'-、 ,:' ノ゙ノブ
" .!-'",/ `'-‐'') /\ `/ でノ-〈
.-''~ >'゙:: ‐'"゙./ ヽ.,' ~ /
//::::: ', / ,:'゙
>>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 ∨/_)_〃 |
わざわざリスクが高い選択はしないようにw
531 :
nobodyさん :04/11/12 05:48:47 ID:j3YLIEmE
cookieをセットするのに一番良いタイミングって何処でしょうか? ob_start();とか使えばどこでもセットできるようですが 送信が溜まってると思うと苦いです。 if(phpversion()>="4.1.0"){ extract($_GET); extract($_POST); extract($_COOKIE); extract($_SERVER); } の直後が一番良いのでしょうか?
ageてしまって失礼しました
妹がデュアルショックを股間に当てていました。兄もショックです。 テレビには、終始無抵抗で殴り続けられる平八が映し出されています。 妹と目が合いました。まずパンツを穿いてください。見つかりませんか。 脚に引っ掛けたままなのを忘れるほど動揺しているんですね。 床に投げ出されたコントローラーが、なおも続く振動でヴヴと鳴き蠢いています。 笑ってごまかしたって駄目です。しかし鉄拳3を選んだセンスは評価したい。 いま平八がKOされました。妹の醜態に兄も一発KOです。
始めてみるコピペだが、平八の顔した妹が思い浮かんで萎えた。
536 :
nobodyさん :04/11/12 08:53:02 ID:FC5lH0u1
PHP5で self::method()と $this->method() は内部的に全く同じですか?
537 :
nobodyさん :04/11/12 09:05:02 ID:DqN1EkY0
\r及び\nについてお聞きしたいことがあります。 一般的な言語では\r\nはそれぞれ0x0D 0x0Aだと思うのですが、PHPではどうなっているのでしょうか? さまざまなサイトや関数リファレンス書籍等を見たところすべて\r=0x0A \n=0x0Dと記述されておりました。 しかしecho等で出力させたところ\r=0x0D \n=0x0Aとなりました。 実際にはどちらが正しいのでしょうか?
>>537 >さまざまなサイトや関数リファレンス書籍等を見たところすべて\r=0x0A \n=0x0Dと記述されておりました。
>すべて\r=0x0A \n=0x0Dと記述されておりました。
そんなはずはありません。
539 :
nobodyさん :04/11/12 10:13:39 ID:2WcufnQu
540 :
nobodyさん :04/11/12 10:18:59 ID:2WcufnQu
541 :
nobodyさん :04/11/12 10:36:31 ID:2WcufnQu
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 の中身も 変更されるようにしたいのですが、何かうまい方法はないでしょうか?
543 :
nobodyさん :04/11/12 11:14:49 ID:8aG2jjUM
すいませんちょっと質問ですよ。 "#"(シャープ)の入ったURLを読み取るにはどうすればよいのでしょうか・・ $_SERVER['QUERY_STRING']や$_SERVER['REQUEST_URI']では 読み取れないんですが・・ よろしくおながいします。
<?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 も変わるけど。
546 :
nobodyさん :04/11/12 11:25:07 ID:8aG2jjUM
547 :
542 :04/11/12 11:30:33 ID:???
>>544 なるほど。
コンストラクタ呼び出しの引数と、コンストラクタ内のメンバ変数の代入式の
両方を参照にするというのは思いつきませんでした。
ありがとうございました。
\#とかでもむり?
549 :
nobodyさん :04/11/12 11:52:36 ID:L9eWiqBv
質問です。 include() や file() で読み込むHTMLテンプレートの中に $addr などの変数を 書いておいて、自動でパースしてくれることを期待していたのですが、そのまま $addr と表示されてしまいます。 これはPerlでも同じだったのですが、$bar = preg_replace('/\$addr/', $addr, $bar); とでもやる以外にスマートな手はないものでしょうか。
550 :
543 :04/11/12 11:57:12 ID:???
>>548 \が/に変換されて#以降は消えてしまいました・・
>>543 #以下のフラグメントが変わっただけではサーバへのリクエスト自体が行われないし。
552 :
nobodyさん :04/11/12 15:10:38 ID:/lHAFZLN
次の仕事でPHPを使うことになり、現在勉強中です。 文法等の基本的なところは大体理解したのですが、 それに加えて最低でも押さえておいた方がよいことは 何でしょうか? (PEAR、Smarty等いろいろありますが...)
554 :
nobodyさん :04/11/12 15:25:00 ID:/lHAFZLN
>>553 教育機関の講師が使用する、情報閲覧システムのようです。
構成は↓のようなものが想定されます。
Windows + Apache + PHP + DB(Oracle or DB2 or ???)
>>543 ブラウザが#以下を送信してるなら受け取れるとおもうぞ。
557 :
nobodyさん :04/11/12 16:09:34 ID:/lHAFZLN
522はWebprog初心者スレをさんざん荒らして帰っていった奴だな やはりPHPに来たかw
>>543 JavaScript との連携で、JavaScript が location.hash を PHP に渡せば出来る。
結論としては、ブラウザが送ってない値をPHPで受け取るのは、どうあがいても無理、と。
>>543 みたく、そういう当たり前のことに気づかないやつもいるわけだし。
他にも、JavaScriptで動的に追加した<select>の選択項目を選択された項目とは別に取得するにはどういうPHPのコードを書いたらいいですか?みたいなのもあったりするし。
C/Sが分かってないのとC側の問題かどうか分かってないのとじゃ大違いだボケ
564 :
nobodyさん :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が原因かどちらなのでしょうか? また、どうすれば直るのでしょうか?
>>564 コマンドラインとかからsendmailが生きてるか調べたらいいじゃん
>>564 sendmailをpopenできなかった時にそのwarningが出る。
原因つーか負荷を掛けすぎたんでsendmailがゴネてるってことだな。
鯖の管理者に相談するとよい。つーか管理者から苦情くるだろうから
今のうちに言い訳を考えておくとよい。
eclipse で trustudio を使っているのですが、既存のphpプロジェクトを trustudio の phpプロジェクトにすることはできますか?
>>568 既存のphp"プロジェクト"って何のプロジェクト?
Zend?
Simple Project です。trustudio を入れる前に eclipse で作成しました。 そして、trustudio を入れました。新規作成で PHP Project を作成できるようになりましたが、 既存のSimple Project を PHP Project に変換する方法が分かりません。 新しく PHP Project を作成してファイルを移動するしか方法はないのでしょうか?
571 :
nobodyさん :04/11/13 02:04:19 ID:Aaqq6gsU
シングルクォーテーションでくくる
>>571 複数行にまたがるならヒアドキュメント使えばいいんでね?
575 :
nobodyさん :04/11/13 12:08:21 ID:Yc7DSHDt
<br>\nって本にでてんだけど ¥nつける意味がわからん・・・改行がなんで二つもいるんだ。。 手抜きしすぎの参考書かうとだめだな・・・
出力するHTMLを見やすくするためだろ。\nと<br>はイコールじゃねーぞ。
577 :
nobodyさん :04/11/13 12:13:58 ID:Yc7DSHDt
でも多言語だと¥nだけで改行するけどphpは¥nだけだと 改行しないぞ、<br>だけなら改行するけど
ヒアドキュメントってナンデスカァ?(。・_・。)キリリッ
>>577 × phpは¥nだけだと改行しないぞ
○ htmlは¥nだけだと改行しないぞ
htmlなんかを出力する場合、echoとprintどっちがいいの? 独学でやってきたけど、ずーーっとecho使ってました。 そもそも使い方が違うのですか?
くだ質でやれつってんだろ池沼
同じだろハゲ
>545-546 かなりワロタ
>>582 $a = print('A');
$a = echo('A');
前者は普通に動くけど、後者はエラー。
print 'A','B';
echo 'A','B';
後者は普通に動くけど、前者はエラー。
<?='A'?>
echoには省略形もある。
# これはまた別と考えるべきかもしれないけど
違いはこれぐらいだよ。同じと思うべきかと。
588 :
KB :04/11/13 15:00:00 ID:???
>>587 そんな違いがあったんだ。
といってもそんな使い方する場面が思い浮かばない^^;
銀の脳がプログラムのお手伝いをします。
591 :
nobodyさん :04/11/13 17:29:26 ID:6u/jhtaT
たしかにPHPはPerlよりは初心者にも分かりやすいけど、 もっと簡単で、やりたい事を直感的にプラグラミングできる言語が 開発されたらいいのになぁ。
RubyかSmartyテンプレートかな 簡単だと汎用性に乏しくなるし。。。
PHPはマニュアルが整ってるからマニュアル片目に作るといいね 俺の悩みはPHPのマニュアル内の検索の仕方がわからない 右上の検索欄は「関数名」しか対応してないみたいだし
>>593 漏れはもうググッてるよw
そっちのほうが早い
>>593 そこでManualをNamazuで構築ですよ
その代わりわかちガキだから半端なところで関数名切ると出てこないけど
PHP4+Apacheの環境です。 Perlで $str =~ tr/:;<=>?@[\\]^_`/ABCDEFGabcdef/; と置換するのと同じ事をPHPでやるにはどうしたらよいのでしょうか? 部分的に置換などの方法は分かるのですが、上記のように :はA ;はB <はC というように対応させたいのですが、PHPにそのような関数が見つからずに困っています。 どなたかご存じないでしょうか?
600 :
582 :04/11/13 20:29:08 ID:???
>>587 ありがトン、するってぇと好みということですね。
>>582 スピードで言えばただ単純に出力するなら作りの問題で、若干echoの方が早い。
(作りに問題があるからではない。要するに別名ではなく、別物だから)
あくまでも若干ね。
使い方については
>>587
>>570 Simple Projectを削除(コンテンツは削除しないで)
New Projectで、PHPプロジェクトを選んで、そのSimple Projectと同じ名前で
プロジェクト作成、ワーニング出るが、それをよく読んで実行。
きっちり検証してないから、どうなってもしらんぞ。
CVSに放り込むなり、バックアップ取るなりしろよ。
603 :
602 :04/11/13 21:30:58 ID:???
>>570 あ、そうだ、俺なら新規でPHP Project 作って、コンテンツを”コピー”するな。
604 :
570 :04/11/13 21:56:56 ID:???
>602 親切にどうもありがとう! 『新規でPHP Project を作って、コンテンツを”コピー”』で、できました。
605 :
596 :04/11/13 22:12:47 ID:???
>>598 さん、
>>599 さんありがとうございます。
ソースまでいただけるとは思いませんでした。
$salt = ereg_replace("[^\.-z]", ".", $salt);
この部分まではなんとか関数調べて出来たんですが
$salt = strtr($salt, ":;<=>?@[\\]^_`", "ABCDEFGabcdef");
この関数まで見つけられませんでした。^^;
とりあえず実装してみて、キャップ機能は自分で移植できそうなのでがんばります。
ほんとにありがとうございました。
質問させて下さい。よろしくおねがいします。 PHP4+Apacheの環境です。 私はウェブサイトのトップページをphp(index.php)で作っているのですが、 アクセスする度にMYSQLに接続しDBからデータを 引っ張ってきている為、トップページが少し重くなっています。 それを解消する為にindex.phpを実行した結果をindex.htmlとして 吐き出して、訪問者にはindex.htmlという静的なページを見てもらえれば サイトが軽くなると考えました。 自分でindex.phpにアクセスして そのページのソースをコピーしてindex.htmlとして 保存すれば簡単なのですが、これを自動で出来る方法は ありませんか? 一定時間毎にindex.phpからindex.htmlを吐き出す方法はないものでしょうか。
cronでwget? しかし、それが気になるということは、ものすごいアクセス数なんだろうな。
一定時間毎に吐き出すぐらいなら記事追加時とか、変更があったときだけ吐き出せばいい
>>606 やはりcronかな?
wget使う使わないは好みで
単にindex.phpを簡単なスクリプトにして一定時間後に踏んだ人だけ更新用のスクリプトを読み込ませればいいじゃん。
611 :
nobodyさん :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);
※適当に書いたのでこのままでは動かないかもしれないけど、
雰囲気的にはこんな感じ。
mmcacheだかなんだか、使えないの?
素人なんで教えてください。 【やりたい事】 以下のファイルが存在します。 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の乗りで使ってました…(汗)
include
615 :
613 :04/11/14 02:30:12 ID:???
includeとrequireはエラーの扱い方が違うだけとありましたが…。
616 :
613 :04/11/14 02:46:16 ID:???
includeについても調べてみました。 PHPマニュアルより 読み込むファイルはまずカレントのワーキングディレクトリからの 相対パスとしてinclude_path で探され、それから、カレントのスクリプトの ディレクトリからの相対パスとしてinclude_path で探されます。 …とあるのですが、これなら例に挙げたものも動きそうなんですが…?? もう少し悩んでみます。
試せばいいだろ
618 :
613 :04/11/14 03:13:19 ID:vN4rnj6x
>617さん もちろん試しました。 …下げてた。ごめんなさい。
>>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の方が適切でしょ。
>>613 require_once()で、解決。
>>613 chdir関数でカレントディレクトリを統一してみ。
622 :
nobodyさん :04/11/14 11:34:10 ID:TN0m6TVj
^([a-z0-9_]|\\-|\\.) 正規表現なんですけど、|\\-|\\.の部分がよくわかりません |はORのことですよね\\は¥を含むってことですか?
\\- → \- → - \\. → \. → .
>>622 ^ ([-.a-z0-9_])
と同じじゃないの?
625 :
nobodyさん :04/11/14 12:16:10 ID:TN0m6TVj
>>623 \\て¥のあとの文字を表示するんではないんですか?
PHPはじめてなもんですみません
¥^なら^とかって本にかいてたんで
>>625 PHPパーサが\\を\にするから正規表現パーサには\.が渡される
627 :
613 :04/11/14 13:39:18 ID:???
>619 いや…メンテナンス性とか解り易さを求めているからソース分けしている訳で。 mainやsubからutil使う時、utilの中身なんて意識したくないでしょ。隠蔽っていうの? …と思ってたのですが、PHPではそういう考え方はしないみたいですね。 諦めて別の方法を考えます。皆さんありがとうございました。
628 :
613 :04/11/14 13:40:40 ID:???
訂正。別の方法ってか設計自体やりなおします、の間違いでした。 お邪魔しました。
別にいいんじゃないの? C言語でもincludeの元にincludeとか当たり前だし。 階層化してるんだったらそれでいいと思う
スコープ内でinclude使っといてどこがimportの乗りなんだか
631 :
620 :04/11/14 14:13:53 ID:???
>>627 だからよぅ…
あなたみたいな設計ももちろんする場合があるし、
そんな事以前に " require_once() "つうのがあるって言ってるじゃん(涙
>>631 読み込むのがProcedure fileだったりしてw
ん?Importは依存ライブラリの隠蔽なんかしないぞ。 他言語と同じ平凡なパス管理なんだけど。 カレントディレクトリを設定してるのはOSね。 よくわからんのなら__file__定数を使って解決つーのが手っ取り早い。 includeんとこにも載ってるが。 あと一般論として野良ライブラリはブラックボックス化するとメンテに 手間かかるよ。
> ライブラリはブラックボックス化〜 ファイルの依存関係をクライアントプログラムから隠すつーことに限ってね。
まぁ、なんだ。 纏めるとこういうことか。 [前提条件、つーか仕様] include,require等は、最初に起動したスクリプトからの 相対パスで指定しなければならない [実際の利用方法] ネストしてinclude,requireする場合は ・_FILE_を使って上記の相対パスに変換する。 ・chdir()を使う。 ・require_onceを使う。 require_onceを言ってる人は、 ・それぞれのファイルの中で そのファイルからの相対パスをrequire_onceすりゃいい。 ・ネストが1つ上のファイルでもrequire_onceするのを忘れるな。 ・その結果、一番最初に起動するスクリプトの指定が有効になりうまく動く。 ってことでいいのかな。
ライブラリならグローバルスコープでインクルードするに決まってるんだから require_onceしとけば十分だろ。ディレクトリ固定なら__autoloadを使う手もあるが、 どのみちディレクトリ構造指向ならimport文と同じことだからネストする意味が 全く無い気もするな。インクルード用のコマンダこさえるのに比べれば何ぼかマシ かも知れんが。手段はset_include_path使うとか、Cみたいにディレクトリをハード コーディングしないよう定数作るとか、正規のライブラリを使うとかいろいろあるだろ うから好きにやればいいんだが、よほど多くのファイルが構造化されていない限り インターフェイスとなるカレントスクリプトからライブラリを操作するという設計に 変更するべきだろうな。
638 :
nobodyさん :04/11/14 16:16:44 ID:/FGTdaOr
httpのWEBファイルはファイルとして簡単に取得出来るのですが htttpsのものは何か特別なことをしなくてはいけないのでしょうか? それとも出来ないのでしょうか?
どこを縦よm(ry
___ クルッ… / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ || ̄ ̄|| <⌒ヽ )) <
>>636 はてさて、
| ||__|| < 丿 | どこを縦に読みゃいいんだ?
| ̄ ̄\三⊂/ ̄ ̄ ̄/ \___________
| | ( ./ /
アホネタ投下してんの同一人物だろ。 何が楽しいのかね。
>>641 ありえない質問に普通に回答が帰ってくるこのスレの回答者のありえなさが
636=641
644 :
nobodyさん :04/11/14 16:22:35 ID:Do7sGTWF
どうでもいいけど鳥って何だ
>>641 このスレに憑き物がいるのは事実だと思うが、
普通人が消えた今ここにいるそういう連中は正常
なんじゃなかろうか。何も楽しんでいないんじゃな
かろうか。
ちょっと質問なんだけどさあ pathinfo()って関数名やばくね?やばくね?
鳥が騒ぐと言うのは交尾を表す慣用表現。
inlcudeだのなんだのマニュアルレベルばっかだな 俺に分からないような質問をもってこいよ池沼質問者ども
inlcude = インルキュード
653 :
nobodyさん :04/11/14 17:01:12 ID:TN0m6TVj
>>626 $str = "94852-769493"
if(ereg("[0-9\-]",$str2))
この場合だと\\-じゃなくて\-なんだけど
\\-になるときと\-になる違いていうのはなんですか?
参考書しらべまくってるんだけど正規表現あんまり詳しくのってないんです
ご存知のかたいたら教えてください。お願いします。
>>653 ""で囲む時の\の動作が一定じゃないのよね。
"\\-" == "\-"
"\\n" != "\n"
echoして調べてみるべし。
すみません。サイトにアクセス解析を置きたいのですが、 まぁ自作スクリプトのヘタレ具合は別として、TOPページを index.shtml としてperlでシコシコ書いたものと、 index.php としてphpでシコシコ書いたものでは、どちらが負荷が大きいんでしょう? 全部のページを解析しようとすると、全ページ XXX.php に? コレって負荷大きすぎないんですか? ヘタレですけど、がんばりますんで よろしくお願いします。
phpでシコシコ書いたものは おかずにより、負荷がかなりことなります。
>>656 普通はサーバのログから解析するもんだと思うが。
特に負荷云々を気にするぐらいなら。
サーバでログ出力させた方が遥かに負荷が少ない。
ミもフタもない答えが・・・・ まぁたしかにそうなのかも・・・・ ありがとう。
phpの方が一般的にはやいといわれているよ。
>>656 普通にHTMLで書いて<img src=解析スクリプト>を埋め込んだらダメなのかと
アプリPHPで組んでいるんですけど HTMLのフォームでやたら<hidden>が多くなってしまいました。 なんか、見ためかっちょ悪いです。
そろそろセッションの使い方を覚えてもいい頃やね
MVCでVは<hidden>の値で分岐処理などおこなっています。 そういう場合はしょうがないのでしょうか。
665 :
nobodyさん :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ファイルを取ってきてしまいます。どうすれば、ディレクトリ名だけを取るのか ご存知の方、お知恵をお貸しください、
>>665 aタグにsrcなんて属性あったっけ?
つーか、タグが滅茶苦茶だ。開いてないのに閉じてるし。
まあ、どうでもイイコトはおいといて、
$cdの行をコメントアウトして、$cdirに自分のホームディレクトリを指定して他は"そのまま"動かしたけど
ちゃんと、ディレクトリのみリンクが表示されたよ。
変数を一個一個echoして表示させてみたら?
例えば、ifの前後に$dnameをechoしてみるとか。
#環境も書かないでどうしたいのだろうか?
>>666 >aタグにsrcなんて属性あったっけ?
ないよ。
>>664 hidden の値がクライアント側で変化するか否かできまるんじゃない?
変化しないなら、サーバ側で、$_SESSIONで代替できるだろうし。
変化するなら、使わざるを得ないと。
670 :
nobodyさん :04/11/15 18:42:53 ID:ObsXoKC2
PHPから接続したMySQLがSJIS・EUCどちらの文字コードをサポートしているかを 判断することって出来ますか?
>>670 出来たら phpMyAdmin はとっくに実装してるだろうがな……
672 :
670 :04/11/15 19:07:14 ID:???
>>671 ですよね…
無理矢理、MySQLの設定ファイルを読み込んでっていうのもあるけど、現実的じゃない orz
674 :
673 :04/11/15 19:28:05 ID:???
mysql-client-encodingで取れるのは、クライアント側の エンコーディングなんで注意してね。(つまりMySQL4.1以降)
675 :
673 :04/11/15 19:31:47 ID:???
ゴメン。 ×:SHOW STATUS ○:SHOW VARIABLES
676 :
670 :04/11/15 19:44:03 ID:???
あ、SHOW VARIAVLES LIKE 'character\_set%';で取得できました。 ありがとです。
677 :
nobodyさん :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分ごとに繰り返したい場合 、
前後をどんな風にすればいいでしょうか。
「フォームを30分ごとに繰り返す」って意味ワケワカ。 違うフォームを30分ごとに生成すんのか? 初心者にも判るように正確に丁寧に質問してください。
ボタン押すのか、、、?
>>679 多分、どこかのボタンにF5でもかますんじゃ
ねーの?
>>670 MySQLで日本語のソーティングがうまくいかないときは
Binaryモードに変更すればいい。たいていの場合は
解決できると思う。
684 :
665 :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」だけを取り出せるのでしょうか お知恵をお貸しください。
685 :
nobodyさん :04/11/15 22:23:45 ID:Uy1hSbYj
>666さん ありがとうございます。 >666, 667 html部分はコピペで気づかずそのまま利用してしまいました。 申し訳ないです。<font>もコピーするとき切れてしまいました。・・・orz
> 「is_dir」を「!is_dir」にすると ΩΩΩ ナンダッテー!!
>>665 まだ解決してなかったのかい。
例えば
$dname = readdir($cdir)
この $dname はパスを含まないファイル名かディレクトリ名。
だからファイル操作する時の引数には $cdir.$dname にしないとだめだ。
>なぜ「!is_dir」でディレクトリまで取得するのがわかりません。
存在しないファイル名を is_dir で判定してたら全部 false になって当然。
688 :
nobodyさん :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の羅列がいまいちやぼったい気がします。 もっとエクセレントな書き方はないものでしょうか?
689 :
nobodyさん :04/11/16 00:05:42 ID:2ZViTd8d
>687 ありがとうございます。 パスをつけて実行したらうまくいきました。 パスが必要だったとは・・・orz 感謝感謝です。
>>688 これで動かないことはない、って感じ。
指定されてないものにはNULLが入ります。
function test() {
list($a, $b, $c) = func_get_args();
}
>>688 $a,$b,$c…ってのに納めようとするから野暮ったくなってるんでは?
なんかに格納したいんなら、素直に、配列に落とし込めば良いと思う。
あるいは、最大で3つしか引数を取らないって言うなら、3引数の関数作って
デフォルトを与えた方が良いと思う。
692 :
nobodyさん :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
>>690-692 なるほど!勉強になります。
690さんの方法で行こうと思います。ちょうどNULLが入って欲しかったので!
ありがとうございました。
695 :
nobodyさん :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指定のみ変わった) 重いクエリーを実行する必要があるため、 パフォーマンスの問題があります。 最初の一回のクエリーは重くてもいいとして、 ページングを軽くする方法はないでしょうか?
696 :
nobodyさん :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"])."]"; ←コチラは、空文字になっている
697 :
nobodyさん :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に現在時刻(文字列)がきちんと入っている
です
699 :
nobodyさん :04/11/16 12:38:46 ID:t4iPftE+
>>698 セッションオートスタートがオンになってると、
セッション変数不可
って項目ですよね
オフに、なっているんですが…
>>696 session_registerを使うな
701 :
nobodyさん :04/11/16 13:17:15 ID:t4iPftE+
>>700 え、その関数は不可ですんか…
アリガトンゴザイマスタ
702 :
nobodyさん :04/11/16 13:21:00 ID:t4iPftE+
>>701 事後報告
セッションファイルにもきちんと値が入りマスタ
アリガトンゴザイマスタ
マニュアルって使うの難しくね?
質問です。下のスクリプトを実行すると 「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"; ?> とした場合はエラーは出ませんので、ヒアドキュメント以外では変数の展開ができている模様です。 ヒアドキュメントを使えないとツラいので何とかしたいのですが、どなたか原因がわかる方がいらっしゃったら教えてください。 よろしくお願いします。
706 :
nobodyさん :04/11/16 15:22:12 ID:kHelo3UA
707 :
nobodyさん :04/11/16 15:49:12 ID:wLOJos/k
関数で処理した結果を変数に入れたいんですけど、どすればよいですか? たとえば、helloを返す関数、hello()があったとして、 $msg=hello(); な感じです。色々試してみましたが取れないです。hello()ではただ echo "hello"; としてるだけです。 達人のみなさま、なにとぞ宜しくお願い致しまする。
>>707 マニュアル見れ
function hello(){
return "helle";
}
echo hello();
709 :
707 :04/11/16 15:58:17 ID:???
>>708 ありがとうございました。
echoでなく、returnにしたらおかげ様で出来ました。
マニュアル読んだつもりになってましたが、全然読めてなかったんです
ね。反省いたします。
710 :
yoro :04/11/16 16:21:53 ID:iDIPDCBP
>>706 さん
ご返答ありがとうございます。
指示されたようにマニュアルのコピー&ペーストをして再度試しましたが、やはり同じ結果でした。
先にも書きましたが、同じファイルが別のサーバーではきちんと実行できることを考えると単純なスクリプトの間違いではないように思います。
なにか他の可能性が考えられれば、ご示唆いただければうれしいです。よろしくお願いします。
ローカルにインストールしたPHP4.3.9はPHPの本家からリンクされているバイナリーパッケージ(Mac OSX版)を使ったので問題はなかろうと思っていますが、PHPをきちんとソースからコンパイルして入れ直した方がいいのかも知れません。
うちの環境ではちゃんと動作した。 Mac OS X 10.3.6 & PHP 4.3.9(自前コンパイル) END;の前にインデント入ったりはしてないよね?
712 :
yoro :04/11/16 17:00:05 ID:iDIPDCBP
>>706 さん
改行コードの問題だと判明しました。
Mac上で実行する場合、改行コードがCR(Mac)だとエラーになるようです。
LF (Unix)またはCR+LF(DOS)にすれば大丈夫なようです。
リモートでは問題がなかったのは、Linuxサーバーだったからだと思います。
ヒントをいただいてありがとうございました。
713 :
711 :04/11/16 17:00:28 ID:???
715 :
yoro :04/11/16 17:09:03 ID:iDIPDCBP
>>711 さん(ほかの方々)
ありがとうございました。
DreamWeaverで書いたコードの改行コードがCR(Mac)になってたのが原因だったのですが、DreamWeaverの環境設定にCode Formatというタブがあり、そこで改行コードをLF(Unix)に設定するオプションがありました。
今後は安心して書けると思います。お騒がせしました。
716 :
nobodyさん :04/11/16 17:09:35 ID:wLOJos/k
配列の一番最後の値を特定して取り出すことってできますでしょうか? 先程から初心者な質問ですいません。
>>716 配列の要素数を返す関数 count() を調べろ。
それで最後の配列要素を取り出すことは出来る。
もしくは
>>717 のようにreverseさせて先頭要素[0]を取り出す手もある。
てかこのくらいGoogleかなんかでPHP講座とか探して勉強しろ。
>>717 >>718 連想配列使って、
$temp_val = $val["インデックス"]
ってな具合に、取り出すのは、2度出間すかね?
array_pop()がそうらしい
array_pop()を使えばいいけど、元の配列から要素を削除するので注意。
722 :
716 :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";
うーん、preg_replace使うかな・・・
>722 正規表現、勉強しような
俺なら $filename = basename($_SERVER['SCRIPT_NAME'], ".php"); $filename.= ".log"; $log = "./log/{$filename}"; って書く
$filename = basename($_SERVER['SCRIPT_NAME'], ".php"); $log = "./log/{$filename}.log"; でもいいわけだ。
727 :
nobodyさん :04/11/16 23:22:24 ID:s1qPu0YC
特定の月末の日付を取得するにはどんな方法があるでしょうか?
728 :
727 :04/11/16 23:26:42 ID:s1qPu0YC
すいません、あと、 今日の日付 date() から1ヶ月先の日付を取得する方法を教えてくだせぇ。 お願いします。 unixタイムスタンプから1ヶ月分足す方法になると思うのですが、 1か月分のunixタイムスタンプがわからないっす
729 :
727 :04/11/16 23:29:08 ID:???
mktime使えば728は簡単にできそうですね・・・ スマソ。 727だけ教えてくださいませ
それもmktime使います。自動補正便利だよねー。
>>728 速い方法はほかにあるけどphpだからこその簡単な方法は
strtotime('+1 Month')
732 :
nobodyさん :04/11/16 23:37:31 ID:tAnxVLV8
<form method="get" action"test.php"> .....<? echo $test1 ?> フォームのPHPの埋め込みなんですけど、いきなり? からはじまってます。。<?php echo >て言う感じにphpはいれなくていいんですか? いれるときといれないときの違いっていうのはどういうことなんでしょうか? ほんとに初心者からはじめれる本っていうのなんですけど、まったくこういうことに ふれてないです><おしえてもらえればありがたいです
733 :
727 :04/11/16 23:37:51 ID:???
レスサンクスです。 分かりますた、ずばり日を1日に指定してそこから1日引くのですな!!
php.iniの設定によっては?phpを省略する事も可能。 echoなら<?=$hoge?>でも可能。
>>732 <?php echo 'A'; ?>
<?php echo 'A' ?>
<? echo 'A'; ?>
<? echo 'A' ?>
<?='A'?>
全部同じ意味です。ほかにscriptタグ使う奴
とかもあるけど気にしなくていい。
> <?='A'?> すわっ新種の顔文字かと思った。
echoへのしょーとかっと まぬあるにかいてあるべ
でもあんま省略しない方がいいよ
Apacheスタートしなくなったけど、 確かどこかにエラーメッセ出てたよね?
>>739 意味不明。(apacheDir)/logs/error_log (error.log) の事を言ってるのか?
長さを指定して空の2次元配列を作るにはどうすればいいの??
742 :
695 :04/11/17 10:30:45 ID:???
ショボーン。 やっぱり、自作で結果をキャッシュするしかないかな・・・。
ちなみに10万件もヒットするDBって、どんなデータが入ってるの? 質問には答えられないけど、シチュエーションに興味あり。
>>743 select * from hoge_table where 1;
PHPのフリースクリプト探してるんですが、どこのスレに行って聞いたらいいですか? 基本的に日本語バグトラッキングシステムてPHPのやつ。 # 影舞いいんだけどRubyだし。
747 :
695 :04/11/17 11:32:22 ID:???
>>743 10万件ヒットではなく、検索対象が10万件ですー。
そのうち20万件とか30万件が対象になる予定なんですけど。
これぐらいだと普通にありますよね?
>>742 どんだけメモリ食うかしらんが、limitかけなきゃ良いんでは?
Perl/sh でいうところの tr はありませんか? tr/A-V/a-v/ をしたいのです。
Webのアクセスログ(約26万件)を独自にPostgreSQLで記録しているが、 phpPgAdminで10万件ヒットの結果をviewingしても、最初の画面だけ ちょっと待たされるものの、あとはそれほど重く感じない。
>>749 大文字->小文字ならstrtolower()
>>751-752 ありがとうございました。
一部だけ小文字にしたいので strtr を使おうとマニュアルを見たら
> 引数を2つ指定してコールっ_場合
なんてのが。
754 :
695 :04/11/17 14:02:03 ID:???
>>748 最終的に検索クエリが遅いのは明らかなので、
ページングした際に再度クエリを投げないで済めば
早くなるのはわかっているんです。
なので、limit掛けない結果をキャッシュするしかないかなぁ?
ってのが
>>742 です。
>>750 文字列マッチでの検索とかした場合ですか?
シーケンシャルに読むだけならクエリー自体が軽いので、
ページングしても重くならないと思います。
もし文字列マッチでも早いなら、ソース見るしかないですかね・・・。
デストラクタ的な後処理の為に、register_shutdown_function を試しているのですが、register_shutdown_functionに登録された 関数内において、ログファイルの書き出しも、クラスファイル等のincludeも いずれもpermissionエラーとなって実行できないのですが、 register_shutdown_functionの実行権限は、mainの処理とは異なるのでしょうか? バージョンは4.2.3です。
10万件のデータから中間一致検索しても一回当たり0.05秒掛からず 返ってくるけど。
757 :
nobodyさん :04/11/17 15:11:44 ID:eshx/1+6
すいません、亀レスな上に横から質問で悪いんですが
>>688 で可変長引数の質問について教えてください。
function test() {
list($a, $b, $c) = func_get_args();
}
のように、可変長引数にするメリットはなんでしょうか?
あんまり思いつかないのですが…。
>>691 で言われているようにデフォルトを与えた方が
楽な気がします。
windows版のapacheでSSL_FTP()を使いたいのですが、 apacheをどのような設定にすれば使用出来るようになるのでしょうか?
>>757 俺もそう思う。
そもそもperl臭いのが嫌だ。
>754 文字列マッチの場合なり
761 :
695 :04/11/17 16:04:49 ID:???
>>756 どひゃー。
ちょっと検索対象のフィールドの定義と、
1レコードのバイト数(概算)教えてもらえますか?
(中間一致ならindexは効かないですもんね)
他になにかやらかしてそうな設定ってあるかな・・・
SQLからスピードを取ったら何が残るの?w
763 :
nobodyさん :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) 配列を作りたいんです。どうかお知恵をお貸し下さい。よろしくお願い 致します。
数百万なら俺も考えるが、数十万ならSQL+最近の鯖PCなら全然気にしない。
765 :
763 :04/11/17 16:15:42 ID:ewTnqAG8
すいません。追記です。 出来ましたら、$cは連想配列にして、echo $c[one];としたら0 と出したいんです。自分にはむずかしすぎて、取っ掛かりさえつかめない 状態です。
>>761 フィールドは text。
1レコード15000バイトぐらい。
767 :
748 :04/11/17 16:42:06 ID:???
>>754 いやぁ、私が言いたかったのは、別に自前でキャッシュなんてしなくても、
limitかけないでクエリー発行して、mysql_data_seek()をつかえば、
MySQLの方でやってくれるぞ。って話で。
その際システム側でどんだけメモリなりのリソース食うかは預かりしらんが、って事で。
>>765 どのへんがどうわからないの?答えようにも自分には(質問の意図をつかむのが)むずかしすぎて、取っ掛かりさえつかめない状態です。
とりあえず「いち、に、木」はやめよう。
ワロタ
770 :
768 :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];
771 :
695 :04/11/17 17:07:52 ID:???
>>766 となると、MySQLの設定の問題又はサーバースペックの問題ってことですね。
スレ違い申し訳ない。
たしかに、そんなにスペックのいいサーバーではないのですが、
普通に1.5秒以上掛かります・・・
773 :
nobodyさん :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"); } } ?>
>>767 仮に「自前でキャッシュ」するなら
「limitかけないでクエリー発行して、mysql_data_seek()をつかう」
の場合でも、どちらもシステム(PHP側)のリソースは食うので後者でOkかと。
サーバサイドカーソルはPHPでは無理だし。
しかしMySQLでlimit掛けても、内部的に条件判別に利用された結果
(全結果ではなく対象リストみたいなもの)はキャッシュされるので、
テーブルの値に変化とかなければ、2回目以降は比較的早く出る筈なんだが
システム上の作りが変なのか、特殊なのか…
>2回目以降は比較的早く出る筈なんだが だよね。0.05秒だったのが次やったら0.01秒切ったし。
777 :
695 :04/11/17 19:36:09 ID:???
>>776 最後に参考までにサーバースペック教えてください・・・。
CPU AthlonXP2400 メモリ1GB
779 :
822 :04/11/17 21:14:58 ID:???
ADOdbの日本語ドキュメントってありますか?? あとPEAR::DBとの比較ってどっかにありますか??
780 :
773 :04/11/17 21:36:19 ID:zF/X7yAn
>>780 試しに fopen + fpassthru でなく readfile でやるとどう?
782 :
781 :04/11/17 22:36:30 ID:???
ごめん血迷った発言した。無視して
783 :
781 :04/11/17 22:42:49 ID:???
Windows 2K, Pentium3 700MHz, PHP 5.0.2 で 81MB のファイルを
>>773 のスクリプトそのままで開いてみたけど特に問題は無いよ。
PHP 自体のバグだと思うから Version Up すれば解決するぽ
784 :
nobodyさん :04/11/17 23:59:10 ID:OsVB8E9H
すみません、PHP超ド素人厨なのですが質問です。 借りてるレン鯖で設定しているあるメールアドレス宛てにメールが届いたら、 そのメール受信をキッカケにプログラム(自作のPHP)を 起動させてそのメールを処理(データベースに収納したり自動返信したり等)を させたいのですが、そういうことは可能でしょうか? 自分で思いつく限り検索してみたところ、MTAでパイプ渡しが どうのこうの・・・と、意味がよく分かりませんでした。 それに、そういうことは共用鯖では実現が難しそうな感じでした。 やっぱり専用鯖が必要なのでしょうか?(専鯖ならどこでも可能??) すみません、自分のレベルが低いので分かりにくい質問かもしれませんが どなたか技術的に分かる方がいらっしゃいましたら教えてください。
>>784 forwardやprocmail等を使えば可能だけど共用鯖なら無理かも知れんね。
専鯖でも使えるかどうかはその鯖の設定次第。
786 :
773 :04/11/18 00:20:26 ID:???
>783 ありがとうございます。 環境変えてやってみます。
787 :
nobodyさん :04/11/18 00:34:20 ID:GCCM5gSl
>>785 お答えありがとうございます。
ということは、「forward」や「procmail」というのが
使えるかどうかを鯖会社に質問すればOKですか??
もしかしたら専鯖じゃなくてVPSっていうのでも出来るのかな・・・?
>>787 まぁ、共用・専用等の区分で明確に決まる訳でもなく、
あくまで鯖側の設定次第なので1つ1つ調べていくしかないですね。
だな
790 :
nobodyさん :04/11/18 01:50:03 ID:AjTyCRAu
秒数を時間に変換する関数って有りますか? マニュアルを探したんですけど日付に変換するものしかなくて・・・ 例えば、6000秒で01:40:00って表示するようなのが欲しいんです
mktimeの秒数部分って60以上は入れられないのかな?
>>790 $sec = 6000;
echo date('H:i:s', mktime(0, 0, $sec));
一応mktimeでいけるね
24時間以上だとこのままでは無理だけど
793 :
792 :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)); }
携帯の振り分けなんですが、 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」へ飛ばすようにしてるつもりなのですが、 上手く動作しません。
関係ないかもしれないけど携帯の場合だと location hoge は絶対パスで書かないと駄目だとか
796 :
790 :04/11/18 08:35:27 ID:???
>>791 ,792,793
レスありがとうございます。なるほど、mktimeですか気付きませんでした。
しかし、24時間以上を扱う予定なので793さんのコードを参考に作ってみます。
みなさんありがとうございました。
797 :
nobodyさん :04/11/18 09:49:06 ID:jaTiTZm1
10日でシリーズでPHPやってるんだけど Fatal error: Call to undefined function: mb_convert_encoding() のエラーで止まって動かなくなりました bm_convert_encoding()の動きはわかるんだけど PHPのライブラリ?から読み込んでるんですか?
>>797 環境は?
Windowsだったらdll読み込んでないんだろうし、
Linux系だったらconfigureで-with指定してないんだろうな。
>>797 <?php
phpinfo();
?>
実行結果をよく確認。
797じゃないですが、win版でdllを読み込ませる場合って c:\windows\system32にdllをおいてApacheを起動するだけでOKですか?
php.iniを変更する。
802 :
797 :04/11/18 12:57:08 ID:jaTiTZm1
windows 環境で phpdevをインストールした状態です
803 :
nobodyさん :04/11/18 14:57:43 ID:z5HMJmKG
hoge=aaa hoge=aaa&piyo=bbb 上の文字列の「aaa」の部分を抜き出したいのですが、うまい正規表現の仕方はないでしょうか? preg_match_all("/hoge=(.+?)\&/",$str,$match); だと、hoge=aaaのマッチが取れないのです…。
>>803 そりゃそうだ。正規表現を勉強汁。PHPの質問じゃない。
>>803 $str = "hoge=aaa&piyo=bbb";
parse_str($str);
echo $hoge;
echo "<br>";
echo $piyo;
808 :
805 :04/11/18 15:46:53 ID:???
orz 正規表現勉強するなら、ここのテンプレにあるぞ。 っと言ったつもりだった。 あっちで質問してら。
>>803 $_GET['hoge']の事だったりして
意図がよく分かんない質問だったね。(終わった事にしてる)
preg_match_all の方を使おうとしてるのを考慮すると、
>>809 の可能性も。。。
素朴な質問です countとsizeof関数は、何か違うのでしょうか? マニュアルには、sizeofはcountのエイリアスとしか記載されていませんでしたが 使い分ける必要等はあるのでしょうか?
同じ同じ。
>>809 いや実は俺もそうではないかと恐ろしくなって答えれなかった(w
>>811 エイリアスとは何かを調べれば答えは自ずと分かるでしょ。
ついでに「ラッパー」とかも調べておくといいかも。
count だとC言語使ってた香具師が多用してる変数countと ごっちゃになるからだけだと思う。 sizeof導入も、C書きの人がすんなり入りやすいためだけだろう 多分。
他の関数へのエイリアスとなっている関数は将来どう変更が加わってもおかしくないので 使わない方が無難
(´・ω・`)?
818 :
nobodyさん :04/11/18 18:18:24 ID:8nQGI/2a
レガシーASPから、PHPへの移行を考えています。 そこで質問なのですが、 ASPでのresponse.endに該当する記述は、PHPだと何になるのでしょうか? 具体的にはフォームから送られた内容を確認するために、 受け取った変数の中身をechoで表示したところで、1度スクリプトを停止させたいのです。 基本的な事で申し訳ありませんが、よろしくお願いします。
exit;
die;
821 :
nobodyさん :04/11/18 19:05:33 ID:bps4zhVU
ereg_replace()にて文字列を変換してるのですが たまに変換されずになることがあります。 変換内容はュ→ユのように小文字を大文字に直すだけなんですが 何か原因があるのでしょうか? また、str_replace()とか使った方がいいですか?あまり違いがわからなくて・・。
>>821 mb_convert_kana()をどうぞ
823 :
822 :04/11/18 19:13:29 ID:???
少し補足しておくと、 そういう処理はマルチバイトを考慮しない関数は使わない方がいい。 色々ググってみ。
php.iniのextension=php_openssl.dll を有効にして起動したいのですが、 php_openssl.dllが見つかりませんというエラーになります。 extension_dirをフルパスに設定しても./(ドットスラ)にしても 見つからないらしいです。 他にも何か設定を変える必要があるんでしょうか?
1. php_openssl.dllがそもそも無い。 2. 違うphp.iniを変更している。
>>825 1. きちんとあります。それらしきところ(system32配下やカレントディレクトリなど)に
いろいろ配置してみましたがダメでした。見つからないらしいです。
2. extension=php_openssl.dll の行をコメントアウトして再起動するとエラーが消えるので
php.ini自体は正しいと思われです。
>>826 エラーの内容だけど、他にdllが足りないってエラーは出てない?
>826
http://php.s3.to/man/ref.openssl.html >Win32ユーザへの注意: このモジュールをWindows環境で使用するには、PHP/Win32バイナリパッケー ジのDLLフォルダからlibeay32.dllを使用する WindowsマシンのSYSTEM32フォルダ(例: C:\WINNT\SYSTEM32または C:\WINDOWS\SYSTEM32)にコピーする必要があります。
これではないのか?
>>826 libeay32.dllをsystem32フォルダにコピー
環境変数OPENSSL_CONFを新規作成してopenssl.cnfのパスを指定
openssl.cnfはwindowsでは拡張子無しの短縮ダイヤルと表示されるので注意 編集する場合はエディタから開くで指定する。
831 :
nobodyさん :04/11/18 22:14:30 ID:VOS+8K87
PHPでは、$obj->getchild()->getname(); のように、オブジェクトを返すメソッドから直接そのメソッドを呼ぶことは、 許されてないのでしょうか? パースエラーになります。 PHP4です。
832 :
nobodyさん :04/11/18 22:27:31 ID:XCBl1M85
単純な質問ですけど PHPで一番得意なのはどういう処理ですか? (DB操作や文字列処理、数値計算など)
>>832 マニュアルより。
PHPを使用する上で最も優れている点は、初心者に対しては非常に分かり 易いと同時に、
プロフェッショナルのプログラマに対しては多くの進んだ機能を提供している点です。
PHPの機能を羅列した長い一覧表を読まなければならないのかと心配する必要はありません。
PHPはすぐに始められますし、数時間の内に簡単なスクリプトが書けるようになります。
>>832 まー勉強するなら普通にJava行っとけって。
お遊びプログラマがJava覚えたって意味ねー
>>833 他言語との速度比較をする際に参考にしようと思って質問しただけです
>>834 なるほど。
ということは処理的な特徴は特にないのですか?
(私はPHPを使った開発はしてません)
>>835 なぜ?
>>836 Java書けますけど
私もそう思います
>>837 趣味でやってる程度のヤシが借りるレン鯖でjavaなんか使えねえよ世間知らず。
>他言語との速度比較をする際に参考にしようと思って質問しただけです それなら最初から速度に関して質問すればいいでしょ 全体的な処理の速さなら他の言語と違いあるだろうし、規模にもよるんだって回答もあるでしょう。 文字列処理だけ特別に早かったり、数値計算がなぜかすごく遅かったりなんていう言語はあるとは思えん。
841 :
831 :04/11/18 23:13:11 ID:???
で、831はダメ? それだと、自分の中で、「PHPつかえねー」って結論になってしまいます。 それだとさみしいな。
842 :
832 :04/11/18 23:16:13 ID:???
>>840 全体的な速度とかは求めてません。
あくまでもPHPとして得意な処理ってなんなの?っていう件でお答えしていただきたかったのです
ちなみに特別に早いとか遅いはないですけど
得意・不得意は絶対にありますよ
特に数値計算は苦手な言語が多いので差が出やすいと思います
早く言えば、phpはWeb利用を前提にしてるから そういう方面に使いやすい
得意不得意の前に、使う人間の頭による。
845 :
832 :04/11/18 23:22:15 ID:???
>>843 マニュアルでも確認できましたし
やはりそういう得意分野は処理ではなく開発(特に初心者向け)のほうで1歩前に出てるということですね
ありがとうございました。
847 :
832 :04/11/18 23:23:28 ID:???
>>844 それはプログラミング全体の言語以前の問題で
私もそれは常に思っています
>>845 そう、初心者向けに開発しやすい
お約束が少ない
まぁ玄人(?)でも簡単に書けてすぐ動く。
速さを求めるなら、他のをどうぞ
849 :
832 :04/11/18 23:32:53 ID:???
>>848 なるほど。
わかりやすい回答ありがとうございます
Web関係の物は標準で組み込まれてるから 鯖に易しい
851 :
nobodyさん :04/11/19 00:03:18 ID:OG1nPnpo
MySQLの接続切断って記述しなきゃ、永遠に接続切れないのでしょうか?
サーバーへのリンクは、mysql_close()のコールにより 明示的に閉じられない限り、
スクリプトの実行終了と同時に閉じられます。
http://jp2.php.net/manual/ja/function.mysql-connect.php mysql_pconnect()は、二つの点を除いて mysql_connect()と全く同様に動作します。
1.すでにオープンされていないかどうかを調べます。
それがみつかった場合、新規の接続をオープンする代わりに
そのリンクのIDが返されます。
2、SQLサーバーへの接続がスクリプトの実行終了時にも 閉じられないということです
>>851 MySQLサーバ側のタイムアウトで切断する。
あとPHPで普通の接続(永続的接続でない)した場合は、
スクリプト実行の終了時にPHPが自動的に切断処理を行う。
勿論自分でcloseするのも可。
まぁPHPは組み込み関数が多くて楽だよな。 web系の事なら何をするにしても関数が用意されてる。 ただ、急に名前変わったり過去の関数をずっと引きずるのはいただけない。 ずっと68Kを引きずったMacのようだ。と元マカーの俺。
>>831 ダメ。マニュアルのどっかに書かれていたのを読んだ記憶があるんだがみつからねー
()-> で検索できればエラー例が一発で出るんだけど仕様上無理なんだよなぁ
PHP5からできるようになったみたいな記述も見たな 同じく探したが見つからなかった…
設定をオートリンクにしたときurlじゃなく「こちら」って文字に 変換するにはどう変更すればいいんでしょうか? if ($autolink) { $comment = auto_link($comment); } になっているのですが・・・
>>858 # URLの自動リンク (0=no 1=yes)
$autolink = 1;
掲示板なんですがコメントにURLが張られるとそのままURLの文字にリンクが張られるので
こちら、って文字に置き換えてリンクを張りたいのです。
定義の意味がよくわからないので見当はずれだったらすみません;
>>859 見当外れだ。auto_link 関数の定義があるでしょ。
どうせ http から始まる文字列を <a href="http**">http***</a> に replace してるんだろうから
それを <a href="http**">こちら</a> に変更すればいい。
>>860 できました。見つけたらそうなってたのか、と思いました;
ありがとうございます。
>>850 あんなに共有サーバの設定しにくい代物でサーバにやさしいのか?
サーバ管理者泣かせだと思うよ
モジュール追加する作業も面倒だし
たまに他のApacheモジュールと競合するときあるのよね
どうしたもんかね
まぁサーバにやさしいというか
>>848 が言ってるように
初心者にやさしいだけ
標準でいっぱい入れてるから遅いってのもあるけどね
\____ ________________/ \/ 人 / ̄  ̄ ̄\ ( 人____) |./ ー◎-◎-) (6 (_ _) ) | .∴ ノ 3 ノ ______ ゝ ノ .| | ̄ ̄\ \ / \__ | | | ̄ ̄| / \___ | | |__| | \ |つ |__|__/ / /  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄
\____ ________________/ \/ 人 / ̄  ̄ ̄\ ( 人____) |./ ー◎-◎-) (6 (_ _) ) | .∴ ノ 3 ノ ______ ゝ ノ .| | ̄ ̄\ \ / \__ | | | ̄ ̄| / \___ | | |__| | \ |つ |__|__/ / /  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄
PHPからメールを送信したいのですが、SMTP AUTHで送信する場合は どのようにしたらよいのでしょうか?
>>862 共有鯖にApacheモジュールとして入れるなよ池沼
まあ、普通はcgiにする罠。
俺が愛用している共有レンタルサーバーは2社ともモジュールだよ。
CGI、SSIが使えないならsafe_modeで安全に出来るけどな。 使えるならユーザ側でかなりの工夫しないとDBのパスワードとか盗まれるぞ。 safe_modeになってないのは論外。
共有鯖ならモジュールじゃない方が良い。 そもそも設定が面倒とか言ってるヘタレ共有鯖管のトコ使わんけどな。 しまいにゃセキュリティホール塞ぐの面倒とか言い出しそうだ。
PHPでMySQLのDatabaseの存在を判定するには 何使えばいい? mysql_select_db?
ファイルロックについての質問させてもらいます phpのflock()の信頼性はどうなのでしょうか? flockを使用せずmkdir()を用いた方が良いのでしょうか?
そんなんだったらflockの存在意義が無いだろボケ
元々存在意義無いし
mkdirの存在意義はあるよ
880 :
素人 :04/11/19 20:44:15 ID:/iwixYaK
>>879 たぶんWindows。
なんとなく。ただただなんとなく。
拡張モジュールを使いたいのなら Linuxはエナブルで追加、 Windowsは、php**.dllを置いた所に拡張モジュールを置いて リスタート
>>882 ちゃんとした表記が出来ないなら英単語のまま書けよ。
検索も出来ないし意思の疎通が難しくなるだけだろ。
Enable = エナブル
aliasをジョージと読むことはあってもenableをエナブルとよぶ馬鹿はおらんやろ。
エナブルってツールがあるのかと思ったよ。enableかよ。
喝っ!・・・・・ポコ〜〜〜〜ン・・・
発音はイネーブルだろ。英語勉強しなおせ
何度注意しても タイトルを titole にしてくるデザイナーがうちにいるよ orz ↓次の質問いってみようか
ループに使う変数をroopってするやつもうちの周りにいるな whileループ使うよりfor使えばいいのに
892 :
nobodyさん :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です と表示されるのはなぜなのでしょうか? いろいろ調べてみたのですがわかりません。 教えていただけないでしょうか?
894 :
nobodyさん :04/11/20 02:34:35 ID:lZ7mI+hy
こんな深夜にありがとうございます。 これを2時間くらい考えていて眠れなかったんです。 3*$xが先に計算されて3ですよね その後に”計算結果は.$b”というありえない数字が足されたために無視されたので 3です になったんでしょうか?
"計算結果は".$a+3*$x."です<br>" "計算結果は".$a+3."です<br>" "計算結果は2" +3."です<br>" 3. "です<br>" "3です<br>"
>>894 取り敢えず、動作が分からなくなったら、
895みたいな感じで、確認する癖つけよう。
一番手っ取り早く理解出来る。
>>894 少しもちつけ。
「"計算結果は".$a+3*$x."です<br>"」の演算について話してる時に$bは出てこないだろう。
「"計算結果は".$a」の部分の結果が "計算結果は.$a" となるわけでも無い。
落ち着いたら、さっきのリンクしたページから文字列演算子について調べてみよう。
英文かもしれないが答えは見つかるはずだ。
>>895-896 深夜なのにどうもすみませんでした
なかなか奥が深いのですね。
試料を探すだけじゃなくていろいろやりながら勉強してみます。
ありがとうございました。
899 :
894 :04/11/20 03:06:00 ID:???
>>897 えっと…
$a+3*$xだと(2+(3*1))になるから5ですよね
前の""の文字列は0で認識されるんですよね
"計算結果は".$a+3*$x.だと0.2+3に…
だと変だな
余計にこんがらがってきたw
で、ところで、print文の中で演算させる方法はあるのでしょうか? perlで言うと@{[ ****** ]}みたいな…
perlでの機能をPHPで… ってのは、もうウンザリ。
>>899 これで最後にしてくれ
>"計算結果は".$a+3*$x.だと0.2+3に…
"計算結果は".$a+3*$x
"計算結果は".$a+3
//文字列と数値を . (ドット)で演算すると、数値は文字列に変換されてくっつく
"計算結果は2" +3
//文字列と数値を + (プラス)で演算すると、文字列はゼロに変換されて加算される
0 +3
>>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>"
お。なんかいい感じのレスが続いてるねぇ。 print("1. 計算結果は".$a+3*$x."です<br>"); print("2. 計算結果は".$b."です<br>"); これも行っときますか。
>>900 それ系の質問ウンザリだからわかってるPerlを使っとけ
907 :
905 :04/11/20 05:55:12 ID:???
しまった。"1. 計算結果は2" が浮動少数点数の 1 に変換されて…だな。
>>903 でも "演算結果は" とかヤっちゃってるし、吊って来る…
文字列の途中に計算結果を . で結合したい時は()[括弧]で括れってことだな。 print("計算結果は".($a+3*$x)."です<br>");
漏れはecho派だからこうするかな echo "計算結果は", $a+3*$x, "です<br>"; 括弧の対応で悩まなくて済むくらいしか利点が無いけど
意外と勉強になった人も多いんでは?w 建設的だったぽい
っていうか普通カッコつかうだろ
912 :
nobodyさん :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"){ 上みたいな感じで会員制サイト作る際のログイン基準作ってるんですが、 セキュリティ的にこれで大丈夫ですかね? あまりにシンプル過ぎてカナーリ心配なのですが・・・ ご指摘求みます
>>912 そんなコード書いてたら俺みたいなスーパーハカーに簡単に全ユーザの
パスワードを盗まれちゃうよ。
クロスサイトスクリプティングとかサニタイジングでググッてみれ。
$password' ここに ・・・・; drop・・・
915 :
912 :04/11/20 13:12:09 ID:VmPsi8L8
クロスサイトってjavascriptとか使ってやるあれですよね? 上の例でなぜCSSが問題になるのかよく分からないのですが? username と password に入力制限するだけでは駄目なのでしょうか?
916 :
912 :04/11/20 13:14:06 ID:???
XSSでしたなorz
最近の若いモンは算数が出来ないと聞くがここの連中は特に凄いのが集まってるな。
920 :
912 :04/11/20 13:20:50 ID:???
ググッてみましたが、 分かりませんです。 一応XSSについては気をつけていたつもりなのですが。 サニタイジングって無効化するやつですよね。 上記の例で何を無効化すべきなのか分かりません。 username と passwordですか? 914さんの発言を見ると、passwordの入力フォームで ある内容を入力されるとパスワードがdropできちゃうってことですかね?
921 :
912 :04/11/20 13:22:59 ID:???
例えば上記例で、不正ユーザが$row=1として送っても、 4行目でrow=0に上書きされるはずですよね・・・
$password = " passwd; drop table user;"
パスワード欄に「' or password !=' 」とか打たれると…。
925 :
912 :04/11/20 13:51:16 ID:???
なるほど、ちょっと感心しちゃいました。 名前入力とかはXSS気をつけてたんですが、 最も重要なポイントをサニタイジングするのを忘れてるようですね汗。 ありがとうございました。
そもそも作ってて気づけ。
$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にするにはどうすればいいでしょうか? ご教授くださいませ
>>927 list($y,$m,$d) = explode("/", $a);
$a = date("Y/m/d", mktime(0.0.0. $m+$b, $d, $y));
>>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'));
930 :
nobodyさん :04/11/20 15:58:54 ID:mKhjN6bd
サーバでスクリプトとしてphpを利用したいのですが 何もせずに戻り値だけ0を返すような物はどう書いたらいいでしょうか? これkだえだとどうもダメだったので、教えてください。 #!/usr/bin/php <? ?>
は? 何もしないならHTMLで良いやん
>>930 return 0; でいいのかな?何に対する戻り値か分からん。。
OSへ返す終了ステータスならexitとか。
単にechoだけつかって それをfileで他の鯖から読み込んで中継にしてる香具師は俺くらいか
>>930 これ以上PHPユーザの質を下げないでくれ。
質の高いPHPユーザーはこんなトコ来ん
普通のユーザももう逃げてる
>>874 一日200万回程度回るカウンタでも壊れた事はないので、まぁそれなりなのではないかと思う。
俺のクリスマスの予定が決定 ↓レス番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ちゃんねる引退
>>874 「PHPのFLOCK」の意図するところがわからない
>>912 からXSS対策ができてないと言い切れるおまえらは天才ですね
プログラマーはだから馬鹿にされるんですよ
>>940 当たってたから良いんじゃね?w
確かに
>>912 だけじゃxss対策してるかはわからん罠。
>>912 あれだけしか出してこなくて『これで大丈夫ですかね?』って聞いてるんだから対策してないと考えるのが妥当でしょ。
だってaddslashesとかやってたらそのコードも書くっしょ。
>>922 >>924 これ、本当に成功します?
いろいろ試してみたけどmysql_queryに2文入れられないみたいだし・・、シングルクォーテーションをエスケープしてたら絶対無理そうだし
>>939 PHP のソースコード内の信頼性を言ってるんじゃないか?
C言語でファイルシステムの fcntl(UNIX) か LockFileEx(Win32) を呼んでるルーチンがあるところ。
算数より読解ヤバイ
>>943 >シングルクォーテーションをエスケープしてたら絶対無理そうだし
912のソースからそういう想定をするのは無意味。
出された情報が少ないんだから、一般論で答えるしかないだろ。
少なくとも書いてないことまで補って妄想するよりまし。
今回は912にも思い当たることがあったみたいだからいいじゃんよ。
>>946 int型でシングルクォーテーションつかってない部分でもできませんでした。
912のソースのような部分が私のスクリプトにもあって、それで本当にどうなのか知りたかったのです。
自分のスクリプトでいろいろ試したのですが抜け穴なかなか見つけられなくて
>>947 対策してるんならOK 対策してないんならダメ
何が対策になるのかわからないのは問題外
content 云々でページを転送させる記述が思い出せない。 だれかおしえてくり
953 :
949 :04/11/20 23:26:25 ID:???
php上での記述の仕方が知りてーんだよ
移動しろ。
phpで構築されてるサイトで、 phpinfo(); の内容がすぐにわかってしまうのは セキュリティ上、まずくはないんでしょうか?
>>955 phpinfo()の内容はphp.iniで制御できるよ。
phpinfo()が使えないように設定してあっても、php.iniやhttpd.confが perlで作ったスクリプトで覗けてしまう無料レンタルサーバはよくあるな。
結局自作のphpinfo()関数作ればどうにでもなりそうな気もする
959 :
nobodyさん :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; } } よろしくお願いいたします。
>>955 PHPは初心者向けだからセキュリティよりもまずは利便性なんだよ
そう言う問題なのか…?w
>>960 まぁ確かにブラウザにエラー出力するスクリプトが多いし
セキュリティよりも利便性ってのもある気もするな
大量に行があるテキストファイルから目的の行を探し当て取得するのに もっとも効率のいい方法ってどんな感じですか? whileで回しながら一行ずつチェックするのは 最後のほうに目的の行があった場合、時間がかかって困ってます。 データベース使わずになんとかならないでしょうか。
インデックスをつけるとか? 名前ならaから始まるのはここ、bから始まるのはここという情報を記憶するみたいな
データ次第。リニアサーチが不安定なら他のも試せ
967 :
959 :04/11/21 21:53:54 ID:mw841Fe0
すいません、なにとぞmime_magicの使い方をお教え願えないでしょうか? maime_magic以外にも、ファイルの形式を判断できる方法があれば、 そちらも教えていただきたいのですが、よろしくお願いします。 うざくて申し訳ないです。
"ソ"という文字をフォームを使って入力されると データの中身が「ソ\」になってしまいます。 なので「ソ\」の後ろから「\」をとりたいのですが 上手に正規表現を組めません。 パターン構文のサイトを見て試行錯誤したのですが上手にできません。 どのようにすればいいか教えてください。 foreach ($src_list as $i => $v) $v = ereg_replace ("ソ\\\", "ソ\", $v);
>969 それはエスケープされているわけだが「ー」「表」なども同様の副作用が生じる。 エスケープと逆の事をする関数を使え。
ありがとうございます。 その\と逆の事をする関数を探します。ラジャ
>>969 .htaccessに「php_flag magic_quotes_gpc Off」って書いとけば無問題
そして必要なところでは自分でエスケープすればいい
みつけました>逆の事をする関数
stripslashes
>>972 ありがとうございます。
是非やってみます
974 :
nobodyさん :04/11/22 00:57:12 ID:ui2dUAYs
質問です。 文字列"a1"から$a1を作り出す(読み出す)ことってできるのでしょうか。 JavaScriptやVBAなら文字列→変数に変換できるので、PHPでも同じことが できるだろうと調べてみたものの見つからず。。 よろしくお願いします。
>>974 可変変数のことでしょうか?
$a["sample"] = "ほげほげ";
$name = "sample";
echo $a[$name];
−−−−−−−−−
出力結果:
ほげほげ
>>974 $a1= 'hoge';
$str='a1';
echo ${$str};
>>975 >>976 即レスありがとうございます!関数も使わずこんな簡単にできるんですね・・・
いやお恥ずかしい・・・。ありがとうございました。 <(_ _)>
>985は単なる連想配列のような気がする
>>985 ウィットの聞いたレスで楽しませて欲しい。
│ト、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ハ. ヽ ' ノ : : : : : : : :
あーあ・・・・ _,,..,,,,_ ./ ゚ 3 `ヽーっ l ゚ ll ⊃ ⌒_つ `'ー---‐'''''"
心臓配列 はい次
991 :
nobodyさん :04/11/22 12:07:22 ID:5v0Qpc9v
オブジェクトのコンストラクタで、引数が不正だったとかでエラーを返したいときは、 どうするのがよいのでしょう。 通常の関数でエラー発生時は、falseを返すようにしてたのですが、 コンストラクタで、 return false とやっても、 普通にオブジェクトができてしまうみたいで。
992 :
991 :04/11/22 12:09:01 ID:???
書くの忘れました。PHP4です。
ぼくはじめてぴーえいちぴーべんきょうするんだけど ぼくでもわかるほんがあったらおしえてちょーだい*^^*
>>991 どうすれば「良い」かはわかりませんが、
・オブジェクトを呼び出す前にチェックする
・引数をチェックする関数を実装して、コンストラクタから呼び出す
くらいでしょうか。
>>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に移行して例外処理で。
997 :
991 :04/11/22 14:39:17 ID:???
>>995-996 ありがと。
でも、ちょっと違うような気がする。
別方面で、$this = false;
ってやればいいと知ったので、それでいくことにします。
ほんとは、PEARのエラーオブジェクトを返すといいそうです。
PHPよりJavaのほうが勉強になる?
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。