<?
class EnterTF {
var $login;
var $pwd;
var $right_res;
var $go = 0;
function RightLP($login, $pwd) {
include "../scripts_db/connect_db.php"; //код ниже
mysql_select_db($DB);
if ($this->login != "") {
if ($this->pwd != "") {
$query_login = "SELECT '$this->login' FROM $DB_1 WHERE LOG = '$this->login'";
$result_login = mysql_query($query_login);
if (mysql_num_rows($result_login) == 0) {
$this->right_res = "Пользователя с таким лог нет";
}
else {
$query_pwd = "SELECT '$this->pwd' FROM $DB_1 WHERE PASS = '$this->pwd'";
$result_pwd = mysql_query($query_pwd);
if (mysql_num_rows($result_pwd) == 0) {
$this->right_res = "Неправельный пароль";
}
else {
$go = 1;
$r = mysql_query("SELECT * FROM $DB_1 WHERE LOG = '$this->login'");
$f = mysql_fetch_array($r);
$this->right_res = "Hello $f[LNAME] $f[FNAME]";
}
}
} else {$this->right_res = "Укажыте пароль!";}
} else {$this->right_res = "Укажите логин!";}
}
}
?>
БД и ООП в PHP
Версия PHP 5
Помогите, очень надо.
Доктор, у меня ноготь чешется, через сколько лет я умру? Может код хотя бы, а? Только желательно в аттаче, если там больше 70 строчек, а так в красиво оформленую рамочку)))).
Код:
connect_db.php
Код:
$SERVER = "server";
$USER = "root";
$PASSWD = "pwd";
$DB = "sys_db";
$DB_1 = "sys_user";
if (!mysql_connect($SERVER, $USER, $PASSWD))
{
echo $HEAD;
echo $CP;
echo $BODY;
echo "<H2>$ERROR</H2>";
echo "</BODY></HTML>";
exit;
}
mysql_select_db($DB);
$USER = "root";
$PASSWD = "pwd";
$DB = "sys_db";
$DB_1 = "sys_user";
if (!mysql_connect($SERVER, $USER, $PASSWD))
{
echo $HEAD;
echo $CP;
echo $BODY;
echo "<H2>$ERROR</H2>";
echo "</BODY></HTML>";
exit;
}
mysql_select_db($DB);
library.php
Код:
include "library.php";
if (class_exists('EnterTF')) {
$RightFT = new EnterTF();
} else {
return 'error: EnterTF class not found';
}
$RightFT->RightLP($lo, $pw);
echo "<CENTER>".$RightFT->right_res."</CENTER><BR>";
// ВОТ ЗДЕСЬ ПОСТОЯННО ВЫВОДИТ "Укажите логин!"
if (class_exists('EnterTF')) {
$RightFT = new EnterTF();
} else {
return 'error: EnterTF class not found';
}
$RightFT->RightLP($lo, $pw);
echo "<CENTER>".$RightFT->right_res."</CENTER><BR>";
// ВОТ ЗДЕСЬ ПОСТОЯННО ВЫВОДИТ "Укажите логин!"
И что же ето такое???
Бегом в манул читать чем отличаются двойные от одинарных ковычек, потом внимательно просматриваем код
И зачем велосипед то изобретать... Чесно говорю мне подумалось, что shaelf первым дело пошлет в зентдовский фреймворк :D , но нет... може зря?
PS Это не ООП, это непонятное объединение в класс 2 функций.
Цитата: 77713
$this->right_res = "Укажыте пароль!";
Жесть )
В написанном ООП не просматривается. Я бы сказал, что тут вообще ничего не просматривается. Тупо "линия" с выводом в поток, зачем-то заключённое в класс. Зачем?
Код:
<?php
/*-----------------------------------------------------------------------
Класс для подключения базы данных.
Параметры подключения должны быть описаны
в файле конфигурации cnf_config.phpm.
-----------------------------------------------------------------------*/
class sql {
private $result_rows; // Result rows hash
private $query_handle; // db: the query handle
private $link_ident; // db: the link identifier
public function __construct() {
//переменные берутся из файла конфигурации
global $db_host, $db_name, $db_username, $db_password;
$link_ident = @mysql_connect($db_host,$db_username,$db_password);
if (!$link_ident) $this->errorshow(0);
if (!@mysql_select_db($db_name,$link_ident)) $this->errorshow(1);
if (!@mysql_ping()) $this->errorshow(2);
}
private function errorshow($errcode) {
$errmsg="";
switch ($errcode) {
case 0: $errmsg="Database server unreacheble, sorry!";break;
case 1: $errmsg="Database unreacheble, sorry!";break;
case 2: $errmsg="Connection lost, sorry!";break;
}
echo $errmsg;
die();
}
public function query($sql, $code_return_mode = 0) {
$q_handle = @mysql_query($sql);
$n = @mysql_num_rows($q_handle);
for ($i=0; $i<$n; $i++) {
$result = mysql_fetch_array($q_handle);
$return_array[$i] = $result;
}
if (!$q_handle) error_log("QUERY FAILED: $sql\n");
@$this->result_rows = $return_array;
if (!$q_handle) {
return(1);
} else {
return(0); // return 0 if it fails
}
}
public function get_result($row_num, $column_name) {
return ($this->result_rows[$row_num][$column_name]);
}
public function get_row_hash($row_num) {
return ($this->result_rows[$row_num]);
}
public function get_table_hash() {
return $this->result_rows;
}
public function done($close_connection = 0) {
if ($close_connection) {
@mysql_close($this->link_ident);
}
}
}
/*-----------------------------------------------------------------------
Класс для подключения базы данных.
Параметры подключения должны быть описаны
в файле конфигурации cnf_config.phpm.
-----------------------------------------------------------------------*/
class sql {
private $result_rows; // Result rows hash
private $query_handle; // db: the query handle
private $link_ident; // db: the link identifier
public function __construct() {
//переменные берутся из файла конфигурации
global $db_host, $db_name, $db_username, $db_password;
$link_ident = @mysql_connect($db_host,$db_username,$db_password);
if (!$link_ident) $this->errorshow(0);
if (!@mysql_select_db($db_name,$link_ident)) $this->errorshow(1);
if (!@mysql_ping()) $this->errorshow(2);
}
private function errorshow($errcode) {
$errmsg="";
switch ($errcode) {
case 0: $errmsg="Database server unreacheble, sorry!";break;
case 1: $errmsg="Database unreacheble, sorry!";break;
case 2: $errmsg="Connection lost, sorry!";break;
}
echo $errmsg;
die();
}
public function query($sql, $code_return_mode = 0) {
$q_handle = @mysql_query($sql);
$n = @mysql_num_rows($q_handle);
for ($i=0; $i<$n; $i++) {
$result = mysql_fetch_array($q_handle);
$return_array[$i] = $result;
}
if (!$q_handle) error_log("QUERY FAILED: $sql\n");
@$this->result_rows = $return_array;
if (!$q_handle) {
return(1);
} else {
return(0); // return 0 if it fails
}
}
public function get_result($row_num, $column_name) {
return ($this->result_rows[$row_num][$column_name]);
}
public function get_row_hash($row_num) {
return ($this->result_rows[$row_num]);
}
public function get_table_hash() {
return $this->result_rows;
}
public function done($close_connection = 0) {
if ($close_connection) {
@mysql_close($this->link_ident);
}
}
}
и неплохо бы поместить файл конфигурации с параметрами подключения выше корневой директории сайта.
А вообще фреймворки рулят, для начала советую CodeIgniter, простой и понятный, хорошая реализация MVC, отличная документация.
P.S. Автор учЫ русскЫй :)