Hallo,
ich habe folgende Klassen:
und
bei der Zweiten, läuft alles einwandfrei aber hier:
bekomme ich bei der Funktion RegisterUser() immer die folgende Ausgabe:
Fatal error: Call to a member function bind_param() on a non-object
nun frage ich mich warum? Könnt ihr mir da helfen?
ich habe folgende Klassen:
PHP:
class DB{
protected $host;
protected $database;
protected $user;
protected $pw;
protected $db;
public function user_conn(){
$this->host="localhost";
$this->database="...";
$this->user="...";
$this->pw="...";
$db = new mysqli($this->host, $this->user, $this->pw, $this->database);
if ($db->connect_error){
printf(
"Can't connect to MySQL Server. Errorcode: %s\n",
mysqli_connect_error());
exit;
}
return $db;
}
}
und
PHP:
class eMailManager{
public function __construct($db){
if(is_object($db))
$this->db=$db;
}
public function ValidateeMail($email){
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
return FALSE;
}
return TRUE;
}
public function eMailexist($email){
$a=$this->db->user_conn();
$stmt=$a->prepare("SELECT b_userid FROM b_user WHERE b_email =?");
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->store_result();
$anz=$stmt->num_rows;
if($anz>0){
return TRUE;
}
return FALSE;
}
}
bei der Zweiten, läuft alles einwandfrei aber hier:
PHP:
once 'classes/sub_classes/class_UserManagement.php';
require_once 'classes/sub_classes/class_PasswortManager.php';
require_once 'classes/sub_classes/class_NamesManager.php';
require_once 'classes/sub_classes/class_PlacesManager.php';
require_once 'classes/sub_classes/class_eMailManager.php';
require_once 'classes/sub_classes/class_Rulez.php';
require_once 'classes/sub_classes/class_Street.php';
class Register{
//Variablen anlegen
public $anmeldefehler;
public $lenghterror;
public $symbolerror;
public $exist;
public $pwlenghterror;
public $pwsymbolerror;
public $pwnumerror;
public $vnamespaceerror;
public $vnamesymbolerror;
public $vnamecharserror;
public $nnamesymbolerror;
public $nnamespaceerror;
public $nnamecharserror;
public $placeerror;
public $emailfiltererror;
public $emailexist;
public $rulezaceptet;
public $streeterror;
public $hnrerror;
public $anmeldung;
public function __construct($db){
if(is_object($db))
$this->db=$db;
//Klassen einbinden
$this->userman=new UserManagement($this->db);
$this->pw=new PasswortManager();
$this->name=new NamesManager($this->db);
$this->place=new PlacesManager();
$this->email=new eMailManager($this->db);
$this->rulez=new Rulez($this->db);
$this->street= new Street();
//Variablen vorbereiten
$this->anmeldefehler=FALSE;
$this->lenghterror="";
$this->symbolerror="";
$this->exist="";
$this->pwlenghterror="";
$this->pwsymbolerror="";
$this->pwnumerror="";
$this->vnamespaceerror="";
$this->vnamesymbolerror="";
$this->vnamecharserror="";
$this->nnamesymbolerror="";
$this->nnamespaceerror="";
$this->nnamecharserror="";
$this->placeerror="";
$this->emailfiltererror="";
$this->emailexist="";
$this->rulezaceptet="";
$this->streeterror="";
$this->hnrerror="";
$this->anmeldung=FALSE;
}
public function CheckAnmeldung($user, $pw, $vname, $nname, $place, $street, $hnr, $email, $rulez){
//Usernamen überprüfen
if($this->userman->PrufLenght($user)!==TRUE){
$this->lenghterror="Bitte wählen Sie einen Namen mit 8 - 16 Zeichen!";
$this->anmeldefehler=TRUE;
}
elseif($this->userman->CheckSymbols($user)!==TRUE){
$this->symbolerror="Mehr als 2 Sonderzeichen, sind im Usernamen nicht gestattet!";
$this->anmeldefehler=TRUE;
}
elseif($this->userman->UserExist($user)!==FALSE){
$this->exist="Dieser Username ist bereits vergeben!";
$this->anmeldefehler=TRUE;
}
//Passwort überprüfen
if($this->pw->PrufLenght($pw)!==TRUE){
$this->pwlenghterror="Bitte wählen Sie ein Passwort mit 8-20 Zeichen!";
$this->anmeldefehler=TRUE;
}
elseif($this->pw->CheckPWSymbols($pw)!==TRUE){
$this->pwsymbolerror="Es sind keine Sonderzeichen im Passwort gestattet!";
$this->anmeldefehler=TRUE;
}
elseif($this->pw->CheckNum($pw)!==TRUE){
$this->pwnumerror="Zur Sicherheit sollten Sie ein Passwort mit mindestens 2 Zahlen wählen!";
$this->anmeldefehler=TRUE;
}
//Vornamen überprüfen
if($this->name->CheckSymbols($vname)!==TRUE){
$this->vnamesymbolerror="Mehr als 2 Sonderzeichen, sind im Vornamen nicht gestattet!";
$this->anmeldefehler=TRUE;
}
elseif($this->name->CheckWhitespaces($vname)!==TRUE){
$this->vnamespaceerror="Bitte geben Sie Ihren Vornamen ein!";
$this->anmeldefehler=TRUE;
}
elseif($this->name->CheckChars($vname)!==TRUE){
$this->vnamecharserror="Mehr als 20 Zeichen, sind im Vornamen nicht gestattet!";
$this->anmeldefehler=TRUE;
}
//Nachnamen prüfen
if($this->name->CheckSymbols($nname)!==TRUE){
$this->nnamesymbolerror="Mehr als 2 Sonderzeichen, sind im Nachnamen nicht gestattet!";
$this->anmeldefehler=TRUE;
}
elseif($this->name->CheckWhitespaces($nname)!==TRUE){
$this->nnamespaceerror="Bitte geben Sie Ihren Nachnamen ein!";
$this->anmeldefehler=TRUE;
}
elseif($this->name->CheckChars($nname)!==TRUE){
$this->nnamecharserror="Mehr als 20 Zeichen, sind im Nachnamen nicht gestattet!";
$this->anmeldefehler=TRUE;
}
if($this->place->CheckSymbols($place)!==TRUE){
$this->placeerror="Mehr als 2 Sonderzeichen, sind im Wohnort nicht gestattet!";
$this->anmeldefehler=TRUE;
}
if($this->email->ValidateeMail($email)!==TRUE){
$this->emailfiltererror="Bitte geben Sie eine korrekte eMail Adresse ein!";
$this->anmeldefehler=TRUE;
}
elseif($this->email->eMailexist($email)!==FALSE){
$this->emailexist="Diese eMailadresse ist bereits vergeben!";
$this->anmeldefehler=TRUE;
}
if($this->street->CheckWhitespaces($street)!==TRUE){
$this->streeterror="Bitte geben Sie Ihre Strasse ein!";
$this->anmeldefehler=TRUE;
}
elseif($this->street->CheckEingabe($street)!==TRUE){
$this->streeterror="Mehr als 3 Sonderzeichen, ist in der Strasse nicht gestattet!";
$this->anmeldefehler=TRUE;
}
elseif($this->street->CheckWhitespaces($hnr)!==TRUE){
$this->streeterror="Bitte geben Sie Ihre Hausnummer ein!";
$this->anmeldefehler=TRUE;
}
elseif($this->street->CheckEingabe($hnr)!==TRUE){
$this->streeterror="Mehr als 1 Sonderzeichen, ist in der Hausnummer nicht gestattet!";
}
if($this->rulez->TestIfAcepted($rulez)!==TRUE){
$this->rulezaceptet="Bitte <b>lesen</b> und akzeptieren Sie unsere Regeln!";
$this->anmeldefehler=TRUE;
}
return $this->anmeldefehler;
return $this->lenghterror;
return $this->symbolerror;
return $this->exist;
return $this->pwlenghterror;
return $this->pwsymbolerror;
return $this->pwnumerror;
return $this->vnamesymbolerror;
return $this->vnamespaceerror;
return $this->vnamecharserror;
return $this->emailfiltererror;
return $this->rulezaceptet;
}
public function GenCode($email){
$this->code=md5($email . time());
return $this->code;
}
public function RegisterUser($user, $pw, $vname, $nname, $g_tag, $g_mon, $g_jahr, $zip, $city, $street, $hnr, $email){
//Passwort verschlüsseln
$this->pw=md5($pw);
//Identifikationscode generieren
$this->code=$this->GenCode($email);
//Addresse zusammensetzen
$this->addres=$street." ".$hnr;
//In die DB eintragen
$a=$this->db->user_conn();
$stmt=$a->prepare("INSERT INTO b_user (b_user_status, b_uname, b_password, b_email, b_code, b_vname, b_nname, b_zip, b_city, b_address, b_last_ip, b_last_action)
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("issssssissss", 1, $user, $this->pw, $email, $this->code, $vname, $nname, $zip, $city, $this->address, $_SERVER['REMOTE_ADDR'], "Registrierung");
$stmt->execute();
if(($stmt->affected_rows)!=0){
$this->anmeldung=TRUE;
}
}
}
bekomme ich bei der Funktion RegisterUser() immer die folgende Ausgabe:
Fatal error: Call to a member function bind_param() on a non-object
nun frage ich mich warum? Könnt ihr mir da helfen?
Zuletzt bearbeitet von einem Moderator: