DomasV Posted February 12, 2015 Share Posted February 12, 2015 (edited) 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 Edited February 12, 2015 by DomasV Quote Link to comment https://forums.phpfreaks.com/topic/294561-notice-undefined-index/ Share on other sites More sharing options...
CroNiX Posted February 12, 2015 Share Posted February 12, 2015 You should post the form HTML as well, or whatever is sending this data (ajax?) Does your form have a field with a NAME of "doLogin"? Is your form's METHOD set to POST or GET? You're using both $_POST and $_GET Quote Link to comment https://forums.phpfreaks.com/topic/294561-notice-undefined-index/#findComment-1505568 Share on other sites More sharing options...
DomasV Posted February 12, 2015 Author Share Posted February 12, 2015 You should post the form HTML as well, or whatever is sending this data (ajax?) Does your form have a field with a NAME of "doLogin"? Is your form's METHOD set to POST or GET? You're using both $_POST and $_GET Added full code. Quote Link to comment https://forums.phpfreaks.com/topic/294561-notice-undefined-index/#findComment-1505570 Share on other sites More sharing options...
Solution CroNiX Posted February 12, 2015 Solution Share Posted February 12, 2015 (edited) $_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 } } Edited February 12, 2015 by CroNiX Quote Link to comment https://forums.phpfreaks.com/topic/294561-notice-undefined-index/#findComment-1505572 Share on other sites More sharing options...
DomasV Posted February 12, 2015 Author Share Posted February 12, 2015 $_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 ! Quote Link to comment https://forums.phpfreaks.com/topic/294561-notice-undefined-index/#findComment-1505579 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.