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
** 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. –
Um eine Rückkehr über AJAX zu erhalten, müssen Sie etwas in Ihrem PHP aussprechen. –
[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! –