2016-05-05 7 views
0

Ich habe ein einfaches Login/Register-Formular. Wenn Sie sich registrieren, geht es zu meinem Anmeldeformular ok. Mein Problem ist mit dem Login. Ich möchte die Login-Informationen in meiner Datenbank überprüfen und dann einen anderen Header-Abschnitt anzeigen. Ich bin ein Student und bin verwirrt mit all den verschiedenen Informationen, wie man das macht.run php von javascript auf abschicken von HTML-Formular

Momentan rufe ich eine JavaScript-Funktion beim Klicken auf Login auf, aber dann möchte ich meine PHP-Datei access.php aufrufen, zu meiner HTML-Seite index.php zurückkehren, wo ich überprüfen möchte, ob der Benutzer eingeloggt ist und wenn ja Anzeige logged_in.html.php.

login_register_form.html.php

<div id="login_form"> 
    <form action="access.php" method="POST" name="login_form"> 
    <label id="label_email">Email<span class ="red">*</span></label> 
    <label id="label_password">Password<span class ="red">*</span></label> 
    </br> 
     <input type="text" name="email" id="email"/> 
     <input type="password" name="password" id="password"/> 
    <div id="form_buttons"> 
     <button onclick="loginUser()" Type="button" id="login" name="action" value="login">Login</button>  
     <button onclick="newUser()" Type="button" id="register" name="register">Register</button> 
    </div> 
    </form> 

JavaScript

function loginUser() { 
    $.ajax({ 
     url: 'access.php', 
     dataType: 'php' 
    }) 
    window.location.assign("index.php"); 
} 

access.php

function userIsLoggedIn() 
{ 
    if (isset($_POST['action']) and $_POST['action'] == 'login') 
    { 
     if (!isset($_POST['email']) or $_POST['email'] == '' or 
     !isset($_POST['password']) or $_POST['password'] == '') 
     { 
      $GLOBALS['loginError'] = 'Please fill in both fields'; 
      return FALSE; 
     } 
     if (databaseContainsUser($_POST['email'], $password)) 
     { 
      session_start(); 
      $_SESSION['loggedIn'] = TRUE; 
      $_SESSION['email'] = $_POST['email']; 
      $_SESSION['password'] = $password; 
      return TRUE; 
     } 
     else 
     { 
      session_start(); 
      unset($_SESSION['loggedIn']); 
      unset($_SESSION['email']); 
      unset($_SESSION['password']); 
      $GLOBALS['loginError'] = 
      'The specified email address or password was incorrect.'; 
      return FALSE; 
     } 
    } 
} 
function databaseContainsUser($email, $password) 
{ 
    require_once('mysqli_connect.php'); 
    $username = $password = ""; 

    if (isset($_POST["submit"])){ 
     $username = test_input($_POST["username"]); 
     $password = test_input($_POST["password"]); 
    } 

    $query = "SELECT * FROM users 
     WHERE username='".$_POST['username']."' 
     AND password = '".($_POST['password'])."'"; 

    $result = mysqli_query($DBConnect, $query) or die(); 
    if (mysqli_num_rows($result) > 0) { 
     while($row = mysqli_fetch_array($result)) { 
      echo "<img src={$row["avatar"]} alt='avatar image' />"; 
     } 
     return TRUE; 
    } 
    else { 
     echo "Invalid login"; 
     return FALSE; 
    } 
} 

und index.php

<?php 
session_start(); 

if (!isset($_SESSION['loggedIn'])){ 
    include 'access.php'; 
} 
?> 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
    <script type ="text/javascript" src="functions.js"></script> 
</head> 

<body> 
    <div id="body"> 
    <div id="container"> 
     <?php if (!isset($_SESSION['loggedIn'])){ 
       include 'login_register_form.html.php'; 
      } 
      else { 
       include 'logged_in.html.php'; 
      } 
     ?> 

Jede mögliche Hilfe würde sehr geschätzt werden

+0

** speichern niemals Passwörter im Klartext! ** Bitte verwenden Sie PHP [eingebaute Funktionen] (http://jayblanchard.net/proper_password_hashing_with_PHP.html) Passwortschutz zu behandeln. Wenn Sie eine PHP-Version kleiner als 5.5 verwenden, können Sie das 'password_hash()' [compatibility pack] (https://github.com/ircmaxell/password_compat) verwenden. Stellen Sie sicher, dass Sie [Passwörter nicht umgehen] (http://stackoverflow.com/q/36628418/1011527) oder verwenden Sie einen anderen Bereinigungsmechanismus vor dem Hashing. Wenn Sie dies tun, * ändert * das Passwort und verursacht unnötige zusätzliche Codierung. –

+0

Um eine Rückkehr über AJAX zu erhalten, müssen Sie etwas in Ihrem PHP aussprechen. –

+0

[Little Bobby] (http://bobby-tables.com/) sagt [Ihr Skript ist für SQL Injection Attacks gefährdet.] (Http://stackoverflow.com/questions/60174/how-can-i-prevent -sql-injection-in-php) Erfahren Sie mehr über [vorbereitete] (http://en.wikipedia.org/wiki/Prepared_statement) Anweisungen für [MySQLi] (http://php.net/manual/en/mysqli.quickstart .prepared-statements.php). Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! –

Antwort

0

Ich kann Ihnen einen einfachen Prozess erklären, dem Sie folgen müssen, damit er funktioniert.

Sie brauchen nicht wirklich Javascript und eine Ajax, damit es funktioniert. Bis und wenn Sie nicht brauchen, dass Sachen im Hintergrund geschehen und wenn alles gut geht, gehen Sie zur Armaturenbrettseite.

Sie können eine Anmeldeseite haben, auf der Benutzer E-Mail und Passwort eingeben. Nach dem Absenden des Formulars gehen Sie auf die Seite access.php. Welche Verbindung wird mit db hergestellt und überprüft, ob die Anmeldeinformationen korrekt sind und ob ein Benutzer existiert. Wenn alles gut geht. Dann leiten Sie den Benutzer einfach zu einer Dashboard-Seite mit Sitzungen um, und wenn die Dinge nicht so gut laufen wie geplant, senden Sie den Benutzer auf die Homepage mit dem angezeigten Fehler.

Sie csn folgen Sie einem dieser beiden Tutorial, um loszulegen.

http://www.codingcage.com/2015/01/user-registration-and-login-script-using-php-mysql.html?m=1. Oder

https://htmlcssphptutorial.wordpress.com/2015/07/07/simple-user-registration-login-script-in-php-and-mysql/

+0

Danke Murlidhar. Ich könnte es funktionieren lassen, wenn ich zu einer neuen Seite senden könnte, aber ich brauche es, um mit einer anderen Kopfzeile zurück zu index.php zu gehen, und das ist, wo ich Probleme habe. Der Grund, warum ich versucht habe, Ajax zu verwenden, ist, dass, als ich recherchierte, die meisten Antworten auf andere ähnliche Fragen sagten, dass es benötigt wurde. –