tworze sobie klasy do obsługi bazy i walidacji danych.
plik z klasa bazy
dbFns.php
Kod
<?php
require_once('config.php');
class Database {
protected $hConn;
public function __construct() {
$this->hConn = mysql_connect(Db_host, Db_user, Db_password, Db_database)
if(!$this->hConn) {
throw new Exception("Nie można połączyć się z bazą.");
}
}
public function __destruct() {
if($this->hConn) {
print ('widze w destruktorze');
mysql_close($this->hConn);
}
}
public function select($sql) {
$sql = mysql_real_escape_string($sql);
$hRes = mysql_query($sql, $this->hConn) or die('brak polaczenia w dbfns');
while($odp = mysql_fetch_array($hRes)) {
print $odp['email'];
}
}
}
?>
require_once('config.php');
class Database {
protected $hConn;
public function __construct() {
$this->hConn = mysql_connect(Db_host, Db_user, Db_password, Db_database)
if(!$this->hConn) {
throw new Exception("Nie można połączyć się z bazą.");
}
}
public function __destruct() {
if($this->hConn) {
print ('widze w destruktorze');
mysql_close($this->hConn);
}
}
public function select($sql) {
$sql = mysql_real_escape_string($sql);
$hRes = mysql_query($sql, $this->hConn) or die('brak polaczenia w dbfns');
while($odp = mysql_fetch_array($hRes)) {
print $odp['email'];
}
}
}
?>
plik z funkcjami do walidacji danych:
Kod
<?php
require 'dbFns.php';
class ValidateData extends Database {
function safe_output($string) {
$string = trim($string);
$string = strip_tags($string);
$string = htmlspecialchars($string);
return $string;
}
function validateUserName($value) {
$value = $this->safe_output($value);
if($value == null) {
return 0;
}
$query = parent::select("SELECT * FROM users WHERE username = '$value'");
}
}
?>
require 'dbFns.php';
class ValidateData extends Database {
function safe_output($string) {
$string = trim($string);
$string = strip_tags($string);
$string = htmlspecialchars($string);
return $string;
}
function validateUserName($value) {
$value = $this->safe_output($value);
if($value == null) {
return 0;
}
$query = parent::select("SELECT * FROM users WHERE username = '$value'");
}
}
?>
i wywołanie funkcji w pliku sign.php w postaci:
Kod
<?php
if(isset($_POST['signup'])) {
$validate = new ValidateData();
$validate->validateUserName($_POST['login_sign']);
}
?>
if(isset($_POST['signup'])) {
$validate = new ValidateData();
$validate->validateUserName($_POST['login_sign']);
}
?>
Problem polega na tym że połączenie z bazą jest zamykane przed wywołaniem funckji validateUserName(), tzn. pojawia się komunikat z
Kod
$hRes = mysql_query($sql, $this->hConn) or die('brak polaczenia w dbfns');
tej linijki kodu że brak połączenia w dbnfs, oraz komunikat Kod
print('widze w destruktorze');
czyli wywoływany jest od razu destruktor według mnie. Czy ktoś może pomóc rozwiązać ten problem bo nie wiem czy funkcja select jest w złym miejscu czy uchwyt połączenia trzeba jakoś inaczej przekazać??