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

【PHP】下らねぇ質問はここに書き込みやがれpart10

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/09/25(日) 02:03:45ID:nLUfPXhD
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
0153nobodyさん2005/09/28(水) 19:16:22ID:???
ブラウザからソースを見た時にhiddenの値がわかるのが嫌なので、下記のように書きました。
<?
echo"<input name='test' type='hidden' value='テスト'>";
?>

でも、echoなので書き出され、表示されます。
何か良い方法、書き方はありませんでしょうか?
0154nobodyさん2005/09/28(水) 19:19:13ID:???
結局何がしたい?
0155nobodyさん2005/09/28(水) 19:20:55ID:???
>>154
hiddenの値をソース上では隠したいです。
0156nobodyさん2005/09/28(水) 19:27:23ID:???
>>155
セッション変数あたりを勉強すればいいと思う
0157nobodyさん2005/09/28(水) 20:01:23ID:qeEepy5X
他のphpをincludeして出力された結果を、
変数に格納したいのですがどうすればいいでしょうか?
0158nobodyさん2005/09/28(水) 20:25:26ID:???
うーん・・・
0159nobodyさん2005/09/28(水) 20:56:33ID:???
includeして出力された結果、って意味が分からんもんなあ・・・。
これだけ書いとけばヒントになるかな?

---included.php---
<?php
$string = 'テラワロス';
?>

--show.php--
<?php
include 'included.php';
echo $string; // “テラワロス”が出力される
?>
0160nobodyさん2005/09/28(水) 21:35:42ID:???
取得したIPアドレスを許可IPリストと照合して
マッチしたらスクリプトを終了。しなかったらURLにリダイレクト。
というような機能のスクリプトを書いたのですが、「211.102.103.65」の
最後の二桁の数字(65)が変動するので変わるたびに新しくリストに
登録しなければいけません・・・
後ろ二桁の「65」がマッチしていなくても「211.102.103」の部分がマッチすれば
TRUEを返すようにしたいのですが、どのようにすればいいのでしょうか?
よろしくお願いします。

ソースは次にかきます↓
0161nobodyさん2005/09/28(水) 21:36:30ID:???
<?php


//許可IPリスト
$ip_list = array("211.102.103.65",
"216.102.103.65",
"208.102.103.65",
"201.102.103.65");

$url = "http://hoge.org"; //リダイレクトするURLを変数に代入
$get_ip = $_SERVER['REMOTE_ADDR']; //取得したIPアドレスを変数に代入



//IPアドレスのチェック
foreach ( $ip_list as $value ) {

if (ereg ($get_ip, $value) ) {
exit;

}
else {
header ( "Location: $url" );
}
}
?>
0162nobodyさん2005/09/28(水) 21:39:04ID:???
正規表現
01631572005/09/28(水) 21:53:48ID:???
説明不足ですいませんでした。
phpファイルにはスクリプト以外にhtmlソースも混ざっていて、
それの出力結果を変数に入れるということです。
0164nobodyさん2005/09/28(水) 22:36:21ID:???
>>160
後方一致なんかでよければ、正規表現使うよりもstrstr。
0165nobodyさん2005/09/28(水) 22:46:52ID:???
>>161
なんでeregを使ってるのにわざわざそれを無視するような使い方してんだ?
0166nobodyさん2005/09/28(水) 22:50:38ID:???
っ ip2long

IPv6は扱えないけど
0167nobodyさん2005/09/29(木) 01:35:01ID:???
PerlでNet::CIDR::Liteモジュール。
0168nobodyさん2005/09/29(木) 02:38:30ID:???
ttp://jp.php.net/manual/ja/ref.network.php
0169nobodyさん2005/09/29(木) 03:39:41ID:???
>>163
ob_start();
include('includefile.php');
$data = ob_get_contents();
ob_end_clean();
01701572005/09/29(木) 06:03:27ID:FSfI9Iaf
>>169さんのレスにより、無事解決しました。
ありがとうございました。
0171nobodyさん2005/09/29(木) 10:06:58ID:M2gqALef
エラーハンドラ関数(set_error_handler で指定された関数) の内部でエラーを発生させても
無限ループしないのは何故ですか?
上の例では foo で発生したエラーに対してエラーハンドラ関数が適用"されない"のに対し、
下の例では var で発生したエラーに対してエラーハンドラ関数が適用"されます"。
ぶっちゃけこういう仕様のほうがプログラミングが楽ちんなんですけど
なんか仕組み的に納得いかないもので。

------------------------------------
function foo(){
$x = 1 / 0;
}
set_error_handler('foo');
$a = 1 / 0;
restore_error_handler();
------------------------------------

------------------------------------
function foo(){
echo 'ERROR';
}
function var(){
$x = 1 / 0;
}
set_error_handler('foo');
var();
restore_error_handler();
------------------------------------
0172nobodyさん2005/09/29(木) 11:56:56ID:7Ojuf/BR
>>161
性器表現できないなら、explodeで前3つ保存すれば?性器表現を勉強するんだな。ユーザーエージェントとホストで弾けばいいんジャマイカ?
0173nobodyさん2005/09/29(木) 14:34:05ID:???
>>172
精器表現…
0174nobodyさん2005/09/29(木) 17:25:57ID:???
環境的なことをきいても大丈夫ですか?
php.iniまわりの話なんですが
0175nobodyさん2005/09/29(木) 17:35:25ID:???
質問です。
GDライブラリを使って画像出力をしてます。
沢山の図形や線を様々な色を使って描画するのですが、
一定数以上の図形を出力すると、
図形そのものは表示されるのですが図形の色が途中から全て同じになります。
phpの初期設定周りが原因なのでしょうか。解決出来ず困っています。
0176nobodyさん2005/09/29(木) 17:52:56ID:???
メモリ不足なんじゃ?
0177nobodyさん2005/09/29(木) 18:07:21ID:???
>>176
それも疑ったんですが、結構積んでるのでその心配はないかと。
CGIとして動かしてるので、
apacheとか別の所で引っかかってるんでしょうか...。
0178nobodyさん2005/09/29(木) 18:35:39ID:???
>>177
メモリ積んでてもphp.iniで制限してたら意味なし
memory_limit = 500M
とかやっとけ
0179nobodyさん2005/09/29(木) 18:48:29ID:???
>>175
くだらない質問じゃないから、も少し詳しい状況と
実際に使ってる環境とスクリプトソースをMLに投げたら?
ここでもいいけど追試してくれる母数が大きいところで調べた方がいいと思う。
0180nobodyさん2005/09/29(木) 18:48:39ID:6Acw6xK3
質問です。

$val_tmp2 = 'ポストする文字列
項目1(タブ)項目2
111(タブ)222';
$val_tmp2 = urlencode($val_tmp2);
$val_length = strlen( $val_tmp2 );
$val_tmp1 ='POST /recive.cgi HTTP/1.0
Content-Type: text/csv
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: hoge.hage.com
content-length:' . $val_length';
$val_out = $val_tmp1 . "\n\n" . $val_tmp2;
$val_sock = fsockopen( 'host_name', 80, $val_error_no, $val_error_msg, 120 );
if( $val_sock == false ){
print "bom1<BR>\n";
exit( 1 );
}
$val_ret = fwrite( $val_sock, $val_out );
fclose( $val_sock );

としたのですが、どうしてもval_tmp2の値が受け側で取得できません(それ以外はOKでした)
どのようにしたら取得できるでしょうか?
0181nobodyさん2005/09/29(木) 18:58:00ID:???
>>178-179
有り難うございます。
メモリの設定値をいじってもダメでした。
MLに質問してみます。
0182nobodyさん2005/09/29(木) 19:01:00ID:???
>>180
> $val_out = $val_tmp1 . "\n\n" . $val_tmp2;
ここの\n\nでHTTPヘッダが終了してるんじゃないの?
0183nobodyさん2005/09/29(木) 19:05:31ID:???
>>180
PHPで受け取るならname=value&name1=value1の形式で
Content-type: application/x-www-urlencoded
がないと$_POSTには入らない
で$_POSTになければ$HTTP_RAW_POST_DATAを見てみたらあるかも
0184nobodyさん2005/09/29(木) 19:54:27ID:???
Content-type: application/x-www-form-urlencoded
だった
0185180 2005/09/29(木) 19:58:12ID:???
>>183氏
ありがとうございます。
しかしダメでした…

調べたところ、STDINには入っているので、最悪そちらを使えばいいかなとも思っています。
しかし正常に動かないのは癪なので、もしわかる方がいたら教えてください。
0186nobodyさん2005/09/29(木) 20:14:21ID:???
>>185
reciev.cgiはPHPなのか
PHPならContent-typeがapplication/x-www-form-urlencodedかmultipart/formdata以外のときは$HTTP_RAW_POST_DATAにPOSTデータが入る。
application/x-www-form-urlencodedかmultipart/formdataのときはその仕様に合ったデータじゃないとダメ
Perlなら何も考えずSTDINから読み込めばいい
01871802005/09/29(木) 21:10:24ID:???
>>186氏
失礼しました、中身はphpです。
で、cgiとして動かしたところ、HTTP_RAW_POST_DATAがどうしてもとれませんでした。
cgiでは無く、phpとして動かすとなんの問題も無く取れたのですが…。
もしかしたらサーバの設定とかそういう話なのかな、と思ったのですが、
ちょっと今のところわからないので、とりあえず保留にしました。
しかしどうにかデータの取得自体は出来たので、なんとかなりそうです。
ありがとうございました!
0188nobodyさん2005/09/29(木) 22:33:47ID:???
質問です。

sample.phpに

switch ($_GET['id']) {
case "1" : $sql="WHERE id=1";break;
case "2" : $sql="WHERE id=2";break;
case "3" : $sql="WHERE id=3";break;
default : $sql="";

と記述してあるとします。
この時、ブラウザからhttp://〜/sample.php?id=2と入力すると、
idが2のデータが出力されますよね。
上記の例の様に3件程度ならcase文でも構わないのですが、
仮に300件とかある場合、case文で300行書くのは非効率の様に思えます。
ここのidの部分を動的に変更する事は出来るのでしょうか?

例えば

if($_GET['id']){ $sql="WHERE shop_id=$_GET['id']";}

みたいな感じで、受け取ったidをWHEREで使う様なやり方です。
ちなみにこのまま命令文は、エラーがあるらしく何も表示されませんでした・・・。
PHP Version 4.3.10、MySQL 4.0.20という環境です。
どうか宜しくお願いします。
0189nobodyさん2005/09/29(木) 22:43:07ID:???
>>188
$sql="WHERE shop_id={$_GET['id']}"

でも、とっても危険だよ。。
0190nobodyさん2005/09/29(木) 23:01:56ID:???
>>188
?id= の後ろにセミコロン入れられると、悪い人の任意のSQLをさしこまれちゃうよ。
UPDATEとかDELETEとか。
こうしな
$sql = "WHERE shop_id=" . (int)(@ $_GET['id']);
まあゼロをどう扱うかは自分で調節して。
01911882005/09/29(木) 23:02:17ID:???
>>189
早速のお答え、どうもありがとうございます。
ちゃんとidが動的に切り替わり、表示される様になりました。
・・・ですが、「とっても危険」という言葉が非常に気になっています・・・。
何がどういう点で危険なのか教えて頂けないでしょうか?
また、危険にならない代替案ってあるんでしょうか?
質問ばかりでスイマセン・・・。
01921882005/09/29(木) 23:04:02ID:???
>>189=190
書き込みが重なってしまった様で申し訳ありません。
アドバイス、どうもありがとうございました。
0193nobodyさん2005/09/29(木) 23:51:19ID:???
>>191
$_GETには任意の文字列を入れることが出来るから、「;」で区切って
次のSQL文を自由に入れられてしまう。そうなったら編集も削除も思いのまま。
だからSQL文に渡す場合は何かしらのフィルタリングを自分ですることになる。
(今回の場合は数字以外の文字列があったら消すとかエラーで弾くとか)

この辺は自分で勉強しないと身に付かない。勉強が嫌なら下手に触らない事。
0194nobodyさん2005/09/29(木) 23:59:10ID:???
お聞きします。
掲示板や、メールフォームですぐに送信させずに
入力画面→確認画面→送信完了画面という3ページの構成だったとします

で、確認画面でやり直しをしたい時、ブラウザの戻るもしくはhistory.back関数で
戻ったときに、フォームに入力した内容を保持させるためにはどうすればいいんでしょうか?
0195nobodyさん2005/09/30(金) 00:04:41ID:???
>>194
ブラウザのキャッシュの問題だから確実な解決手段はない
0196nobodyさん2005/09/30(金) 00:07:15ID:???
>>195さん
なるほど。
こちら側でキャッシュさせるようにすれば、少しは確実になるってことになるってことですかね。
session や、hiddenか何かでやるかと思ってました。
ありがとうございました(・∀・)
0197nobodyさん2005/09/30(金) 01:04:12ID:???
>>191
SQLインジェクション でググると色々出てくるので、質問よりそっち見たほうが早い
・・・確か価格.comの件ってこれだったよな?あの件以来価格.comに登録してあった
アドレスにspamが来るんだが・・・

>>196
どうしてもやりたいなら「前の画面に戻る」リンクを作り、そこで戻させるように
するしかない。それでもブラウザの戻るで戻られたら意味がないけど。

そういやFirefoxだとブラウザの戻るで戻っても残ってたな・・・
0198nobodyさん2005/09/30(金) 01:37:08ID:???
>>197
俺もspam来てる。

そりゃ、0day-attackとかなら許せるけど、SQLインジェクションとか・・もう馬鹿かと・・・。
きっと他にも大量に穴があったんだろうなぁ。
0199nobodyさん2005/09/30(金) 02:17:32ID:???
>>196
逆だと思うぞ。
確実にやりたいなら、クライアントの挙動に期待などせずに(つまりキャッシュなぞ”させない”)
サーバ側で言うとおりセッション何ぞで管理するこった。
0200nobodyさん2005/09/30(金) 07:36:44ID:???
>>191
とにかくGET POST COOKIEは入力値をチェックしてから使え
if (strstr($_GET['id'], ";")) { echo "氏ねバカアホ"; exit; }
elseif (!is_numeric($_GET['id'])) { echo "いたずらはいやずら"; exit; }
0201nobodyさん2005/09/30(金) 08:33:55ID:FAEPRLcc
何処に依託してたのか非常に気になる所ですな。
0202nobodyさん2005/09/30(金) 09:11:32ID:???
まぁ、安く仕上げようと適当な中小使ったんだろ。>>価格.com
0203nobodyさん2005/09/30(金) 10:40:52ID:???
>>188
お前とりあえずPHPの参考書をせめて2〜3冊は読んでみろよ。
基礎の基礎を知らずにやってても上達しない。
セキュリティ対策云々とかの前に、idに変数を代入するというような
プログラミングにおける超基本的な思考が出来てない。
この調子じゃ配列なんか絶望的だな。
0204nobodyさん2005/09/30(金) 11:14:51ID:???
>>203
?
0205名無したん(;´Д`)ハァハァ2005/09/30(金) 13:37:42ID:kjDGUNft
preg_nantoka() で使える正規表現 の \w は
[a-zA-Z0-9_] と等価という認識で問題ありませんか?
0206nobodyさん2005/09/30(金) 13:43:35ID:???
http://jp.php.net/manual/ja/pcre.pattern.syntax.php
0207nobodyさん2005/09/30(金) 13:46:02ID:???
copy関数は同時にアクセスあれば壊れる可能性は少なからずある?
0208nobodyさん2005/09/30(金) 13:47:11ID:???
あ、コピー先のファイルがってことです。
0209nobodyさん2005/09/30(金) 13:49:21ID:???
少なからずあるといえばあるが、可能性は限りなく少ない
02101882005/09/30(金) 14:48:49ID:???
>>193
>>197
>>200
>>203

大勢の方からのアドバイス、本当に感謝しております。
一度基本から、じっくりと勉強し直してみる事にします。
さっそく今日辺り、
「基礎PHP」か「はじめてのPHP言語プログラミング入門」でも
買ってこようかと思います。
親身なご指導、本当にありがとうございました。
0211nobodyさん2005/09/30(金) 15:03:14ID:???
>>207-209
どうでもいいけど、最近ネット上でもリアルでも「少なからず」と「少なくとも」の意味をごっちゃに使ってる香具師を少なからず見かけるな。
「少なからず」は少なくはないって意味なんだが。
まあ言葉の意味なんて時代と共にうつりかわっていくのかね。
スレ違いな話でスマソ
0212軟式PHP2005/09/30(金) 15:54:03ID:???
爺乙。
0213nobodyさん2005/09/30(金) 15:54:16ID:???
掲示板、チャット等をCSVファイルを使って作るのは、時代遅れなんですか?
0214nobodyさん2005/09/30(金) 16:00:18ID:0T6o3fdx
文字列の"false"をbooleanのfalseとして認識させるには、
自分でチェックするしかありませんか?
0215軟式PHP2005/09/30(金) 16:02:04ID:???
>>213
時代遅れってこともないけど、環境によっては仕方ないんじゃないのかな。
データベースが使える環境なら、絶対使ったほうが開発は楽。
シリアライズを使って作るのもありじゃないかなぁと思うけど
ログが多くなってきた場合のアンシリアライズの速度や、
過去ログ管理が面倒さが気になるけどやったことないので分からない。
0216nobodyさん2005/09/30(金) 16:06:56ID:???
>>210
おまいさんには↓の本がオススメだ。PHPに限らずプログラムを理解しやすい。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4798006696/

ただし今は注文できないみたい。絶版か??
0217nobodyさん2005/09/30(金) 16:26:13ID:???
>>210
PHPもだが、今回の場合はMySQLの話も関わってるのをお忘れなく。
0218nobodyさん2005/09/30(金) 16:28:17ID:???
日販より
ttps://www.honya-town.co.jp/servlet/jp.co.honya_town.p3.HSsearchServlet?ipg=1&iqm=2&isc=999999&ici=ZB01&ibo=&itm=0&ib1=1&ib2=2&ib3=4&ib4=8&ipu=&iop=0&iau=&ioa=0&isy=&ism=&iey=&iem=&ifr=&ifm=0&iol=20&ipr=0&ibt=0&iis=4798006696&x=46&y=20
絶版ではないらしい。品切れ扱い。
0219nobodyさん2005/09/30(金) 17:04:56ID:???
>>211
>少なからずあるといえばあるが、可能性は限りなく少ない
これを211の言うように置き換えると、

少なくはないがあるといえばある

あれ、何処が問題なんだ?
やばい俺日本人じゃないのかも。
02202072005/09/30(金) 17:41:36ID:???
>>209
そうですか、了解しました。レスありがとうございました。
0221nobodyさん2005/09/30(金) 20:12:51ID:???
エラーがでます。どこが間違ってますか?

<?php
$date = "<li>aaaaaaaa</li><li>bbbbbbbb</li><li>cccccccc</li>";
if(eregi("/<li>.*?<\/li>/",$date,$ary)){
print "$ary[0]";
}
?>
0222nobodyさん2005/09/30(金) 20:24:11ID:???
>>162,164,166,172

ありがとうございます。
正規表現勉強してみようと思います。
0223nobodyさん2005/09/30(金) 20:31:23ID:???
>>221
http://php.s3.to/man/function.eregi.html
マニュアル

「/」イラネ
で.*?じゃなくて(.*)?

最低エラーメッセージくらい書きたまい。
0224nobodyさん2005/09/30(金) 20:35:18ID:???
>>215
ご丁寧にありがとうございます。
参考になりました。
0225nobodyさん2005/09/30(金) 20:41:59ID:???
>>223

ありがとうございます。エラーは解決できました。

でも、【<li>aaaaaaaa</li>】だけとりたいんです、
最短マッチができません。
0226nobodyさん2005/09/30(金) 21:20:21ID:???
>>221
>>102
オマイは何がしたいんだ?
0227nobodyさん2005/09/30(金) 21:26:13ID:???
>>225
正規表現が苦手ならsubstr辺りで処理すればいい。
正規表現を勉強したくてやっているのなら丸投げするな。
0228nobodyさん2005/09/30(金) 22:09:27ID:???
ランダムな文字列を生成するスクリプトを書いたのですが、もっと簡単な方法はないでしょうか?

<?php
$number = array ("1","2","3","4","5","6","7","8","9");
$alpha = array ("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o",
"p","q","r","s","t","u","v","w","x","y","z");

shuffle ($number);
shuffle ($alpha);

echo ("<br />");

foreach ($number as $value_number){
echo ($value_number);
}

echo ("<br />"."<br />");

foreach ($alpha as $value_alpha){
echo ($value_alpha);
}
?>
0229nobodyさん2005/09/30(金) 22:22:02ID:???
>>228
何がやりたいのかイマイチ分からんが・・・

<?php
echo '<br /'>',
str_shuffle('123456789'),
'<br /'>', '<br /'>',
str_shuffle('abcdefghijklmnopqrstuvwxyz');
?>
0230nobodyさん2005/09/30(金) 22:44:23ID:???
>>229
ありがとうございます。
str_shuffle関数は下記のようにまずシャッフルして、それから出力といった使い方はできないんですね(´・ω・`)

<?php
$alpha = "abcdefghijklmnopqrstuvwxyz";

str_shuffle($alpha);
echo ($alpha);

?>
0231nobodyさん2005/09/30(金) 23:02:58ID:???
filesize関数でキロbytes単位で表示できるものはないですか?
0232nobodyさん2005/09/30(金) 23:04:08ID:???
>>230
文字コードをランダムに作ってchrで出力すればええんちゃう?
0233nobodyさん2005/09/30(金) 23:05:18ID:???
>>229
海胆食いD、もといuniqidでは駄目なん貝?
0234nobodyさん2005/09/30(金) 23:05:37ID:???
>>231
取得した後に1024で割ればいいと思うのだが
0235nobodyさん2005/09/30(金) 23:17:43ID:???
>>234
ありがとうございます。
小数点以下を切り捨てる場合はどのようにすれば良いんでしょう?
$total += (filesize($afn)/1024);
こんな感じでやってるんですが
0236nobodyさん2005/09/30(金) 23:29:36ID:???
round関数か(int)
てか検索しろよ
0237nobodyさん2005/09/30(金) 23:58:24ID:???
>>230
あ、>>229は余計な'があったな(試してないのバレバレ・・・)。

str_shuffle()のマニュアルを読めば判ると思うが「適当に入れ替えた文字列を返す」だから、
$alpha=str_shuffle($alpha);
で済むのではないかと。
0238nobodyさん2005/10/01(土) 01:52:07ID:???
>>219

>少なからずあるといえばあるが、可能性は限りなく少ない

少なくないが、限りなく少ない。
02392392005/10/01(土) 04:07:40ID:???
<?php
$logfile = "./counter.log";
$cookiename = "mycookie";
$counter = 0;
if( $fn = @fopen($logfile,'r')){
$counter = trim(fgets($fn));
fclose($fn);
}
if(!isset($_COOKIE[$cookiename])){
$counter++;
setcookie( $cookiename,$counter);
if($fn=@fopen($logfile,'w')){
fwrite($fn,$counter);
fclose($fn);
}
}
?>
<html>
<body>
<?php
if($fn= @fopen($logfile,'r')){
$counter=trim(fgets($fn));
fclose($fn);
}
print($counter."人目です");
?>
</body>
</html>

を実行すると、
02402392005/10/01(土) 04:10:56ID:IQUyxXuW
Warning: Cannot modify header information - headers already sent by
(output started at C:\04WebServer_182\04WebServer\DocumentRoot\p.php:1)
in C:\04WebServer_182\04WebServer\DocumentRoot\p.php on line 11
46人目です


↑こんなんが出ます。
HTTPヘッダが送られた後にクッキーを送ろうとしてるので、こんなエラーが出るのだと解読しましたが、
当たっていますか?
また、解決するにはどうすればいいでしょうか?
0241nobodyさん2005/10/01(土) 04:17:34ID:???
初期段階の質問なんですが、phpとapacheの連携がうまくいきません。
本にそってapacheはちゃんとインストールできて、「予想に反してー」ページが出ます。
phpもインストールでき、php.iniを/usr/local/libに置いています。
httpd.confにも
AddDefaultCharset none と
AddType application/x-httpd-php .php
を追加しています。
しかしphpにブラウザでアクセスしてもダウンロードダイアログが出てしまいます。
apacheも再起動してます。何か他の問題は考えられますか?

apache2.0.53 、 php5.0.4
FedoraCore4です。よろしくお願いします。
0242nobodyさん2005/10/01(土) 07:30:45ID:???
>>241
LoadModuleは書いた?
0243nobodyさん2005/10/01(土) 08:58:49ID:???
>>240
正解。クッキーはHTTPヘッダの中にSet-Cookie: mycookie=239の形で埋め込まれる。
1行目でヘッダ以外のものを出力したのでPHPの中の人はヘッダが終了したと思っている。(output started 〜 p.php:1 の部分)
うちでは問題なく動作したよ。「 <?php」てな感じにスペース1つを追加したら同じwarningを出せたけども。
0244nobodyさん2005/10/01(土) 11:13:05ID:???
> PHPの中の人

ワロス
0245nobodyさん2005/10/01(土) 12:22:33ID:???
2ch初心者ですか?
0246nobodyさん2005/10/01(土) 12:50:33ID:???
サーバーにアップして実行すると、Parse errorが出たので、
提示された行付近をチェックしたのですが、エラーの原因がサッパリわかりません。
ごく普通のswitch文なんですが、何がいけないのでしょうか?


 switch( mysql_num_rows($sql_result) )
 {
  case 0:
   $id_result = "";
   break;

  default:
   $id_result = ""; ←ここがダメと言われる
 }


ちなみに、問題の行をコメントアウトしても同じ行数でエラーが出ました
0247nobodyさん2005/10/01(土) 13:00:16ID:???
全角スペースでも紛れ込んでるんじゃないの。
または括弧の対応とかさ。
0248nobodyさん2005/10/01(土) 13:01:24ID:???
中の人は性格が几帳面だからな。
0249nobodyさん2005/10/01(土) 13:02:26ID:???
>>246
Parse error: parse error, unexpected '}' in
てな感じで、何が不適切なのかもでてるでしょ?それも参考にしる
02502462005/10/01(土) 13:04:54ID:???
秀丸でスペースの表示してみましたが、全角スペースが紛れ込んだりはしてませんでした。

試しに、switchを丸ごとコメントアウトして実行するとエラーが出ませんでした。
一体全体何が・・・

eclipseでやってるので、括弧の対応不一致とかも無いです
02512462005/10/01(土) 13:05:51ID:???
>>249
それが出ればいいんですが、

Parse error: parse error in ファイル名 on line 63

しかでないんです・・・
0252nobodyさん2005/10/01(土) 13:09:02ID:???
>>246
PHPのアクセラレータかオプティマイザの所為かもしれない。
phpinfo()でインストールされてないか確認。
■ このスレッドは過去ログ倉庫に格納されています