Michael_Baxter Posted February 26, 2016 Share Posted February 26, 2016 <?php include_once 'psl-config.php'; function sec_session_start() { $session_name = 'sec_session_id'; // Set a custom session name $secure = true; // This stops JavaScript being able to access the session id. $httponly = true; // Forces sessions to only use cookies. if (ini_set('session.use_only_cookies', 1) === FALSE) { header("Location: ../error.php?err=Could not initiate a safe session (ini_set)"); exit(); } // Gets current cookies params. $cookieParams = session_get_cookie_params(); session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly); // Sets the session name to the one set above. session_name($session_name); session_start(); // Start the PHP session session_regenerate_id(true); // regenerated the session, delete the old one. } function login($email, $password, $mysqli) { // Using prepared statements means that SQL injection is not possible. if ($stmt = $mysqli->prepare("SELECT id, username, password FROM members WHERE email = ? LIMIT 1")) { $stmt->bind_param('s', $email); // Bind "$email" to parameter. $stmt->execute(); // Execute the prepared query. $stmt->store_result(); // get variables from result. $stmt->bind_result($user_id, $username, $db_password); $stmt->fetch(); if ($stmt->num_rows == 1) { // If the user exists we check if the account is locked // from too many login attempts if (checkbrute($user_id, $mysqli) == true) { // Account is locked // Send an email to user saying their account is locked return false; } else { // Check if the password in the database matches // the password the user submitted. We are using // the password_verify function to avoid timing attacks. if (password_verify($password, $db_password) { // Password is correct! // Get the user-agent string of the user. $user_browser = $_SERVER['HTTP_USER_AGENT']; // XSS protection as we might print this value $user_id = preg_replace("/[^0-9]+/", "", $user_id); $_SESSION['user_id'] = $user_id; // XSS protection as we might print this value $username = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $username); $_SESSION['username'] = $username; $_SESSION['login_string'] = hash('sha512', $db_password . $user_browser); // Login successful. return true; } else { // Password is not correct // We record this attempt in the database $now = time(); $mysqli->query("INSERT INTO login_attempts(user_id, time) VALUES ('$user_id', '$now')"); return false; } } } else { // No user exists. return false; } } } I have been working on a secure login system for my site, I feel that I have been doing well so far but now I am getting a parse error coming from my functions.php include file, the error code I am getting is: parse error: syntax error, unexpected '{' in /home/*******/public_html/secure_login/functions.php on line 53 so here is the code from functions.php i have included everything from line 1 of the functions.php file to the end of the problem funxtion Quote Link to comment https://forums.phpfreaks.com/topic/300887-parse-eroor-in-an-include-file-for-login-system/ Share on other sites More sharing options...
QuickOldCar Posted February 26, 2016 Share Posted February 26, 2016 Missing a parenthesis if (password_verify($password, $db_password)) { Quote Link to comment https://forums.phpfreaks.com/topic/300887-parse-eroor-in-an-include-file-for-login-system/#findComment-1531481 Share on other sites More sharing options...
Michael_Baxter Posted February 26, 2016 Author Share Posted February 26, 2016 oh dear in a genuine way I do appreciate the way getting debug help on here makes me fell rather silly sometimes this one was no exception the little missing symbol set off 4 exceptions through my files then once I had added ( into the line I noticed that due to the fact I had been writing these codes and file and functions for too many hours none stop I had managed to name a file pil_confige.php which should have been psl_config.php which caused some other errors ...........hahaha not to worry I have fixed all these errors now I am going to actually test the system Quote Link to comment https://forums.phpfreaks.com/topic/300887-parse-eroor-in-an-include-file-for-login-system/#findComment-1531483 Share on other sites More sharing options...
Michael_Baxter Posted February 26, 2016 Author Share Posted February 26, 2016 /* process_login.php*/ <?php include_once 'db_connect.php'; include_once 'functions.php'; sec_session_start(); // Our custom secure way of starting a PHP session. if (isset($_POST['email'], $_POST['p'])) { $email = $_POST['email']; $password = $_POST['p']; // The hashed password. if (login($email, $password, $mysqli) == true) { // Login success header('Location: ../protected_page.php'); } else { // Login failed header('Location: ../index.php?error=1'); } } else { // The correct POST variables were not sent to this page. echo 'Invalid Request'; } /*INDEX>PHP*/ <?php error_reporting(E_ALL); ini_set("display_errors",1); include_once 'includes/db_connect.php'; include_once 'includes/functions.php'; sec_session_start(); if (login_check($mysqli) == true) { $logged = 'in'; } else { $logged = 'out'; } ?> <!DOCTYPE html> <html> <head> <title>Secure Login: Log In</title> <link rel="stylesheet" href="styles/main.css" /> <script type="text/JavaScript" src="js/sha512.js"></script> <script type="text/JavaScript" src="js/forms.js"></script> </head> <body> <?php if (isset($_GET['error'])) { echo '<p class="error">Error Logging In!</p>'; } ?> <form action="includes/process_login.php" method="post" name="login_form"> Email: <input type="text" name="email" /> Password: <input type="password" name="password" id="password"/> <input type="button" value="Login" onclick="formhash(this.form, this.form.password);" /> </form> <?php if (login_check($mysqli) == true) { echo '<p>Currently logged ' . $logged . ' as ' . htmlentities($_SESSION['username']) . '.</p>'; echo '<p>Do you want to change user? <a href="includes/logout.php">Log out</a>.</p>'; } else { echo '<p>Currently logged ' . $logged . '.</p>'; echo "<p>If you don't have a login, please <a href='register.php'>register</a></p>"; } ?> </body> </html> hi again sorry o be back with yet more issues but my happy ending to this was very short lived after I corrected the above error I went away to test the new login system and registration system and nothing basically, I loaded my page up ( mnvb.co.uk/secure_login ) this is the address, I have not added any kind of styling here YET my eyes do not care black & white or colour although I'm not a registered member I just typed my email and password into the form and hit submit, to test the error trap, I got nothing no errors no reload the form did not reset the button simply was inactive........ I have included copies of 2 files here the first page is simply my index.php to this directory that has the login and register elements, the second file is process_login.php as this page is refered to in the form action in my index page if anyone can determine why my button is dead it would be great thanks.... Quote Link to comment https://forums.phpfreaks.com/topic/300887-parse-eroor-in-an-include-file-for-login-system/#findComment-1531494 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.