
php初心者です。
レンタルサバ―なのですが、php4.4.7からphp5.2.9に変更後うまくいかなくて困っています。
header("Location: http://○○○/top.php");がうまく飛びません。
ページを実行すると真っ白の画面になってしまいます。
以前のバージョンですと、問題なく動いていました。
下記を見てください。
どうしたらよいのでしょうか?
<?php
mysql_query('SET NAMES ujis');
require_once( "function.php" );
session_start();
if ( $_REQUEST[ "SUBMIT" ] != "" ) {
if ( ( $_POST[ "VALUE_ID" ] != "" ) && ( $_POST[ "VALUE_PW" ] != "" ) ) {
$k_id = $_POST[ "VALUE_ID" ];
$k_pw = $_POST[ "VALUE_PW" ];
$con=mysql_connect('aaa','aaa','aaa') or die("MySQL接続エラー: ".mysql_error());
mysql_select_db('aaa',$con);
$sql= "select * from あああ where id='$k_id' and pw='$k_pw'";
$result=mysql_query($sql);
$rows=mysql_num_rows($result);
if($rows==1){
while($row=mysql_fetch_array($result)){
$d_id = $row["id"];
$d_pw = $row["pw"];
}
}
}
}
if ( !isset( $_SESSION[ "D_ID" ] ) ) {
$_SESSION[ "D_ID" ] = "";
}
$_SESSION[ "D_ID" ] = $d_id;
if ( !isset( $_SESSION[ "D_PW" ] ) ) {
$_SESSION[ "D_PW" ] = "";
}
$_SESSION[ "D_PW" ] = $d_pw;
if ( !isset( $_SESSION[ "K_ID" ] ) ) {
$_SESSION[ "K_ID" ] = "";
}
$_SESSION[ "K_ID" ] = $k_id;
if ( !isset( $_SESSION[ "K_PW" ] ) ) {
$_SESSION[ "K_PW" ] = "";
}
$_SESSION[ "K_PW" ] = $k_pw;
if ( ( $_SESSION[ "D_ID" ] == "" ) || ( $_SESSION[ "D_PW" ] == "" ) ) {
print( "<br><center>○○○○○○○○<br>" );
print( "<br>○○○○○○○○○○○○○○○○<br>" );
print( "<br>○○○○○○○○<br>" );
print( "<br><a href=\"index.html\">[ BACK ]</a></center>" );
exit();
}elseif( CheckID_PW( $_SESSION[ "K_ID" ], $_SESSION[ "K_PW" ],
$_SESSION[ "D_ID" ], $_SESSION[ "D_PW" ] ) == false ) {
print( "<br><center>○○○○○○○○<br>" );
print( "<br><center>○○○○○○○○○○○○○○○○<br>" );
print( "<br><center>○○○○○○○○" );
print( "<br><br><a href=\"index.html\">[ BACK ]</a></center></body>" );
} else {header("Location: http://○○○/top.php");}
?>
A 回答 (6件)
- 最新から表示
- 回答順に表示

No.6
- 回答日時:
} else {header("Location: http://○○○/top.php");}
header()関数をごっぞり削除つまり
} else {}
みたいにして、ブラウザでアクセスして、ブラウザの「ソースコード表示」機能でソースをみてみましょう。
ここでいかなる文字といえども出力されていてはいけないわけです。スペース文字1個すら。
私の経験では、スペースだったり改行だったりエラーメッセージだったり(mysql関係とかsession関係とか)
余分な文字がわかったら、それを吐きだしているところはどこなのか、header()関数以前の行をチェックします。
余分な文字がエラーメッセージなら当たりが付けやすい。
もしスペースだったなら、ちと面倒。
例えば、<?phpと書く前にスペースやHTMLのタグなど書いてないか、
echo ""; のつもりが echo " ";になっていないか
includeやrequireしてる別ファイルで<?php で囲んだ範囲以外で何か書いていないか
全部チェック。
全部自分でやるもよし人に見てもらうもよし。岡目八目といいますからそのほうがぱっと見つかるかも。
どうしてもだめなので、下記で対応しました。
} else {
?>
<a href="http://○○○/top.php"> トップページへ </a>
<?php } ?>
ありがとうございました。
No.5
- 回答日時:
とりあえずはphpinfo()で、error_reportingとdisplay_errorsの値がどうなっているか調べてください。
「真っ白な画面になる」ということなので何らかのエラーが発生していると思われますが、エラーが表示されない環境では調べようがありません。#「Notice: Undefined index:」はたくさん出そうなソースですが(汗
提示されたソースの先頭がmysql_queryだったりと「これだけで動いているわけじゃないだろう」と思われますしね。
No.4
- 回答日時:
>実行すると画面が真っ白になってしまい、URLを直接入力すれば目的のページ入ることができます。
まさかと思うけどエラーを表示するように設定すらしてないのか?
>「==」以外ですと、『等しい』をあらわすものは?
公式リファレンス読めよ。
それと文字列比較の専用関数も知らないの?
それと文字列に関する「==」による危険性はネットで検索すれば情報はいくらでも出てくる。
>まさかと思うけどエラーを表示するように設定すらしてないのか?
すいません初心者なので、、、
で、結局どうなのでしょう?質問を回答するまでがめんどくさい方ですね。
>公式リファレンス読めよ。
>それと文字列比較の専用関数も知らないの?
>それと文字列に関する「==」による危険性はネットで検索すれば情報はいく>らでも出てくる。
もう少し勉強しますが、これだけ書くならシンプルに回答してもらいたいものです。
No.3
- 回答日時:
まず、
header("Location: http://○○○/top.php");
だけで、飛ぶかどうかをチェックするところからはじめてください
headerはそれより前になにかデータが出力されると
エラーになるので、もしかしたらその辺の問題かも・・・
この回答への補足
ご回答ありがとうございます。
早速チェックしてみました。
header("Location: http://○○○/top.php");
だけで、実行する場合は正常に飛びます。
No.1
- 回答日時:
まずどう動かない?
それとソース見ていて気になったこととして
文字列比較で「==」は使うな。
ソースを見る限りパスワードらしき値をそのままDBに格納しているのかPOSTパラメータで受けた値で直接比較しているけどこれもあり得ない。
DBに格納するのはハッシュ値を利用しておくのが定番。で、ハッシュ値同士を比較する。
この回答への補足
回答ありがとうございます。
>まずどう動かない?
実行すると画面が真っ白になってしまい、URLを直接入力すれば目的のページ入ることができます。
>文字列比較で「==」は使うな。
「==」以外ですと、『等しい』をあらわすものは?
>ハッシュ値同士を比較する。
そうなのですか。
これは勉強します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WHILEで取り出しループ中にさら...
-
DBで検索結果に該当するデータ...
-
phpでmysqlを使ってデータベー...
-
sqlの検索結果件数は出るのです...
-
アラートでyes noを作りたいです。
-
DBに入力されている値のセレ...
-
PHPで[]の使い方について
-
段ごとに配色を変える方法
-
VBA処理追加 こちらでご教示頂...
-
PHP 関数呼び出し後に配列添字...
-
PHP MYSQLから呼び出し後の比較
-
テキストボックスに入れた内容...
-
データをDBからひっぱってき...
-
<VB.NET>INSERT文でDBにデータ...
-
データベースに存在するデータ...
-
PHP/HTMLページ印刷について
-
PHPでMySQLのデータベースを新...
-
MySQLのテーブル選択について
-
VBA ACCESS SQL...
-
VBAをつかってクエリの情報を抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アラートでyes noを作りたいです。
-
dbに登録したデータをphpのプル...
-
文字化けが解決できません。お...
-
VBA初心者です。
-
phpでmysqlを使ってデータベー...
-
DBで検索結果に該当するデータ...
-
smartyでMySQLから連想配列取り...
-
PHPのプルダウンメニューにDBの...
-
[PHP+MySQL] データをランダム...
-
sortable ギブアップです…助け...
-
mysqlから取得した配列をカンマ...
-
sortableを使用したデータのUPDATE
-
PHPでMySQLデータを呼び出し、w...
-
PHP+MySQLでの配列のinsert文に...
-
XML初心者です。
-
検索結果($_POST)が2ページ目...
-
smartyのforeachの使い方?
-
SELECT結果から動的にコンボボ...
-
pg_queryの結果を2回とりだす...
-
PEARのPagerの設定の仕方
おすすめ情報