Wolly300
Lt. Junior Grade
- Registriert
- Mai 2014
- Beiträge
- 507
Hallo Zusammen,
ich habe ein Problem mit meinen Cookies.
Hier erst mal das script:
Also das Problem ist, das die Cookies nicht gesetzt werden und somit auf den weiterführenden Seiten nicht geprüft werden können. Ich weiß das diese am Anfang gesetzt werden müssen, aber wie mache ich das mit diesem Aufbau?
ich habe ein Problem mit meinen Cookies.
Hier erst mal das script:
PHP:
//Class_User.php
<?php
require 'class/Class_Db.php';
require 'class/Class_Cookie.php';
class user {
function login ($email, $passwort) {
$db = new db;
$user = $db->search('Benutzer', 'email', $email,"","");
if (password_verify($passwort, $user['passwort'])) {
$cookie = new cookie;
$cookie->set_security_token($user['id']);
return true;
} else {
return false;
}
}
}
?>
PHP:
//Class_Db.php
<?php
require_once 'tester.php';
class db {
private function connect() {
$test = new test;
$connect = $test->tester();
return $connect;
}
public function search($table, $name_a, $valuable_a, $name_b, $valuable_b) {
if ( $name_b != "" ){
$query = $this->connect()->prepare("SELECT * FROM `".$table."` WHERE `".$name_a."` = :valuable_a AND '".$name_b."' = :valuable_b;");
$result = $query->execute(array('valuable_a' => $valuable_a, 'valuable_b' => $valuable_b));
} else {
$query = $this->connect()->prepare("SELECT * FROM `".$table."` WHERE `".$name_a."` = :valuable_a; ");
$result = $query->execute(array('valuable_a' => $valuable_a));
}
if ($result) {
$DB_Value = $query->fetch();
return $DB_Value;
} else {
return FALSE;
}
}
public function update_cookie($ID, $time, $token, $identifier) {
if ($identifier != "") {
$query = $this->connect()->prepare("UPDATE `securitytoken` SET `identifier` = :identifier, `token` = :token, `letztes_Update` = :letztes_Update WHERE `ID` = :ID ;");
$result = $query->execute(array('identifier' => $identifier, 'token' => $token, 'letztes_Update' => $time, 'ID' => $ID));
} else {
$query = $this->connect()->prepare("UPDATE `securitytoken` SET `token` = :token, `letztes_Update` = :letztes_Update WHERE `ID` = :ID ;");
$result = $query->execute(array('token' => $token, 'letztes_Update' => $time, 'ID' => $ID));
}
return $result;
}
public function close($database) {
mysqli_close($database);
}
}
?>
PHP:
//Class_Cookie.php
<?php
require_once 'class/Class_Db.php';
date_default_timezone_set('Europe/Berlin');
class cookie {
private function db () {
$db = new db;
return $db;
}
private function random_string() {
if (function_exists('random_bytes')) {
$bytes = random_bytes(16);
$str = bin2hex($bytes);
} else if (function_exists('openssl_random_pseudo_bytes')) {
$bytes = openssl_random_pseudo_bytes(16);
$str = bin2hex($bytes);
} else if (function_exists('mcrypt_create_iv')) {
$bytes = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
$str = bin2hex($bytes);
} else {
$str = md5(uniqid('irgendetwas', true));
}
return $str;
}
private function time() {
$timestamp = time();
$time = date("d.m.Y - H:i:s", $timestamp);
return $time;
}
public function set_security_token($ID) {
$identifier = $this->random_string();
$token = $this->random_string();
$time = $this->time();
$result = $this->db()->update_cookie($ID, $time, $token, $identifier);
if ($result) {
setcookie("id", $ID, $this->time() + (3600 * 6));
setcookie("identifier", $identifier, $this->time() + (3600 * 6));
setcookie("token", $token, $this->time() + (3600 * 6));
}
}
public function check_security_token($ID, $identifier, $token) {
$result = $this->db()->search('securitytoken', 'ID', $ID, 'identifier', $identifier);
if ($token !== sha1($result['token'])) {
header("location: index.html");;
} else {
$token = $this->random_string();
$time = time();
$result = $this->db()->update_cookie($ID, $time, $token, "");
if ($result) {
setcookie("identifier", $identifier, $this->time() + (3600 * 6));
setcookie("token", $token, $this->time() + (3600 * 6));
}
}
}
}
Also das Problem ist, das die Cookies nicht gesetzt werden und somit auf den weiterführenden Seiten nicht geprüft werden können. Ich weiß das diese am Anfang gesetzt werden müssen, aber wie mache ich das mit diesem Aufbau?