2

私は登録フォームを持っていて、ユーザーが自分のアカウントにログインできるようになったら、ユーザーがメールを有効にする必要があります。それ以外の場合、ユーザーはログインできませんか?

問題

問題は、ユーザーが電子メールの有効化なしでログインできることですか?

コード

$email2=$_POST['email'];
$querycheck=mysql_query("select activation from students 
                         where semail='$email2'") or die ("Query Activated Problem");
$rowcheck=mysql_fetch_array($querycheck);
$act=$rowcheck['activation'];

if($act=='activated')
  {

    $email=$_POST['email'];
    $password=$_POST['password'];
    $email = stripslashes($email);
    $password= stripslashes($password);
    $email = mysql_real_escape_string($email);
    $password = mysql_real_escape_string($password);

    $querymysql=mysql_query("select * from students where semail='$email'
                             and spassword='$password'  ") or die ("query problem");
    $row=mysql_fetch_array($querymysql);


    if($row)
      {

        session_register("email");
        session_register("password"); 

        header('Location:index.php');   
      }
    else {
      $message="Please Check Your Login Details";   
      header('Location:login.php?login_error='.$message.'');    
    }

  }
else if($act=='')
  {
    $actmsg="Your Email Is Not Activated Yet";  
    header('Location:login.php?actmsg='.$actmsg.'');        
  }
4

3 に答える 3

1

session_register : この関数は PHP 5.3.0 で非推奨となり、PHP 5.4.0 で削除されました。

$_SESSIONを直接使用して変数を設定します。

于 2014-04-15T08:07:25.713 に答える
0

テーブルactivation内のフィールドを再確認してください。次に、コードをMySQLからMySQListudentsに変換します。MySQLはすでに廃止されています。

/* ESTABLISH CONNECTION FIRST */

<?php

$connection=mysqli_connect("YourHost","YourUsername","YourPassword","DatabaseName");

if(mysqli_connect_errno()){

echo "Error".mysqli_connect_error();
}

$email2=mysqli_real_escape_string($con,$_POST['email']); /* LETS USE REAL ESCAPE STRING TO PREVENT A BIT OF SQL INJECTION */
$querycheck=mysqli_query($connection,"SELECT activation FROM students 
                         WHERE semail='$email2'");
while($rowcheck=mysqli_fetch_array($querycheck)){
$act=$rowcheck['activation'];
}

if($act=='activated')
{    
    $email=$_POST['email'];
    $password=$_POST['password'];
    $email = stripslashes($email);
    $password= stripslashes($password);
    $email = mysqli_real_escape_string($email);
    $password = mysqli_real_escape_string($password);

    $querymysql=mysqli_query("SELECT * FROM students WHERE semail='$email'
                             and spassword='$password'");
    $row=mysqli_num_rows($querymysql); /* I CHANGED THIS PART OF YOUR CODE */

    if($row!=0) /* SO THIS CONDITION ALSO CHANGES */
      {    
        session_register("email");
        session_register("password"); 

        header('Location:index.php');   
      }

    else {
      $message="Please Check Your Login Details";   
      header('Location:login.php?login_error='.$message.'');    
    }

}

else if($act=='')
  {
    $actmsg="Your Email Is Not Activated Yet";  
    header('Location:login.php?actmsg='.$actmsg.'');        
  }

?>
于 2014-04-15T06:05:47.383 に答える
0

アクティブ化されたフィールド tinyint フィールドを追加します。次に、select を select * from students where semail='$email' and spassword='$password' " and activate=1 に変更します。

リンクをアクティブ化すると、ユーザーに対してアクティブ化を 1 に設定する必要があります。

于 2013-10-07T16:45:27.657 に答える