Jump to content

Notice: Undefined index:


DomasV

Recommended Posts

Hello guys , please help me to fix this code.

 

Notice: Undefined index

 

Error here:

if ($_POST['doLogin']=='Login')

Full code:

<?php
error_reporting(E_ALL ^ E_DEPRECATED);

include 'dbc.php';

$err = array();

foreach($_GET as $key => $value) {
    $get[$key] = filter($value); //get variables are filtered.
}

if ($_POST['doLogin']=='Login')
{

foreach ($_POST as $key => $value) {
    $data[$key] = filter($value); // post variables are filtered
}


$user_email = $data['usr_email'];
$pass = $data['pwd'];


if (strpos($user_email,'@') === false) {
    $user_cond = "user_name='$user_email'";
} else {
      $user_cond = "user_email='$user_email'";
    
}

    
$result = mysql_query("SELECT `id`,`pwd`,`full_name`,`approved`,`user_level` FROM users WHERE
           $user_cond
            AND `banned` = '0'
            ") or die (mysql_error());
$num = mysql_num_rows($result);

  // Match row found with more than 1 results  - the user is authenticated.
    if ( $num > 0 ) {
    
    list($id,$pwd,$full_name,$approved,$user_level) = mysql_fetch_row($result);
    
    if(!$approved) {
    //$msg = urlencode("Account not activated. Please check your email for activation code");
    $err[] = "Account not activated. Please check your email for activation code";
    
    //header("Location: login.php?msg=$msg");
     //exit();
     }
    
        //check against salt
    if ($pwd === PwdHash($pass,substr($pwd,0,9))) {
    if(empty($err)){            

     // this sets session and logs user in  
       session_start();
       session_regenerate_id (true); //prevent against session fixation attacks.

       // this sets variables in the session
        $_SESSION['user_id']= $id;  
        $_SESSION['user_name'] = $full_name;
        $_SESSION['user_level'] = $user_level;
        $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
        
        //update the timestamp and key for cookie
        $stamp = time();
        $ckey = GenKey();
        mysql_query("update users set `ctime`='$stamp', `ckey` = '$ckey' where id='$id'") or die(mysql_error());
        
        //set a cookie
        
       if(isset($_POST['remember'])){
                  setcookie("user_id", $_SESSION['user_id'], time()+60*60*24*COOKIE_TIME_OUT, "/");
                  setcookie("user_key", sha1($ckey), time()+60*60*24*COOKIE_TIME_OUT, "/");
                  setcookie("user_name",$_SESSION['user_name'], time()+60*60*24*COOKIE_TIME_OUT, "/");
                   }
          header("Location: myaccount.php");
         }
        }
        else
        {
        //$msg = urlencode("Invalid Login. Please try again with correct user email and password. ");
        $err[] = "Invalid Login. Please try again with correct user email and password.";
        //header("Location: login.php?msg=$msg");
        }
    } else {
        $err[] = "Error - Invalid login. No such user exists";
      }        
}
                    
                    

?>
<html>
<head>
<title>Members Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script language="JavaScript" type="text/javascript" src="js/jquery.validate.js"></script>
  <script>
  $(document).ready(function(){
    $("#logForm").validate();
  });
  </script>
<link href="styles.css" rel="stylesheet" type="text/css">

</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="5" class="main">
  <tr>
    <td colspan="3"> </td>
  </tr>
  <tr>
    <td width="160" valign="top"><p> </p>
      <p>  </p>
      <p> </p>
      <p> </p>
      <p> </p></td>
    <td width="732" valign="top"><p> </p>
      <h3 class="titlehdr">Login Users
      </h3>  
      <p>
      <?php
      /******************** ERROR MESSAGES*************************************************
      This code is to show error messages
      **************************************************************************/
      if(!empty($err))  {
       echo "<div class=\"msg\">";
      foreach ($err as $e) {
        echo "$e <br>";
        }
      echo "</div>";    
       }
      /******************************* END ********************************/      
      ?></p>
      <form action="login.php" method="post" name="logForm" id="logForm" >
        <table width="65%" border="0" cellpadding="4" cellspacing="4" class="loginform">
          <tr>
            <td colspan="2"> </td>
          </tr>
          <tr>
            <td width="28%">Username / Email</td>
            <td width="72%"><input name="usr_email" type="text" class="required" id="txtbox" size="25"></td>
          </tr>
          <tr>
            <td>Password</td>
            <td><input name="pwd" type="password" class="required password" id="txtbox" size="25"></td>
          </tr>
          <tr>
            <td colspan="2"><div align="center">
                <input name="remember" type="checkbox" id="remember" value="1">
                Remember me</div></td>
          </tr>
          <tr>
            <td colspan="2"> <div align="center">
                <p>
                  <input name="doLogin" type="submit" id="doLogin3" value="Login">
                </p>
                <p><a href="register.php">Register Free</a><font color="#FF6600">
                  |</font> <a href="forgot.php">Forgot Password</a> <font color="#FF6600"> <br><br>
                  <b> Domas Vaičiūnas 2015</b>
                  </font></p>
              </div></td>
          </tr>
        </table>
        <div align="center"></div>
        <p align="center">  </p>
      </form>
      <p> </p>
       
      </td>
    <td width="196" valign="top"> </td>
  </tr>
  <tr>
    <td colspan="3"> </td>
  </tr>
</table>

</body>
</html>


Thanks

Link to comment
https://forums.phpfreaks.com/topic/294561-notice-undefined-index/
Share on other sites

$_POST['doLogin'] will only exist once the form's been submitted. You're trying to use it right away, so it won't exist when the page is first requested.

 

Try something like:

//Check if form was submitted via POST
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
  if ($_POST['doLogin']=='Login')
  {
    foreach ($_POST as $key => $value) {
      $data[$key] = filter($value); // post variables are filtered
    }
}

 

$_POST['doLogin'] will only exist once the form's been submitted. You're trying to use it right away, so it won't exist when the page is first requested.

 

Try something like:

//Check if form was submitted via POST
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
  if ($_POST['doLogin']=='Login')
  {
    foreach ($_POST as $key => $value) {
      $data[$key] = filter($value); // post variables are filtered
    }
}

Thank You !

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.