このユーザ認証プログラムが最後の2行(ページを(userpage)に飛ばす)の命令が実行しません。※最後の2行を追加する前の部分は正常動作するのは確認済みです。
ちなみに、この2行をこのプログラムの上部に移動すると指示通りのページに移ります。
まる2日間、この問題解決が見えません。どなたか御指南下さい。
<?
/*=========================================
ユーザ認証(Login処理) loginexe.php
===========================================*/
session_start();
// テーブルに uid とpasswdの組が存在するかどうかを調べる。
$con = mysql_connect("サーバー名","データベース名","パスワード");
//データベースを選択する。
$selectdb = mysql_select_db("データベース名",$con);
$sql = "select passwd from tbl_user where uid='$uid'";
$r = mysql_query($sql,$con);
if( mysql_num_rows($r) != 1) {
print "アカウントが違う、もしくはユーザ登録されていません。";
print '<a href="reguser.php">こちらから登録してください。</a>';
session_destroy();
exit;
}
print "tbl_user1のパスワード:".mysql_result($r, 0, "passwd1")."<br>";
if( mysql_result($r, 0, "passwd1") != $passwd1) {
print "パスワードが違います。";
print '<a href="index.php">戻る</a>' ;
session_destroy();
exit;
}
//$_SESSION[セッション変数名] = 値;
$_SESSION[suid] = $uid;
//ページをuserpageに飛ばす
header("Location: userpage.php");
?>
No.3ベストアンサー
- 回答日時:
お二人とも現象について書いていらっしゃるので私はマニュアルから引用しておきます.
ちなみに同様にマニュアルに書いていますが,Locationは絶対URIでなければなりませんので,マニュアルを参考に絶対URIの生成方法を習得されることをお勧めいたします.
下記引用>>
覚えておいて頂きたいのは、header() 関数は、 通常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の 出力の前にコールする必要があることです。 頻出するエラーとして、include() または require() 関数、他のファイルをアクセスする関数に 空白または空行があり、header() の前に出力が 行われてしまうというものがあります。同じ問題は、単一の PHP/HTML ファイルを使用している場合でも存在します。
参考URL:http://php.net/header
No.4
- 回答日時:
Locationで次の処理に移って変数を渡せないとかうまくいかないという質問を良く見かけますがrequire()かinclude()の方が適切な場合が多いようです。
ご質問のケースも
header("Location: userpage.php");
ではなく
include "userpage.php";
で良いのではないでしょうか
No.2
- 回答日時:
がると申します。
#1さんもおっしゃってますが、本質的には「ヘッダとボディの出力タイミング」による問題です。
直接的に解決する方法はいくつかあるのですが。
とりあえず、
ob_start、ob_end_flush という関数を調べてみてください。
具体的には…物凄くアバウトですが、プログラム行頭でob_start()、exit直前を含むプログラム終了直前にob_end_flush() を埋め込みます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP php ログイン 1 2022/11/01 00:24
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysql_queryでのdelimiterの設...
-
接続ができません
-
副問合せにLIKE文を使う方法は...
-
SQLのVARCHARとVARCHAR2の違い
-
プライマリーキーの昇順でソー...
-
like句を使って日本語を検索す...
-
Float型の時の計算結果がおかしい
-
AccessからOrcleのODBCリンクテ...
-
RPMのmysqlとmysql-serverの違い
-
DB内の日本語データがPHPで取得...
-
ERROR 1045 (28000) (using pas...
-
mysqlのsecure-file-privオプシ...
-
ODP.NETのバージョン確認
-
MySQLカラム名は日本語と英数字...
-
ヌル値は記憶容量を必要としな...
-
cseデータ閲覧時に文字化け
-
テーブル作成でエラーが出てき...
-
php・Mysql Like文で日本語が使...
-
PHP+MySQLから結果セット取得後...
-
「・」中点が入った文字列を条...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MeCabの結果をWindows+PHPで取...
-
PHPからmySQLへINSERT文の実行
-
mysql_queryでのdelimiterの設...
-
Linuxで、Pearコマンドが使えな...
-
mysqlでphpinfoと実際のバージ...
-
LOAD DATA LOCAL INFILE
-
下記プログラムの問題点は? ...
-
「addslashes」と「htmlspecial...
-
sqlite_escape_stringのアンエ...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
ODP.NETのバージョン確認
-
旧filemakerで和暦(令和など)...
-
ERROR 1045 (28000) (using pas...
-
副問合せにLIKE文を使う方法は...
-
INT型は金額の型に使用するべき...
-
like句を使って日本語を検索す...
-
postgreSQLのデータ型
-
RPMのmysqlとmysql-serverの違い
-
プライマリーキーの昇順でソー...
おすすめ情報