0
<?php 
session_start();
include 'db.php';
include 'header.html'; 

if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['email'])) {
  header("location:profile.php");

} elseif(!empty($_POST['email']) && !empty($_POST['pass'])) {
  $email = mysql_real_escape_string($_POST['email']);
  $pass = md5(mysql_real_escape_string($_POST['pass']));

  $sql = mysql_query("SELECT id, name, email, pass FROM users WHERE email='$email' AND pass='$pass'");

  $row = mysql_fetch_array($sql);
  $id = $row['id'];
  $email1 = $row['email'];
  $name = $row['name'];

  $num = mysql_num_rows($sql);
  if($num == 1) {
    $_SESSION['id'] = $id;
    $_SESSION['email'] = $email1;
    $_SESSION['name'] = $name;
    $_SESSION['LoggedIn'] = 1;
    $update = mysql_query("UPDATE users SET lastlogin=NOW() WHERE email='$email1'");

    header("location:profile.php");

  } else {
    echo "<h1>Error</h1>";
    echo "<p>Sorry! Either your account could not be found or you have entered the wrong email or password. Please try again.</p>";
  }
}
?>

このスクリプトはローカルホスト環境で完全に機能しますが、ホストにアップロードすると、ログイン後にprofile.phpに移動しません。また、セッションが設定されているか空でない場合、profile.phpにリダイレクトされません。何か案は?

そして2番目の質問ですが、私のコードは「lastlogin」を現在の時刻に更新するのに正しいですか?このためのデータベース構造は何である必要がありますか?私のデータベースでは更新されていません。

ご協力ありがとうございました。

4

5 に答える 5

1

あなたのコードはlastloginを更新するのに非常に大丈夫ですが、あなたが得るエラーは何ですか?これで発生するエラーの種類を教えてください。論理的には、コードは正しいようです。構文エラーの可能性があります。ページの上部にerror_reporting(E_ALL)を追加して、実際に発生したエラーを確認してください。

于 2012-10-04T05:26:49.430 に答える
0
header("location: profile.php");
                ^ //space should present because in some host environment it creates problem
于 2012-10-04T04:16:53.207 に答える
0

リダイレクトexit();後は常に使用してくださいheader

于 2012-10-04T04:56:46.833 に答える
0

最も可能性の高いPOSTを使用してフォームからログインスクリプトにリダイレクトする場合は、$_SESSIONの代わりに$_POST['']を使用するべきではありませんか?

ちょっとした考え。

于 2012-10-04T04:30:28.687 に答える
0

わかりました、広範囲の検索でそれを理解しました。ヘッダーはすでに送信されていました

include header.html

行が実行できなかったので

header(location: profile.php)

ライン。私はこれまでこの問題について聞いたことがありませんでした。だからこの問題を解決するために、私はちょうど移動しました

<?php
...
include header.html
?>

HTMLが開始する直前のphpコードの下部に。これで、インクルードヘッダー行でそれを実行できるようになり、ヘッダーは引き続きページに読み込まれます。

これにご協力いただきありがとうございます。

于 2012-10-04T16:22:00.817 に答える