2017-06-18 2 views
-1

Ich versuche eine Login-Sitzung mit PHP zu machen und ich bekomme und Fehler bei "Benutzername" -Feld meiner Datenbank. Mein Quellcode ist hier:PHP Hinweis: Undefinierter Index: Benutzername

index.php

<?php 
session_start(); 
if(isset($_POST['bttLogin'])){ 
    require 'connect.php'; 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $result = mysqli_query($con, 'SELECT * FROM account WHERE username=" '.$username.' " AND password="'.$password.' " '); 
    if (mysqli_num_rows($result)==1){ 
     $_SESSION['username'] = $username; 
     header('Location: welcome.php'); 
    } 
    else 
     echo "Account invalid"; 
} 
if(isset($_POST['username'])){ 
    $filename = $_POST['username']; 
} 

if (isset($_GET['logout'])){ 
    session_unregister('username'); 
} 

?> 
<form method="post"> 

    <table cellpadding="2" cellspacing="2" border="0"> 
     <tr> 
      <td> Username </td> 
      <td><input type = "text" name="usermame"></td> 
     </tr> 

     <tr> 
      <td> Password </td> 
      <td><input type = "password" name="password"></td> 
     </tr> 

     <tr> 
      <td> </td> 
      <td><input type = "submit" name="bttLogin" value="Login"></td> 
     </tr> 
    </table> 
</form> 

ich meine Verbindung mit meiner Datenbank gemacht, aber es sagt immer wieder, dass Benutzernamen nicht definiert ist. Bitte helfen Sie.

+0

Können Sie uns zeigen Sie Ihre Struktur Kontentabelle und welchen Fehler Sie – Dale

+1

Ihr Skript sind immer gefährdet ist [** SQL-Injection-Angriff **] (https://stackoverflow.com/q/60174/5914775). Schau dir an, was mit [Little Bobby Tables] passiert ist (http://bobby-tables.com/). Verwenden Sie stattdessen [vorbereitete parametrisierte Anweisungen] (https://php.net/manual/en/mysqli.quickstart.prepared-statements.php). –

+1

** Speichern Sie niemals Nur-Text-Passwörter! ** PHP stellt ['password_hash()'] (https://php.net/manual/en/function.password-hash.php) und ['password_verify()'] (https://php.net/manual/en/function.password-verify.php) benutzen Sie sie bitte. Wenn Sie eine PHP-Version vor 5.5 verwenden (hier ist ein Kompatibilitätspaket verfügbar) (https://github.com/ircmaxell/password_compat). Stellen Sie sicher, dass Sie [** Passwörter nicht umgehen **] (https://StackOverflow.com/q/36628418/5914775) oder verwenden Sie einen anderen Bereinigungsmechanismus vor dem Hashing. Dies ändert das Passwort und verursacht unnötige zusätzliche Codierung. –

Antwort

0

Scheint, Sie haben einfach nicht den Index 'Benutzername' in $ _SESSION var. Sie müssen es überprüfen und zu initialisieren, wenn nötig - etwa so:

if (!isset($_SESSION['username'])) { 
    if (!is_array($_SESSION)) { 
     $_SESSION = []; 
    } 
    $_SESSION['username'] = $username; 
} 
Verwandte Themen