Witam mam 3 pliki php i od dłuższego czasu nie mogę uporać się z błędem w pliku register otwieram 3 razy Testing.php ponieważ mam 3 zapytania, ale nie jestem w stanie globalnie otworzyć tego pliku raz i stąd wyskakuje błąd :
Fatal error: Cannot declare class App\DataBases, because the name is already in use in F:\Xampp\htdocs\ItemShop\source\DataBases.php on line 5
Dodam tylko że wracam do PHP więc obstawiał że błędy są banalne.
<?php
namespace App;
class Register{
//private $fetch;
private $data = true;
private $password_hash;
function __construct($login, $email, $password, $password2){
session_start();
if($this->goodLogin($login)==false) $this->data = false;
else if($this->goodEmail($email)==false) $this->data = false;
else if($this->goodPassword($password)==false) $this->data = false;
else if($this->goodPassword2($email)==false) $this->data = false;
if($this->data == false) {
header("Location: ../../?rejestracja" );
}
else {
require(__DIR__ . "/Testing.php");
$stmt = $db->DBgetConnect()->prepare("INSERT INTO users VALUES (NULL, :login, :email, :password_hash, :ranks)");
$stmt->bindValue(":login", $login);
$stmt->bindValue(":email", $email);
$stmt->bindValue(":password_hash", $this->password_hash);
$stmt->bindValue(":ranks", 0);
$stmt->execute();
header("Location: ../../?logowanie" );
}
}
private function goodLogin($login){
$login = htmlentities($login, ENT_QUOTES, "UTF-8");
if ((strlen($login)<3) || (strlen($login)>20)){
$_SESSION['e_register']="Login musi posiadać od 3 do 20 znaków!";
return false;
}
if (ctype_alnum($login)==false){
$_SESSION['e_register']="Login może składać się tylko z liter i cyfr (bez polskich znaków)";
return false;
}
require(__DIR__ . "/Testing.php");
$stmt = $db->DBgetConnect()->prepare("SELECT * FROM users WHERE login = :login");
$stmt->bindValue(":login", $login);
$stmt->execute();
if($stmt->rowCount()>0) {
$_SESSION['e_register'] = "Jest już taki login";
return false;
}
return true;
}
private function goodEmail($email){
$email = htmlentities($email, ENT_QUOTES, "UTF-8");
$emailB = filter_var($email, FILTER_SANITIZE_EMAIL);
if ((filter_var($emailB, FILTER_VALIDATE_EMAIL)==false) || ($emailB!=$email))
{
$_SESSION['e_register'] = "Podaj poprawny adres e-mail!";
return false;
}
require(__DIR__ . "/Testing.php");
$stmt = $db->DBgetConnect()->prepare("SELECT * FROM users WHERE email = :email");
$stmt->bindValue(":email", email);
$stmt->execute();
if($stmt->rowCount()>0) {
$_SESSION['e_register'] = "Istnieje już konto przypisane do tego email'a";
return false;
}
return true;
}
private function goodPassword($password){
if ((strlen($password)<8) || (strlen($password)>20))
{
$_SESSION['e_register'] = "Hasło musi posiadać od 8 do 20 znaków!";
return false;
}
return true;
}
private function goodPassword2($password2){
if ($password1!=$password2)
{
$_SESSION['e_register'] = "Hasła nie są identyczne!";
return false;
}
$this->password_hash = password_hash($password2, PASSWORD_DEFAULT);
return true;
}
}
<?php
require(__DIR__ . '/DataBases.php');
$db = new \App\DataBases;
if(!$db->Connect(require(__DIR__. '/Settings.php'))){
echo 'Błąd<br>' . $db->errorBase();
die;
}
<?php
namespace App;
class DataBases{
private $connect;
private $connectArray;
private $optionArray;
private $lastError;
public function errorBase(){
//$optionError['errorVisible'] = $optionArray['options'];
//return $this->$optionArray['errorVisible'];
if($this->optionArray['errorVisible']==1)
return $this->lastError;
}
private function getConnect(){
return 'mysql:host=' . $this->connectArray['host'] .';dbname='. $this->connectArray['namebase'];
}
public function DBgetConnect(){
return $this->connect;
}
public function Connect($settingArray){
$this->connectArray = $settingArray['databases'];
$this->optionArray = $settingArray['options'];
try{
$this->connect = new \PDO(
$this->getConnect(),
$this->connectArray['username'],
$this->connectArray['password']
);
return true;
}
catch(\PDOException $e){
$this->lastError = $e->getMessage();
return false;
}
}
}