nxtrex
Goto Top

PHP Login funktion

Hallo,

ich habe ein Login-Script geschrieben und ich möchte, das wenn der Status in der Datenbank auf 0 steht man zu Change-password.php umgeleitet wird, jedoch stehe ich irgendwie ganz schön auf dem Schlauch.

Ich danke im vorraus für die Hilfe. face-smile

Hier das Script:
PHP:
<?php
session_start();
include('includes/config.php');  
if (isset($_POST['login'])) {  
    $status   = '1';  
    $name     = $_POST['username'];  
    $password = md5($_POST['password']);  
    $sql      = "SELECT name,password FROM users WHERE name=:name and password=:password and status=(:status)";  
    $query    = $dbh->prepare($sql);
    $query->bindParam(':name', $name, PDO::PARAM_STR);  
    $query->bindParam(':password', $password, PDO::PARAM_STR);  
    $query->bindParam(':status', $status, PDO::PARAM_STR);  
    $query->execute();
    $results = $query->fetchAll(PDO::FETCH_OBJ);
    
    if ($status = "0")  
        goto a;
    else
        goto b;
    
    break;
    
b:
    if ($query->rowCount() > 0) {
        $_SESSION['alogin'] = $_POST['username'];  
        echo "<script type='text/javascript'> document.location = 'Home.php'; </script>";  
    } else {
        
        echo "<script>alert('Invalid Details Or Account Not Confirmed');</script>";  
    }
    break;
a:
    echo "<script type='text/javascript'> document.location = 'change-password.php'; </script>";  
    
}

?>
Kommentar vom Moderator tomolpi am Nov 04, 2020 um 13:00:51 Uhr
Code formatiert und Beitrag leicht bearbeitet

Content-Key: 618699

Url: https://administrator.de/contentid/618699

Printed on: April 26, 2024 at 03:04 o'clock

Member: SlainteMhath
SlainteMhath Nov 04, 2020 updated at 13:08:28 (UTC)
Goto Top
Moin,

erstze "goto a" durch
header("Location: /url/von/changepassword.php")  

Setzt vorraus, das noch keine Ausgabe seit laden des Scripts erfolgt ist.

/EDIT:
- wobei er da nie hinkommt, da du $status='1' setzt
- ich würde auf ($query->rowCount() > 0) prüfen, bevor ich überhaupt etwas mache... wozu changepwd, wenn die usr/pw kombi gar nicht existiert.

lg,
Slainte
Member: Nxtrex
Nxtrex Nov 04, 2020 updated at 13:32:12 (UTC)
Goto Top
Hi,

header("Location: /url/von/changepassword.php")
hat leider nicht funktioniert.

Aber was meinst du mit ($query->rowCount() > 0) prüfen?

In der Datenbank stehen Username und Passwort die er abrufen soll und auch tut.
Mit dem Script kann man sich auch anmelden, alles funktioniert auch wie es soll.
Ich möchte nur, dass (Status 0 = Unconfirmed und Status 1=Confimed ) er bei Status 0 zu Passwort-change wechselt und nach dem passwort-change der Status auf 1 ( Confirmed wechselt)
Member: SlainteMhath
SlainteMhath Nov 04, 2020 at 13:52:10 (UTC)
Goto Top
Dein query fragt den server nach name="name" und pawd="pwd" und status=1
-> der Status kann schon mal niemals als 0 von dem query zurückgegeben werden (mal abgesehen das das feld "status" nicht selektiert wird)

und dann springst du schon a oder b an, obwohl noch gar nicht geprüft ist, ob der user existiert und/oder das korrekte PW eingegeben hat ( Zeile 24: if ($query->rowCount() > 0) ...)
Member: Nxtrex
Nxtrex Nov 04, 2020 at 14:06:18 (UTC)
Goto Top
Ich Frage mal so, wie kann ich den Status am besten überprüfen und dann abfragen, wenn Status=0 gehe zu change-password.php?
Member: SlainteMhath
SlainteMhath Nov 04, 2020 updated at 15:24:00 (UTC)
Goto Top
SELECT name,password,status FROM users WHERE name=:name and password=:password
rowcount == 0 -> usr und oder pw falsch, Abbruch
status == 0 -> goto changepwd
sonst: melde den user an