トップページ⇒php
1001コメント311KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/06/14 14:36ID:???
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。


■本家
 http://www.php.net/

■日本 PHP ユーザ会
 http://www.php.gr.jp/

■PHP マニュアル
 http://www.php.net/manual/ja/

■PEAR マニュアル
 http://pear.php.net/manual/ja/

過去スレ, 関連スレ等>>2-4


抜けているものがあったら補足願います
0577nobodyさん04/07/04 00:49ID:???
573の思考レベルと575の反応に驚愕した。
脳ミソの変わりにくらげとか入ってないか調べたい。
0578nobodyさん04/07/04 01:22ID:???
>>576
メールの件名は特別だから。
詳細をググって調べるべし。
↓と同じ感じでjcodeつかってできるようにがんがれ。
$title = "件名";
$title = "=?iso-2022-jp?B?" . base64_encode(i18n_convert($title, "JIS")) ."?=";
057957604/07/04 01:49ID:???
>>578
以下2行の追加で直りました。

$title = base64_encode($title);
$title = "=?iso-2022-jp?B?" . $title . "?=";

ありがとうございました!
0580nobodyさん04/07/04 06:26ID:???
>>573は釣りだろ。間違ってはいないけど、
「100円のものを1000個買いました。全部でいくらですか」
という問題を100を1000回足して答えを出すのに近いな
0581nobodyさん04/07/04 07:41ID:???
例えがおかしい。
釣りか?
なぜネストの話が
つーかALUでは加算の繰り返(ry
0582nobodyさん04/07/05 10:41ID:???
$encoding = mb_detect_encoding('美乳');
0583nobodyさん04/07/05 13:28ID:???
美乳コードキタ━━━━━━(゚∀゚)━━━━━━!!!!
0584nobodyさん04/07/05 16:02ID:???
<?php
$LV3 = $LV2 - $LV
$STR3 = ($STR2 - $STR) / $LV3;
$CON3 = ($CON2 - $CON) / $LV3;
$DEX3 = ($DEX2 - $DEX) / $LV3;
$INT3 = ($INT2 - $INT) / $LV3;
$LUCK3 = ($LUCK2 - $LUCK) / $LV3;
$CHA3 = ($CHA2 - $CHA) / $LV3;
?>

↑
Parse error: parse error, unexpected T_VARIABLE

と出るのでしょうが・・・
T_VARIABLEというのは何でしょうか?
0585nobodyさん04/07/05 16:05ID:???
>>584
$LV3 = $LV2 - $LV
セミコロンがないです。
0586nobodyさん04/07/05 16:06ID:???
だぁぁ!しまった!こんな初歩的なミスを・・・
>>585様有難うございます><
058758404/07/05 16:09ID:???
教えて君すみません・・・
Division by zero in とはどういう意味なのでしょうか・・・ガクガクブルブル
0588nobodyさん04/07/05 16:11ID:???
0で割っただろ!
それくらいの英語読め
0589nobodyさん04/07/05 16:14ID:???
あれ?おかしいな・・・
$LV2に8、$LVに4入れても同じエラーが・・・
0590nobodyさん04/07/05 16:22ID:???
LV3の中身を確認しながら実行しれ
確認の仕方はマニュアル読んで調べろ
0591nobodyさん04/07/05 16:30ID:???
if($LV2 = 0 or $LV = 0){
print "レベルが入力されていません。";

}else if($STR2 < $STR or $CON2 < $CON or $DEX2 < $DEX or $INT2 < $INT or $LUCK2 < $LUCK or $CHA2 < $CHA){
print "入力した値がおかしいです。";

}else{

}

これを使ったあと全部に0が入ってた〜(なぜだ
0592nobodyさん04/07/05 16:34ID:???
>>591
あはははは。
0593nobodyさん04/07/05 16:36ID:???
某ゲームの作ってるんだが・・・
ttp://cgi.f44.aaacafe.ne.jp/~phpworld/002/seityo.php

値を出した後、ページが表示されない・・・
ソースを見ればHTMLがあるのに
0594nobodyさん04/07/05 17:13ID:???
>>591
最初の行
0595nobodyさん04/07/05 17:14ID:???
if($LV2 = 0 or $LV = 0){
もし$LV2=0で$LV=0なら じゃないんですか!?
0596nobodyさん04/07/05 17:18ID:???
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
★                                             ☆
☆ 質問者が返信する時は名前欄に「最初に質問したレス番号」を入れろ ★
★                                             ☆
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

>>595
お前はアホか・・・
$LV2=0、$LV=0にして>>584の計算をしてみろよ
0597nobodyさん04/07/05 17:20ID:???
>>595
"で"でつなぐならand
日本語の勉強もしなさい
0598nobodyさん04/07/05 17:28ID:???
>>584
比較演算子が間違ってますよ
くだらねー
0599nobodyさん04/07/05 17:31ID:???
>>593
<TITLE><TITLE>
を
<TITLE></TITLE>
とすれば解決。
何が原因が分からない時は問題の絞込みってやつをするといいyp。
0600nobodyさん04/07/05 17:56ID:???
今日はおもしろいですね
0601nobodyさん04/07/05 18:10ID:???
>>597
待て
0602nobodyさん04/07/05 18:19ID:???
っていうか、
>>584
>>587
>>591
>>593
が同一だったのか。
0603nobodyさん04/07/05 20:00ID:???
>>595
if文の時は == にしないとダメなんじゃなかったっけ??
0604nobodyさん04/07/05 21:01ID:???
「if文の時は」とか意味不明なことを言うなよな。

>>595
= は代入演算子だから比較の意味では使えない。
比較には == や === などを使う。詳しくは下記を読め。
http://www.php.net/manual/ja/language.operators.comparison.php
http://www.php.net/manual/ja/language.operators.assignment.php
0605nobodyさん04/07/05 21:01ID:???
>>603
if文というよりも、比較演算子'=='と代入演算子'='は別物。
0606nobodyさん04/07/05 21:02ID:???
一時間後でかぶるなYO ヽ(`Д´)ノ ウワァァン!!
0607nobodyさん04/07/05 21:07ID:???
おい!もまいら!
unexpected T_IF
ってなんだYO!
0608nobodyさん04/07/05 21:18ID:???
今日は変なやつが一匹紛れ込んでるな。
0609nobodyさん04/07/05 21:25ID:???
>>607
ファイルに保存されないぽ
これのエラーを直せたら教えてやる


if($action == "action"){
if(($NAME != "") && ($COMMENT != "")){
$NAME = htmlspecialchars($NAME);
$MAIL = htmlspecialchars($MAIL);
$COMMENT = htmlspecialchars($COMMENT);
$COMMENT = nl2br($COMMENT);
$COMMENT = str_replace("\r", "", $COMMENT);
$COMMENT = str_replace("\n", "", $COMMENT);
$input_msg = implode(",", array($NAME,$MAIL,$COMMENT,$time,$host));
$message = file($data);
$fp = fopen($data, "w"); //書き込みモードでファイルを開く
rewind($fp);
fputs($fp, "$input_msg\n");
if($data_max <= sizeof($message))
$msg_num = $data_max - 1;
else
$msg_num = sizeof($message);
for($i = 0; $i < $msg_num; $i++){
fputs($fp, $message[$i]);
}
fclose($fp);
unset($message);
}
}
061060904/07/05 21:30ID:???
スマン、普通にアホなミスしとったわい・・・
fputs($fp, "$input_msg\n");
これで保存したんだがデータが上書きされる・・・
0611nobodyさん04/07/05 21:43ID:dk5OZx2a
setcookieで書き込みはできるんですが
消す場合はどうしたらいいのでしょうか?
0612nobodyさん04/07/05 21:45ID:???
>>610
>$fp = fopen($data, "w");
あなたの書いた通りに動いているだけです。
PHPマニュアルのfopenのページをご覧あれ。
0613nobodyさん04/07/05 21:46ID:???
>>611
そんな時のためのマニュアルですよ?
0614nobodyさん04/07/05 21:47ID:???
>>603
もうちょっと勉強しようぜ
0615nobodyさん04/07/05 21:51ID:???
CGIでフレームがないけどフレームみたいなページできたよね?
あれってPHPでもできんのけ?
0616nobodyさん04/07/05 21:52ID:???
>>609
>fputs($fp, $message[$i]);
上書きされるのはwriteでファイル開いてるんだから当然として
とりあえず改行コードが抜けているぞ。
0617nobodyさん04/07/05 21:57ID:???
>>615
JavaのSiteMeshみたいな?
できるかできないかでいえば「できる」けど書くのが面倒なら
そのCGIに任意のHTMLやPHPスクリプトを読み込ませてもいいんじゃない?
プロキシみたいなもんで、ブラウザの代わりにURIにアクセスして
レスポンスボディをレイアウトし直したり、リンクのURIを書き換えたりしてるだけだと思うから。
0618nobodyさん04/07/05 21:58ID:???
T_VARIABLE や T_IF の意味がわからない人は

「PHP まぬある 付録 P. パーサトークンの一覧」
ttp://www.php.net/manual/ja/tokens.php

を読んでけれ。

"Parse error: parse error, unexpected T_VARIABLE" などという
エラーが表示された場合は、「私ってば PHP の構文解析をして
いるパーサですが、あなたの書いたソースを読んだら構文解析
に失敗しますた。予期せぬ位置に変数が表れたわよ。」と読む。

大抵の場合、パースエラーの出た変数の手前に問題があって、
セミコロン忘れてますた。括弧を閉じ忘れてますた。とかそういう
ことだたーりする。


だと思う。
061961804/07/05 22:04ID:???
「誤」
>大抵の場合、パースエラーの出た変数の手前に問題があって、
「正」
大抵の場合、パースエラーの出たイ "トークン" の手前に問題があって、

マチガエタ。サヨウナラ。サガサナイデクラハイ。
0620nobodyさん04/07/05 22:07ID:???
掲示板の多重投稿拒否はクッキー使わないとムリかな?
0621nobodyさん04/07/05 22:20ID:???
>>618
しってるよばーかマヌケ

>>620
スレとかんけーねーよ無能
0622nobodyさん04/07/05 23:00ID:???
>>620
多重投稿"ミス"なら、投稿履歴と照らし合わせて
「多重だったら」という処理をすることでもいい。
投稿履歴にはhiddenでユニークな投稿キーを埋め込んでおいて、
それを履歴リストに残して多重チェックするのが普通かな。
履歴リストの分量や、Webブラウザのキャッシュに入力フォームが
残らないようにするとか、細かいところは工夫してください。
0623nobodyさん04/07/05 23:37ID:???
form action="{$_SERVER['PHP_SELF']}"型の掲示板スクリプトで、
投稿後にリロードして再投稿するミスを防ぐなら、header("Location {$_SERVER['PHP_SELF']}")
で同一ページに飛ばすテクもある。
062462004/07/05 23:58ID:???
>>622-623
難しそうだったので表示と書き込みをPHPごとにわけますた・・・
あり><
062562004/07/06 00:16ID:???
これから出来たプログラムはここへ載せていくのでよろ><
ttp://cgi.f44.aaacafe.ne.jp/~phpworld/
0626nobodyさん04/07/06 00:25ID:???
それみろ馬鹿タレ供
0627nobodyさん04/07/06 01:20ID:???
>>623
HTTP仕様ぐらい準拠しようよ。
0628nobodyさん04/07/06 01:34ID:???
>>625
もっとがんがれ
0629nobodyさん04/07/06 02:02ID:???
>>625
phpworld/というアカウントにワラタ
随分と大きく出たものだw
0630nobodyさん04/07/06 03:48ID:???
winXPでApache2+phpモジュールな環境を作ろうと思ってます
すでに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:???
>>630
>Apache2.0.43
が古くて、最近のSAPIの仕様とは違ってるんじゃないの?
Apche2.0.50+PHP4.3.7でやってみな。
0632nobodyさん04/07/06 07:53ID:???
for文を用いてIDチェックしたいんだが
for文から抜け出すことは可能だろうか・・・
0633nobodyさん04/07/06 08:02ID:???
>>632
>>613 RTFM
0634nobodyさん04/07/06 09:30ID:???
男ならPHP5だろ。
0635nobodyさん04/07/06 10:28ID:???
txtファイルなどに変数を書き込んで、phpで読み込む事は出来ますか?
includeだとphpファイルの変数しか読み込めないので、txtファイルの中の変数を読み込みたいのです。
よろしくお願いします。
0636nobodyさん04/07/06 10:39ID:???
>>635
txtファイルは
<?php
$baka = "試せ";
?>
これをincludeしてみ
0637nobodyさん04/07/06 10:46ID:???
>635
ttp://www.php.net/manual/ja/function.parse-ini-file.php

とか、どーですか。
063863004/07/06 10:56ID:???
>>631
インストーラバージョンをインストールしてたのが原因でした・・・。
英語ちゃんと読んでませんでした
レスどうもです
0639nobodyさん04/07/06 11:01ID:???
うーん
普通に<?phpとか書いてない txtファイルを読み込んで
その中に入ってる$hoge とか言う変数を読み込みたいのです
064063804/07/06 11:05ID:???
すみません。解決しました
0641nobodyさん04/07/06 11:08ID:???
>>639
その程度の問題を自分で解決できないならプログラム組むのやめた方が良いね
とりあえずマニュアルのファイルシステム関数ページを読めよ

ttp://www.php.net/manual/ja/ref.filesystem.php
0642nobodyさん04/07/06 11:46ID:???
ありがとう641 637 636
解決しました(^^
0643nobodyさん04/07/06 12:04ID:Rny+MH6z
▼index.php
<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」と表示したかった
のですが、原因がわかりません。おわかりの方がいましたらご教授
お願いします。
0644nobodyさん04/07/06 12:11ID:???
>>643
<?php print($_GET['a']) ?> ではないの?
0645nobodyさん04/07/06 12:14ID:NBQAU1O/
<
0646nobodyさん04/07/06 12:15ID:NBQAU1O/
<
0647nobodyさん04/07/06 12:15ID:5MCxUUr8
<?= print($_GET['a']) ?>
を
<?php print($_GET['a']) ?>
では?
0648nobodyさん04/07/06 12:16ID:???
>643
質問の要旨とは関係ないけど、二重引用符と単一引用符を
入れ替えた方が良い。

どこに問題があるか見極めるには、静的な HTML を書いて、
get.php を呼びだしてみたりするとか。

とりあえず、index.php で生成される HTML を良く眺めることを勧める。
064964304/07/06 12:28ID:mpLQA1tZ
できましたm(__)m
みなさん、レスどうもです。
<?php print($_GET['a']) ?>が正しいようでした。

>>648
二重引用符と単一引用符を入れ替えてみました。
ソースを見るとこちらのほうがよさそうですね(実はあまり意味がわかって
いませんが・・)

それにしても1時間くらい悩んでいたので助かりました。
ありがとうございました。
0650nobodyさん04/07/06 13:12ID:???
なるほど、printはTUREを返すのか。
0651nobodyさん04/07/06 13:13ID:???
TRUE... orz
0652alvi04/07/06 13:14ID:A6zHoUWt
ど忘れしてしまったので教えて下さい。

includeされるファイル
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 "あいうえお"?>
は同じ結果が得られるわけだな。
0654nobodyさん04/07/06 13:31ID:???
>>652
何を訊きたいのかよく分からないんだけど
0655nobodyさん04/07/06 13:53ID:???
>>652
phpinfo
0656nobodyさん04/07/06 14:01ID:???
>>652
__FILE__
0657nobodyさん04/07/06 14:04ID:???
>>653
<?=[var]?>は<?php echo[var]?>のエイリアス。
<?="あいうえお","かきくけこ"?>はできても
<?php print "あいうえお","かきくけこ"?>はできない
0658alvi04/07/06 14:28ID:A6zHoUWt
簡単に言うと、
includeするファイルがあり、そのincludeされるファイルをincludeするファイルのなかで使用する為に
includeされるファイルへ何を書くとそのincludeされるファイルのファイル名を取得できるのでしょうか?

>>656
今、外出する直前で確認出来ないのですが、__FILE__ですか?
phpinfoでは分かりませんでした。(include等は使っていない為)
0659nobodyさん04/07/06 14:55ID:???
> <?php print($_GET['a']) ?>が正しいようでした。

こんな答え方をしている時点で、何も理解していない、理解する気もないって感じだな。
0660nobodyさん04/07/06 15:24ID:???
>>658
ごめんどういう意味かぜんぜん分からない。includeするほうをA、されるほうをBとして説明してくれないかな?
0661nobodyさん04/07/06 15:31ID:???
include($file)でincludeされた$fileのファイル名が知りたいと言っている
のだと想うのだが、そんな関数ありましたっけ?
0662nobodyさん04/07/06 15:42ID:???
ふざけた質問申し訳ないんだが
HTMLタグの<TD>〜</TD>の中にPHP構文を入れるとエラー出るのか?
0663nobodyさん04/07/06 15:43ID:???
>>658
ぜんぜん簡単に書かれてないぞw

includeされた場合はmain.php、直接動かした場合はfunction.phpで切り分けできるでしょ?
何か問題でも
0664nobodyさん04/07/06 15:45ID:???
>>662
ふざけた質問なら、誰も答えない
066566204/07/06 15:45ID:???
<?phpが<? phpになってた_| ̄|○
0666nobodyさん04/07/06 16:11ID:???
おい、質問なんだが
計算結果が4になるんだがこれを4.00と表示したい
こんな時どうするか教えやがれぬるぽ
0667nobodyさん04/07/06 16:21ID:???
>666
$値 = 4;
$桁 = 2;
echo number_format($値, $桁);
066866604/07/06 16:26ID:???
>>667
激しく感謝!
0669nobodyさん04/07/06 16:30ID:???
マニュアル嫁よ。。。
0670nobodyさん04/07/06 16:35ID:???
夢は長く見させてあげようよ。。。
0671nobodyさん04/07/06 17:18ID:???
マニュアルなんて読むかボケェ
お前らがマニュアル引き係じゃぁ


と思っている輩が質問してる訳です
0672nobodyさん04/07/06 17:22ID:???
まぁ、確かにそんな風な質問が多いなぁ。
0673nobodyさん04/07/06 17:22ID:???
>>671
あたりまえじゃん
0674nobodyさん04/07/06 17:51ID:???
>>671-673
目腐ってんじゃねーの。
どこにそんな高等な質問があるんだよ。
0675nobodyさん04/07/06 18:24ID:???
<?php
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>
067667504/07/06 18:24ID:???
<th align="right">パスワード:</th>
<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();
?>
■ このスレッドは過去ログ倉庫に格納されています