class showLogin extends connect_Db {
/**
* Check for empty fields in the form
*/
function empty_check($post) {
foreach ($post as $key=>$value) {
if(empty($value)) {
$error = $key;
}
}
return $error;
}
/**
* Clean the data
*/
private function clean_text($str) {
if(get_magic_quotes_gpc() == 1) {
$srt = str_replace('\"', """, $str);
$srt = str_replace("\'", "'", $str);
$srt = str_replace("<", "<", $str);
$srt = str_replace(">", ">", $str);
} else {
$str = htmlspecialchars($str, ENT_QUOTES, "UTF-8", false);
}
return $str;
}
/**
* method for insert data to db
*/
function str_data($post) {
foreach($post as $key=>$value) {
$aux_data[$key] = $this->clean_text($value);
}
$this->insert_user($aux_data);
}
/**
* method string for insert
*/
function insert_user($post) {
$sql = "INSERT INTO `login` SET `name` = '".$post['name']."',
`pass` = '".$post['pass']."',
`encode` = '".$post['email']."'
";
//echo $sql;
$this->sql($sql);
return true;
}
/**
* select users from table #1
*/
private function return_user() {
$sql = "SELECT * FROM `login` ORDER BY `id` DESC";
$res = $this->sql($sql);
return $res;
}
/**
* select users from table #2
*/
function show_user() {
$res = $this->return_user();
if(mysql_num_rows($res) > 0) {
while($row = mysql_fetch_assoc($res)) {
$name[$row['id']] = $row;
}
} else {
echo 'String in db is empty';
}
return $name;
}
/**
* delete user from db
*/
function delete_user($get) {
$sql = "DELETE FROM `login` WHERE `id` = '".$get."'";
$this->sql($sql);
return true;
}
}
$user = new showLogin; // select object
Спасибо всем кто подскажет или поможет!
Спустя 6 минут, 9 секунд (11.07.2011 - 10:40) linker написал(а):
тут
$srt = str_replace('\"', """, $str);ошибка (надо '"' или "\"").
Спустя 1 минута, 24 секунды (11.07.2011 - 10:41) Mirexzpalich написал(а):
В function empty_check возвращай массив, а не последнее не заполненное поле...
Спустя 4 минуты, 3 секунды (11.07.2011 - 10:45) Mirexzpalich написал(а):
function delete_user($get) {
$sql = "DELETE FROM `login` WHERE `id` = '".$get."'";
$this->sql($sql);
return true;
}
И возвращать лучше:
function delete_user($get) {
$sql = "DELETE FROM `login` WHERE `id` = '".$get."'";
return $this->sql($sql);
}
Потому как запрос может будет ошибочным, а вернет true... Не красиво...
Спустя 8 минут, 37 секунд (11.07.2011 - 10:54) m4a1fox написал(а):
Mirexzpalich
Цитата |
В function empty_check возвращай массив, а не последнее не заполненное поле... |
Согласен. С этим была запарка. Выводит в массиве, но вот при вызове метода, есть одна особенность. При пустых всех полях, выводит последнее не пустое. В принципе не критично, но как ее переделать - не знаю... Может подскажите?
Спустя 2 часа, 6 минут, 44 секунды (11.07.2011 - 13:01) Mirexzpalich написал(а):
function empty_check($post) {
$error = array();
foreach ($post as $key=>$value) {
if(empty($value)) {
$error[$key] = $key;
// или
$error[] = $key;
// или
$error[$key] = 'Не заполнено!!';
}
}
return $error;
}
Спустя 14 минут, 2 секунды (11.07.2011 - 13:15) m4a1fox написал(а):
Mirexzpalich
Как то странно! Сейчас попробую!? Спасибо!
Как то странно! Сейчас попробую!? Спасибо!
Спустя 13 минут, 12 секунд (11.07.2011 - 13:28) Mirexzpalich написал(а):
m4a1fox
Чего странного?
Чего странного?
Спустя 11 минут, 39 секунд (11.07.2011 - 13:40) m4a1fox написал(а):
Mirexzpalich
Я вспомнил. Так жн пытался, да только выводим массив. Его придется пропускать через еще один метод, дабы разбить...
Я вспомнил. Так жн пытался, да только выводим массив. Его придется пропускать через еще один метод, дабы разбить...
Спустя 4 минуты, 22 секунды (11.07.2011 - 13:44) m4a1fox написал(а):
И еще у меня вопрос... Как пременить этот метод empty_check в самом классе? Такое врозможно??? А то так получается я проверяю вот таким образом
if(isset($_POST['send'])) {
if($user->empty_check($_POST) == false) {
if(!isset($_SESSION['name'])) {
$user->str_data($_POST);
$_SESSION['name'] = $_POST['name'];
}else {
echo 'Ups, you have send the massenge yet! Please try again later.';
}
}else {
echo '<br />Or make sure, that <font color=red><b>all field</b></font> are full.
<br />Please check the <b>'.$true.'</b>';
}
}
Спустя 1 минута, 37 секунд (11.07.2011 - 13:46) Mirexzpalich написал(а):
m4a1fox
Класс может спокойно использовать свои собственные методы.... А так же и все объявленные функции...
Класс может спокойно использовать свои собственные методы.... А так же и все объявленные функции...
Спустя 6 минут, 41 секунда (11.07.2011 - 13:52) m4a1fox написал(а):
Mirexzpalich
Верю! Да только надо понять как из применить, да еще и как-то задать им условие. То есть если false (то есть все поля полны), а если true, то условие insert_user не срабатывает...
Верю! Да только надо понять как из применить, да еще и как-то задать им условие. То есть если false (то есть все поля полны), а если true, то условие insert_user не срабатывает...
Спустя 22 минуты, 25 секунд (11.07.2011 - 14:15) Mirexzpalich написал(а):
if(isset($_POST['send']))
if(empty($user->empty_check($_POST) )) //Если вернулся пустой массив, то ошибок нет
if(!isset($_SESSION['name']))
{
$user->str_data($_POST);
$_SESSION['name'] = $_POST['name'];
}
else
echo 'Ups, you have send the massenge yet! Please try again later.';
else
echo '<br />Or make sure, that <font color=red><b>all field</b></font> are full.<br />Please check the <b>'.$true.'</b>';
Спустя 1 час, 54 минуты, 9 секунд (11.07.2011 - 16:09) m4a1fox написал(а):
Mirexzpalich
Цитата |
if(empty($user->empty_check($_POST) )) //Если вернулся пустой массив, то ошибок нет |
А вот так не получается...
Спустя 7 часов, 3 минуты, 7 секунд (11.07.2011 - 23:12) Лена написал(а):
1. clean_text($str)
Прочитайте, для чего используется htmlspecialchars()
При вставке значений в базу она не используется.
Используется или mysql_real_escape_string(), или mysql_escape_string()
2. Массив $aux_data неопределен.
function str_data($post) {
$aux_data = array();
foreach($post as $key=>$value) {
$aux_data[$key] = $this->clean_text($value);
}
$this->insert_user($aux_data);
}
3. Не видно в классе метода sql($sql);
4. return_user()
Назначайте имена методам так, чтобы сразу было понятно, что они делают.
Возвращает список пользователей - или return_users(), или return_users_list()
5. show_user()
Ощущение, что этот метод вы откуда-то содрали.
Во всем классе вы используете обертку $this->sql($sql), здесь вы используете mysql_num_rows(),
mysql_fetch_assoc(). Кроме MySQL, есть другие типы баз данных, при переносе на другую базу метод show_user() работать не будет.
6. Везде в методах ошибка: если запрос не исполнился, вы должны либо остановить скрипт и выдать ошибку, либо записать ошибку в лог.
7.
if(empty($user->empty_check($_POST) )) //Если вернулся пустой массив, то ошибок нет
В таких случаях делают print_r($user->empty_check($_POST)); die; - и смотрят, что выводится на экран.
Прочитайте, для чего используется htmlspecialchars()
При вставке значений в базу она не используется.
Используется или mysql_real_escape_string(), или mysql_escape_string()
2. Массив $aux_data неопределен.
function str_data($post) {
$aux_data = array();
foreach($post as $key=>$value) {
$aux_data[$key] = $this->clean_text($value);
}
$this->insert_user($aux_data);
}
3. Не видно в классе метода sql($sql);
4. return_user()
Назначайте имена методам так, чтобы сразу было понятно, что они делают.
Возвращает список пользователей - или return_users(), или return_users_list()
5. show_user()
Ощущение, что этот метод вы откуда-то содрали.
Во всем классе вы используете обертку $this->sql($sql), здесь вы используете mysql_num_rows(),
mysql_fetch_assoc(). Кроме MySQL, есть другие типы баз данных, при переносе на другую базу метод show_user() работать не будет.
6. Везде в методах ошибка: если запрос не исполнился, вы должны либо остановить скрипт и выдать ошибку, либо записать ошибку в лог.
7.
if(empty($user->empty_check($_POST) )) //Если вернулся пустой массив, то ошибок нет
В таких случаях делают print_r($user->empty_check($_POST)); die; - и смотрят, что выводится на экран.
Спустя 10 часов, 11 минут, 40 секунд (12.07.2011 - 09:24) vasa_c написал(а):
Чем занимается showLogin и каким вообще макаром он является расширением подключения к базе?
Спустя 35 минут, 17 секунд (12.07.2011 - 09:59) m4a1fox написал(а):
Лена
1.
1.
Цитата |
Прочитайте, для чего используется htmlspecialchars() |
я знаю зачем нужно htmlspecialchars. Но тут так же есть проблемка. Поймите меня правильно, один эксперт говорит - используй свой метод, вы говорите - использовать встроенную функцию... Хотя понимаю, что стандарт лучше. Спасибо за совет. Буду иметь ввиду!
2.
Цитата |
Массив $aux_data неопределен. |
Исправил. Спасибо что заметили.
3.
Цитата |
Не видно в классе метода sql($sql); |
Метод в другом классе. Три раза проверил.
4.
Цитата |
Назначайте имена методам так, чтобы сразу было понятно, что они делают. |
Вы считаете.... Так и сделаю. Спасибо!
5.
Цитата |
Ощущение, что этот метод вы откуда-то содрали. |
Кусочек - содрал, что-то сам дописал.
6.
Цитата |
если запрос не исполнился, вы должны либо остановить скрипт и выдать ошибку, либо записать ошибку в лог. |
А вот про это можно поподробнее... Как это реализовать пока что мозгов не хватает!?
7.
Цитата |
В таких случаях делают print_r($user->empty_check($_POST)); die; - и смотрят, что выводится на экран. |
Про print_r я в курсе. Просто визуально не очень красиво... А так в принципе получалось все вывести в массиве и прочитать его при этом.
Спасибо за разбор класса. Теперь буду знать.
Спустя 1 минута, 31 секунда (12.07.2011 - 10:01) m4a1fox написал(а):
vasa_c
Расширение подключения к базе? Объясните что вы имеете ввиду?
Расширение подключения к базе? Объясните что вы имеете ввиду?
Спустя 1 час, 28 минут, 20 секунд (12.07.2011 - 11:29) ИНСИ написал(а):
Лена красава 

Спустя 24 минуты, 3 секунды (12.07.2011 - 11:53) m4a1fox написал(а):
INSIDIOUS
Ага! Разорвала как тузик грелу
Ага! Разорвала как тузик грелу

Спустя 16 минут, 4 секунды (12.07.2011 - 12:09) ИНСИ написал(а):
m4a1fox ага, все главное тебя поддерживают - она опа, и показала тебе

Спустя 29 минут, 14 секунд (12.07.2011 - 12:38) m4a1fox написал(а):
INSIDIOUS
Ну так по делу.... уже исправил...
Ну так по делу.... уже исправил...
