Antworten auf deine Fragen:
Neues Thema erstellen

PDO MySQL Passwort Check Klasse

C_Motion_Graphics

Nicht mehr ganz neu hier

Guten Tag,

ich bin gerade dabei eine kleine Klasse zuschreiben, die auf eine Datenbank zugreift und dort halt guckt ob die Username / Passwort Kombination des Users korrekt war... Login-System halt..

Mein Code zur Zeit:

PHP:
/**
* Connect to DataBase
*/
class dataBase extends login {
	
	//Infos
	protected $_dbInfo, $_uInfo;

	//Querys
	protected $_sqlCheck;

	//Query Params
	protected $_queryParamsCheck;

	//Querys Results
	protected $_resultCheck, $_row;

	//Objects
	protected $conn;


	public function setVars($inputArrayDB, $inputUser, $inputPWD) {
		//dbInfo
		$this->_dbInfo = array();
		$this->_dbInfo['structure'] = $inputArrayDB[0];
		$this->_dbInfo['host'] = $inputArrayDB[1];	
		$this->_dbInfo['username'] = $inputArrayDB[2];	
		$this->_dbInfo['password'] = $inputArrayDB[3];
		$this->_dbInfo['database'] = $inputArrayDB[4];
		$this->_dbInfo['table'] = $inputArrayDB[5];

		//userInfo
		$this->_uInfo = array();
		$this->_uInfo['inputUser'] = $inputUser;
		$this->_uInfo['inputPWD'] = $inputPWD;
	}

	public function connect() {
		try {
			//connect
			$this->conn = new PDO($this->_dbInfo['structure'].':host='.$this->_dbInfo['host'].';dbname='.$this->_dbInfo['database'].'', $this->_dbInfo['username'], $this->_dbInfo['password']);
			$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		} catch (PDOException $e) {
			die('ERROR: '.$e->getMessage().'<br />');
		}
	}

	public function close() {
		$this->conn = null;
	}


	public function setQuerys() {
		
	}

	public function query() {
		try {
			$this->_sqlCheck = $this->conn->prepare("SELECT u_id, u_name, u_pass FROM u_users WHERE u_name = :username");
			$this->_queryParamsCheck = array(':username' => $this->_uInfo['inputUser']);
			$this->_resultCheck = $this->_sqlCheck->execute($this->_queryParamsCheck);
		} catch (PDOException $e) {
			die('ERROR: '.$e->getMessage().'<br />');
		}
		
	}

	public function retrieve() {
		$this->_row = $this->_sqlCheck->fetch();
		if ($this->_row) {
			if ($this->_uInfo['inputPWD'] === $this->_row['u_pass']) {
				return true;
			}
		}

		//if everything fails the input couldn' t be correct...
		return false;
	}
}

die setVars() Methode bekommt wie man sieht halt alle nötigen Infos, ich denke man kann aber leicht erkennen, was wo drin steht...

Das ganze funktioniert leider noch nicht ganz, das ganze scheitert an der Stelle wo es heißt:
PHP:
if ($this->_uInfo['inputPWD'] === $this->_row['u_pass']) {

Weiß jmd woran das liegen könnte?

Viele Grüße,

Christian
 

Duddle

Posting-Frequenz: 14µHz

AW: PDO MySQL Passwort Check Klasse

Naja, du sagst nicht was
Das ganze funktioniert leider noch nicht ganz
bedeutet. "Funktioniert nicht" ist keine Fehlerbeschreibung.

Prinzipiell ist das Ergebnis beim Vergleich mit dem Identisch-Operator "===" genau dann TRUE, wenn beide Ausdrücke (in deinem Fall Variablen) vom Inhalt und Typ gleich sind. Wenn du dort also ein FALSE hast, sind Inhalt und/oder Typ unterschiedlich. Den Inhalt kannst du dir direkt ausgeben lassen, den Typ mit gettype().


Duddle
 
A

annamausi1

Guest

AW: PDO MySQL Passwort Check Klasse

Guten Tag,

ich bin gerade dabei eine kleine Klasse zuschreiben, die auf eine Datenbank zugreift und dort halt guckt ob die Username / Passwort Kombination des Users korrekt war... Login-System halt..

Mein Code zur Zeit:

PHP:
/**
* Connect to DataBase
*/
class dataBase extends login {
	
	//Infos
	protected $_dbInfo, $_uInfo;

	//Querys
	protected $_sqlCheck;

	//Query Params
	protected $_queryParamsCheck;

	//Querys Results
	protected $_resultCheck, $_row;

	//Objects
	protected $conn;


	public function setVars($inputArrayDB, $inputUser, $inputPWD) {
		//dbInfo
		$this->_dbInfo = array();
		$this->_dbInfo['structure'] = $inputArrayDB[0];
		$this->_dbInfo['host'] = $inputArrayDB[1];	
		$this->_dbInfo['username'] = $inputArrayDB[2];	
		$this->_dbInfo['password'] = $inputArrayDB[3];
		$this->_dbInfo['database'] = $inputArrayDB[4];
		$this->_dbInfo['table'] = $inputArrayDB[5];

		//userInfo
		$this->_uInfo = array();
		$this->_uInfo['inputUser'] = $inputUser;
		$this->_uInfo['inputPWD'] = $inputPWD;
	}

	public function connect() {
		try {
			//connect
			$this->conn = new PDO($this->_dbInfo['structure'].':host='.$this->_dbInfo['host'].';dbname='.$this->_dbInfo['database'].'', $this->_dbInfo['username'], $this->_dbInfo['password']);
			$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		} catch (PDOException $e) {
			die('ERROR: '.$e->getMessage().'<br />');
		}
	}

	public function close() {
		$this->conn = null;
	}


	public function setQuerys() {
		
	}

	public function query() {
		try {
			$this->_sqlCheck = $this->conn->prepare("SELECT u_id, u_name, u_pass FROM u_users WHERE u_name = :username");
			$this->_queryParamsCheck = array(':username' => $this->_uInfo['inputUser']);
			$this->_resultCheck = $this->_sqlCheck->execute($this->_queryParamsCheck);
		} catch (PDOException $e) {
			die('ERROR: '.$e->getMessage().'<br />');
		}
		
	}

	public function retrieve() {
		$this->_row = $this->_sqlCheck->fetch();
		if ($this->_row) {
			if ($this->_uInfo['inputPWD'] === $this->_row['u_pass']) {
				return true;
			}
		}

		//if everything fails the input couldn' t be correct...
		return false;
	}
}

die setVars() Methode bekommt wie man sieht halt alle nötigen Infos, ich denke man kann aber leicht erkennen, was wo drin steht...

Das ganze funktioniert leider noch nicht ganz, das ganze scheitert an der Stelle wo es heißt:
PHP:
if ($this->_uInfo['inputPWD'] === $this->_row['u_pass']) {

Weiß jmd woran das liegen könnte?

Viele Grüße,

Christian

hi versuchs mal so

is aber nicht getestet...

PHP:
public function retrieve() { 
        $this->_row = $this->_sqlCheck->fetch(); 
        if ($this->_row) { 
            if ($this->_uInfo['inputPWD'] === $this->_row['u_pass']) {
            return true;
        }
        else
        {
            return false;
        }
    } 
}
 

C_Motion_Graphics

Nicht mehr ganz neu hier

AW: PDO MySQL Passwort Check Klasse

Ok...

Ich sehe, ich muss das etwas präziesieren...
Mit "funktioniert nicht", meine ich, dass das der Vergleich im If-Statement, welches ich nochmal extra aufgeschrieben habe, FLASE ausgibt, obwohl es theoritsch TRUE zurückgeben sollte.

@annamausi1 Dürfte (und macht) keinen Unterschied... "return true" schmeißt einen nämlich direkt aus der Methode raus...

Zum Typ-Vergleich:

Sollte der Typ nicht eigentlich gleich sein?
Hab jetzt meinen Computer aus, kann es also nicht jetzt gleich testen...
Danke aber für die Info (teste ich morgen) :D
 

Duddle

Posting-Frequenz: 14µHz

AW: PDO MySQL Passwort Check Klasse

obwohl es theoritsch TRUE zurückgeben sollte
Sollte der Typ nicht eigentlich gleich sein
Eigentlich ist ein gefährliches Wort in der Informatik. In Kombination mit "theoretisch" ist das Desaster oft nicht weit entfernt.
Entweder sind in deinem Fall die Inhalte oder die Typen unterschiedlich (oder du hast einen Bug in PHP entdeckt, was recht unwahrscheinlich ist), da hilft auch kein "eigentlich" :)


Duddle
 

C_Motion_Graphics

Nicht mehr ganz neu hier

AW: PDO MySQL Passwort Check Klasse

Ok, danke für die Tipps.
Ich habe nochmal alles überprüft, die Types waren in beiden Fällen string, also stellte das kein Problem dar.

Das eigentliche Problem war doch Recht simple: Ich hatte vergessen den User-Input zu Hashen und habe somit Klar-Text mit Hash verglichen...

Vielen Dank trotzdem für die Tipps :D

Christian
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.476
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben