【PHP】質問スレッドpart18【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/06/14 14:36ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-4
抜けているものがあったら補足願います
0625620
04/07/06 00:16ID:???ttp://cgi.f44.aaacafe.ne.jp/~phpworld/
0626nobodyさん
04/07/06 00:25ID:???0630nobodyさん
04/07/06 03:48ID:???すでにApache2はインストール済みなのでPHP4.3.7のWinバイナリをインストーラーの方でe:\phpにインストール
http://www.php.net/manual/ja/install.apache2.php に従って
php4ts.dllをwindows/system32に移動
LoadModule php4_module e:/php/sapi/php4apache2.dll
AddType application/x-httpd-php .php
をhttpd.confに追加しましたがApacheを起動しようとすると
Apache.exe: module "c:\php4build\snap\sapi\apache2filter\sapi_apache2.c" is not compatible with this
version of Apache (found 20020628, need 20020903).
Please contact the vendor for the correct version.
というエラーが出てしまいます。
そもそも c:\php4build\snap\sapi\apache2filter\sapi_apache2.c なんでパスは存在しないのです
LoadModuleの部分をコメントアウトするとApacheは起動します
原因に心当たりのあるかたいらっしゃいますか?
php4.3.7 Apache2.0.43です
0631nobodyさん
04/07/06 04:28ID:???>Apache2.0.43
が古くて、最近のSAPIの仕様とは違ってるんじゃないの?
Apche2.0.50+PHP4.3.7でやってみな。
0632nobodyさん
04/07/06 07:53ID:???for文から抜け出すことは可能だろうか・・・
0634nobodyさん
04/07/06 09:30ID:???0635nobodyさん
04/07/06 10:28ID:???includeだとphpファイルの変数しか読み込めないので、txtファイルの中の変数を読み込みたいのです。
よろしくお願いします。
0637nobodyさん
04/07/06 10:46ID:???ttp://www.php.net/manual/ja/function.parse-ini-file.php
とか、どーですか。
0639nobodyさん
04/07/06 11:01ID:???普通に<?phpとか書いてない txtファイルを読み込んで
その中に入ってる$hoge とか言う変数を読み込みたいのです
0640638
04/07/06 11:05ID:???0641nobodyさん
04/07/06 11:08ID:???その程度の問題を自分で解決できないならプログラム組むのやめた方が良いね
とりあえずマニュアルのファイルシステム関数ページを読めよ
ttp://www.php.net/manual/ja/ref.filesystem.php
0642nobodyさん
04/07/06 11:46ID:???解決しました(^^
0643nobodyさん
04/07/06 12:04ID:Rny+MH6z<html>
<body>
<?php
print ("<a href = 'get.php?a=5'> Get</a>");
?>
</body>
</html>
▼get.php
<html>
<body>
<?= print($_GET['a']) ?>
</body>
</html>
上記のコードで、index.phpからget.phpへ移動すると、
ブラウザには「51」と表示されてしまいます。「5」と表示したかった
のですが、原因がわかりません。おわかりの方がいましたらご教授
お願いします。
0645nobodyさん
04/07/06 12:14ID:NBQAU1O/0646nobodyさん
04/07/06 12:15ID:NBQAU1O/0647nobodyさん
04/07/06 12:15ID:5MCxUUr8を
<?php print($_GET['a']) ?>
では?
0648nobodyさん
04/07/06 12:16ID:???質問の要旨とは関係ないけど、二重引用符と単一引用符を
入れ替えた方が良い。
どこに問題があるか見極めるには、静的な HTML を書いて、
get.php を呼びだしてみたりするとか。
とりあえず、index.php で生成される HTML を良く眺めることを勧める。
0649643
04/07/06 12:28ID:mpLQA1tZみなさん、レスどうもです。
<?php print($_GET['a']) ?>が正しいようでした。
>>648
二重引用符と単一引用符を入れ替えてみました。
ソースを見るとこちらのほうがよさそうですね(実はあまり意味がわかって
いませんが・・)
それにしても1時間くらい悩んでいたので助かりました。
ありがとうございました。
0650nobodyさん
04/07/06 13:12ID:???0651nobodyさん
04/07/06 13:13ID:???0652alvi
04/07/06 13:14ID:A6zHoUWtincludeされるファイル
function.php
と
実行する(function.phpをincludeさせる)ファイル
main.php
があるのですが、
万が一main.phpではなくfunction.phpにアクセスされた時にはfunction.phpがエラーを舶用に
htaccessは使わずにファイル名で判定できた筈だったのですが変数を忘れてしまいました。
function.phpをmain.phpに読み込んで$_SERVER["SCRIPT_NAME"]
とするとmain.phpになってしまいますが、これをfunction.phpと表示させる変数は何であるのか
教えて下さい。よろしくおねがいします。
0653nobodyさん
04/07/06 13:28ID:???<?="あいうえお"?>と<?php print "あいうえお"?>
は同じ結果が得られるわけだな。
0657nobodyさん
04/07/06 14:04ID:???<?=[var]?>は<?php echo[var]?>のエイリアス。
<?="あいうえお","かきくけこ"?>はできても
<?php print "あいうえお","かきくけこ"?>はできない
0658alvi
04/07/06 14:28ID:A6zHoUWtincludeするファイルがあり、そのincludeされるファイルをincludeするファイルのなかで使用する為に
includeされるファイルへ何を書くとそのincludeされるファイルのファイル名を取得できるのでしょうか?
>>656
今、外出する直前で確認出来ないのですが、__FILE__ですか?
phpinfoでは分かりませんでした。(include等は使っていない為)
0659nobodyさん
04/07/06 14:55ID:???こんな答え方をしている時点で、何も理解していない、理解する気もないって感じだな。
0661nobodyさん
04/07/06 15:31ID:???のだと想うのだが、そんな関数ありましたっけ?
0662nobodyさん
04/07/06 15:42ID:???HTMLタグの<TD>〜</TD>の中にPHP構文を入れるとエラー出るのか?
0663nobodyさん
04/07/06 15:43ID:???ぜんぜん簡単に書かれてないぞw
includeされた場合はmain.php、直接動かした場合はfunction.phpで切り分けできるでしょ?
何か問題でも
0665662
04/07/06 15:45ID:???0666nobodyさん
04/07/06 16:11ID:???計算結果が4になるんだがこれを4.00と表示したい
こんな時どうするか教えやがれぬるぽ
0667nobodyさん
04/07/06 16:21ID:???$値 = 4;
$桁 = 2;
echo number_format($値, $桁);
0669nobodyさん
04/07/06 16:30ID:???0670nobodyさん
04/07/06 16:35ID:???0671nobodyさん
04/07/06 17:18ID:???お前らがマニュアル引き係じゃぁ
と思っている輩が質問してる訳です
0672nobodyさん
04/07/06 17:22ID:???0675nobodyさん
04/07/06 18:24ID:???ob_start();
?>
<html>
<head>
<title>ログイン</title>
</head>
<body>
<h1 style="font-size:14pt;text-align:center;">
ログインtest
</h1>
<hr />
<form method="GET" action="index.php">
<table border="0" align="center">
<tr>
<th align="right">ユーザ名:</th>
<td>
<select name="id">
<?php
$db=mysql_connect("COMPUTER","root","root");
$rs=mysql_db_query("test_db","SELECT * FROM scheusr");
while($aryCol=mysql_fetch_array($rs,MYSQL_ASSOC)){
print("<option value='".$aryCol['id']."' ");
if(isset($id)){if($id==$aryCol['id']){print("selected");}}
print(">".$aryCol['nam']."</option>");
}
?>
</select>
</td>
</tr>
0676675
04/07/06 18:24ID:???<td>
<input type="password" name="passwd" size="10" />
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="sbm" value="ログイン" />
<input type="reset" value="取消" />
</td>
</tr>
</table>
</form>
<?php
if(isset($_GET['sbm'])){
print("if通過した");
$sql="SELECT * FROM scheusr WHERE id='".$id."' AND passwd='".
crypt($passwd,"ZZ")."'";
$rs=mysql_db_query("test_db",$sql);
if(mysql_num_rows($rs)==0){
print("<script language='JavaScript'>");
print("window.alert('パスワードが間違っています');");
print("</script>");
print("$rs");
}else{
$aryCol=mysql_fetch_array($rs,MYSQL_ASSOC);
header("Location: hello.php?id=".$id."&nam=".urlencode($aryCol['nam']));
}
}
print("</body></html>");
ob_end_flush();
?>
0677675
04/07/06 18:24ID:???id主キー
passwd
namです
テーブルに登録されているパスワードが入力されたときに
他のページに飛ぶようにしたいのですが、
パスワードが一致するようにならないみたいなんです。
どのように変えたらいいでしょうか?
よろしくお願いします。
0678nobodyさん
04/07/06 18:28ID:???0679nobodyさん
04/07/06 18:32ID:???0680nobodyさん
04/07/06 19:08ID:???0681nobodyさん
04/07/06 21:22ID:???0682nobodyさん
04/07/06 21:36ID:???http://jp.php.net/manual/ja/ref.variables.php
0683nobodyさん
04/07/06 21:39ID:???header("Content-disposition: attachment; filename=${file_name}");
header("Content-type: application/octet-stream; name=${file_name}");
でcsvをダウンロードさせているのですが、なぜかNetscape(7.1)だけ
「test.csv.php」を開く になります。(中身は正常なcsv)
IE、Mozilla、Operaでは問題ないのですが、どなたか解決された方おられますか?
0684nobodyさん
04/07/06 21:40ID:???の間違いです。
0685alvi
04/07/06 21:59ID:A6zHoUWt前提
・A = main.php
・B = function.php
・Bには直接アクセスされたくない。だからといってhtaccessは使わないとする
・AはBをincludeする
いや、口で言うのは分かりづらいのでソース書いて実行した物をを付けます。
<?php
#A = main.php
include'function.php';
print_r($ABC);
?>
<?php
#B = function.php
$ABC[] = __FILE__;
$ABC[] = $_SERVER["SCRIPT_FILENAME"];
?>
そして、A = main.phpの出力結果は
Array
(
[0] => /home/****/public_html/function.php
[1] => /vhome/****/public_html/main.php
)
お騒がせしました。>>656さんの仰った方法で解決です。。
if ( __FILE__ == $_SERVER["SCRIPT_FILENAME"]) die('Forbidden!');
というコードが欲しかったのです。ありがとうございました。
0687nobodyさん
04/07/06 23:36ID:???WepProg界に新たな政策を呼びかけています。
アンチ民主党。取り愛ず、藻前ら嫁。
ttp://mykit.jp/pc/kapokon/index.php3
0688nobodyさん
04/07/07 02:38ID:+x8AlGbLどうしたらいいでしょうか?
0690nobodyさん
04/07/07 08:17ID:???結構あるものでしょうか?
また、ob_start();〜ob_end_flush();を使用した時の処理速度は変数
に放り込んでechoした時の処理速度と比較してどちらが早いの
でしょうか?
0692nobodyさん
04/07/07 11:10ID:HKrq5OGLURLをどなたが教えて頂けないでしょうか?
0693nobodyさん
04/07/07 11:22ID:???if($i=="10"){$hensu = $kochinohensu; }
もし10行目になったらコッチの変数にするよ。
0694nobodyさん
04/07/07 11:24ID:???PHP プログラマーズマガジンのことかね。
ついでにどうせ買うなら、2ch 系 PHP コミュのアフィリエイト通してやってくれ。
http://pear.sakura.vg/
0695nobodyさん
04/07/07 11:26ID:???0696nobodyさん
04/07/07 11:57ID:???$ time php -r 'ob_start();for($i=0;$i<1000000;$i++){echo "hoehoe";}ob_end_flush();' > /dev/null
real 0m7.346s
user 0m7.200s
sys 0m0.150s
$ time php -r 'for($i=0;$i<1000000;$i++){echo "hoehoe";}' > /dev/null
real 0m13.534s
user 0m12.800s
sys 0m0.730s
逐次書き出すより、ob_* を使用して「イッキ出し」した方が処理は早くなるようですよ。
0697nobodyさん
04/07/07 11:59ID:???crypt($passwd,"ZZ");
の結果と、対象のテーブルの値を見比べてください。
0698694
04/07/07 12:02ID:???言われるかなとは思った。
まぁ俺は俺で別のアフィリエイト ID もってるし、そもそも PHP|architect はあまり好きじゃないんで。。
最近はそうでもないかも知れないが、前までは業務用の堅実な記事が大半で面白みが無かった感じ。
0699nobodyさん
04/07/07 12:50ID:???こうやってテストするのですね。勉強になりますm(_)m。
私の環境ではphp -rというオプションが存在しないみたいなのですが、
これは環境によるのでしょうか?。
$ time php -r 'ob_start();for($i=0;$i<1000000;$i++){echo "hoehoe";}ob_end_flush();' > ./null
Error in argument 1, char 2: option not found r
real 0m0.186s
user 0m0.121s
sys 0m0.015s
$ time php -r 'for($i=0;$i<1000000;$i++){echo "hoehoe";}' > ./null
Error in argument 1, char 2: option not found r
real 0m0.471s
user 0m0.105s
sys 0m0.015s
$ time php -r 'for($i=0;$i<1000000;$i++){$k .= "hoehoe";}echo $k' > ./null
Error in argument 1, char 2: option not found r
real 0m0.171s
user 0m0.112s
sys 0m0.015s
0701nobodyさん
04/07/07 13:58ID:???CLI 版の PHP には acndefhilm"r"svwz というオプションを使用できる。CGI 版はわからない。
速さを求めるなら、出力制御するか、変数に格納して一発出力なのかな。
で、
ob_* を使うとメモリ使用量が違うらしい。
$ php -r 'ob_start();for($i=0;$i<1000;$i++){echo "orz";}echo memory_get_usage();ob_end_flush();'
orzorz...53736
$ php -r 'ob_start();$s="";for($i=0;$i<1000;$i++){$s.="orz";}echo $s, memory_get_usage();ob_e
nd_flush();'
orzorz...57136
$ php -r '$s="";for($i=0;$i<1000;$i++){$s.="orz";}echo $s, memory_get_usage();'
orz...16040
ちなみに、
$ php -r 'ob_start();echo memory_get_usage();ob_end_flush();'
52896
0702nobodyさん
04/07/07 15:06ID:???$exp[1] = 2;
for ( $i = 2 ; $i > 100 ; $i++ ){
$X = $exp[$i-1];
$Y = $i;
$Z = 3*(floor($i/10)+1);
$exp[$i] = $Z * $Y + $X;
print $exp[$i];
}
?>
HTMLに表示されないです。
分かる方いませんか?
0703702
04/07/07 15:10ID:???不等号反対だた
0704nobodyさん
04/07/07 15:56ID:???0705fushianasan
04/07/07 17:06ID:???0706nobodyさん
04/07/07 17:10ID:???最低限入れる機能(評価:極小)
自動リロードする
表示は10行程度
入れたい機能(評価:普通)
いわゆる普通のチャットシステム
自動リロードの間隔が選べる
表示の行数が選べる
入室画面がある
切断者(ブラウザを閉じた奴)は退出させる
発言者の名前がわかる
あったらいいな機能(評価:極大)
チャット中にファイルをUP・交換ができる
0709706
04/07/07 17:28ID:???オネガイオネガイ☆
0711nobodyさん
04/07/07 17:44ID:???金が無いなら元になっている雑誌(英語)は安い。
http://www.phparch.com/
自分は先に英語読んでたクチだが、結局日本語版だけにした。
少なくても自分がやるより翻訳の品質と時間コストが安いため。
定期購読方式だと割り引きになるし、毎月買わされるんじゃなくて
購入が選べるので、そっちの方がお勧め。過去の号もそこから充当できるし。
他の有名どころでは
http://www.php-mag.net/
紙のメディアでも出版されている(最近はPHP|architectも) が、
昔取り寄せが上手く出来なかった。今はどうかしらんけど。
インプレスが発行予定の雑誌っていつ発売だっけ。
初稿原稿の締め切りはもう過ぎたようなので、今月末ぐらい?
0713nobodyさん
04/07/07 18:43ID:???Unix系の tail のような機能を作りたいんですが
だれかそういう関数をつくっテイル人いますか?
0714nobodyさん
04/07/07 18:44ID:???0715nobodyさん
04/07/07 18:46ID:???php-mag、トラブル多いけどそれなりに届くよ。でも高いのよね。
PDF エディション出てるので、今ならそっちお勧めする、
0716nobodyさん
04/07/07 19:23ID:???0718nobodyさん
04/07/07 19:45ID:???トリガなしで汎用的に監視がしたいならFam関数+αだろう。
0719nobodyさん
04/07/07 20:56ID:H1YWjpHJソース内で
mb_http_output("UTF-8");
mb_internal_encoding("UTF-8");
で指定してもサーバ側が別だとエンコードされません。
ソース内の指示よりphp.iniの方が優先順位が高いのでしょうか。
0720nobodyさん
04/07/07 21:12ID:???mb_http_outputはphp.iniで
output_handler = mb_output_handler
となっているか、ob_start('mb_output_handler')してからだろ。
mb_internal_encodingやmb_http_inputは既に読み込まれている
スプリクトや$_POST,$_GETの文字エンコードは変換されない。
0721nobodyさん
04/07/07 22:22ID:uCG1B5VOSESSIONを使って買い物カゴ的なものを作りたいのです。
・formのラジオボタンで選択したほうの商品名を表示する
・選択した回数に応じて個数を加算していき、それを表示する。(表示ページから入力ページには戻れるようにしてある。)
上記のようなものを実現するにはどのようにしたらよいのでしょうか?
抽象的な表現でもうしわけありませんが、是非よろしくお願いします・・・。
0722nobodyさん
04/07/07 23:02ID:???そこまで決まってるなら後はスクリプトを書くだけなのだが...
サンプルが欲しいなら「ショッピングカート php セッション」あたりでググってみたら?
0723nobodyさん
04/07/07 23:13ID:H1YWjpHJつまり ob_start() 使うとエンコーディング出来ないって事ですか
■ このスレッドは過去ログ倉庫に格納されています