<?php
error_reporting(E_ALL);
$db=mysql_connect('localhost','root','');
mysql_select_db('work');
mysql_set_charset('UTF-8');
//Переменные
$summa=1;
$time=time();
$self_url=$_SERVER['PHP_SELF'];
$ip=$_SERVER['REMOTE_ADDR'];
$nik=isset($_POST['nik']) ? mysql_real_escape_string(trim($_POST['nik'])): null;
$text=isset($_POST['text']) ? mysql_real_escape_string($_POST['text']) : null;
if(isset($_POST['btn']) && !empty ($nik) && !empty($text)){
$user=mysql_query("SELECT * FROM `user` WHERE `ip`='$ip'");
$user_info=mysql_fetch_assoc($user);
if($user_info['time']+3<$time){
if($user_info['money']-$summa>=0){
$summa=$user_info['money']-$summa;
mysql_query("UPDATE `user` SET `money`='$summa',`time`='$time'");
mysql_query("INSERT INTO `mssges` (`nik`,`msg`) VALUES('$nik','$text')") or die(mysql_error());
header('Location:'.$self_url);
}
else{
$message='У вас недосточно денег на отсылку письма';}
}
else
$message='Вы можете отправлять сообщение не чаще чем раз в 3 секунды!';
}
?>
<!DOCTYPE html>
<head>
<meta charset="utf=8">
</head>
<body>
<?php
if(isset($message)) echo $message;
?>
<form method="post">
<input type="next" name="nik" placeholder="Введите ваш ник"></br>
<textarea cols="40" name="text" rows="5" placeholder="Введите текст"></textarea></br>
<input type="submit" name="btn" value="Отправить"><hr>
<?php
$msges=mysql_query('SELECT * FROM `mssges`');
while($all_msges=mysql_fetch_assoc($msges)){
$nik_out=htmlspecialchars($all_msges['nik']);
$msg_out=nl2br($all_msges['msg']);
echo '<b>'.$nik_out.'</b> пишет:</br>'.$msg_out.'</br>';
}
?>
:(
Спустя 5 минут, 54 секунды (28.05.2012 - 15:07) redreem написал(а):
начни с форматирования
Спустя 20 минут, 28 секунд (28.05.2012 - 15:27) Zzepish написал(а):
redreem
А по подробней, если не сложно плз
А по подробней, если не сложно плз
Спустя 5 минут, 8 секунд (28.05.2012 - 15:32) redreem написал(а):
Спустя 1 минута, 2 секунды (28.05.2012 - 15:33) inpost написал(а):
Для начала форматирование, то есть каждая вложенность - +4 пробела, кроме этого:
http://www.google.ru/#hl=ru&newwindow=1&sc...iw=1920&bih=987
Читаем всю первую страницу.
Далее 2 ошибки, которые я назвал + вывод ошибок, не исправлено.
http://www.google.ru/#hl=ru&newwindow=1&sc...iw=1920&bih=987
Читаем всю первую страницу.
Далее 2 ошибки, которые я назвал + вывод ошибок, не исправлено.
Спустя 2 минуты, 48 секунд (28.05.2012 - 15:36) ADiel написал(а):
О каком качестве можно говорить в данном случае?
Это малюсенький код, написанный на коленке.
И в этом роде. Вообще я бы подготовил массив с данными, а потом вывел бы в шаблоне.
Кстати, вот пример if
Это малюсенький код, написанный на коленке.
for(;$all_msges=mysql_fetch_assoc($msges);) # в топку
- $msg_out=str_replace("\n",' </br> ',htmlspecialchars($all_msges['msg']));
+ $msg_out=nl2br(htmlspecialchars($all_msges['msg']));
echo '<b>'.$nik_out.'</b> пишет:</br>'.$msg_out.'</br>';
?>
<b><?php echo $nik_out ?></b> пишет: </br>
<?php echo $msg_out ?>
</br>
<?php
И в этом роде. Вообще я бы подготовил массив с данными, а потом вывел бы в шаблоне.
Кстати, вот пример if
<?php if($param): ?>
<div>Param true </div>
<?php else : ?>
<div> Тут куча html, можно забыть, что открыт if или запутаться в скобках.. Потому я использую такой синтаксис </div>
<?php endif; ?>
Спустя 55 секунд (28.05.2012 - 15:37) inpost написал(а):
Как минимум: http://my.jetscreenshot.com/demo/20120528-oskp-65kb
Спустя 6 минут, 33 секунды (28.05.2012 - 15:44) Zzepish написал(а):
Кстати- зачем форматировать? если для меня итак текст читаем?
Спустя 47 секунд (28.05.2012 - 15:44) ADiel написал(а):
header("Location:$self_url");
А что мне мешает позволить браузеру не послушаться этого заголовка?
В данном случае, ничего страшного не произойдет, а в других случаях таким способом даже авторизацию можно обойти
Цитата |
Кстати- зачем форматировать? если для меня итак текст читаем? |
Для других.
Потом придется дописать еще 500 строк к этому коду. Посмотрел бы я, какой он читаемый.
Спустя 2 минуты, 53 секунды (28.05.2012 - 15:47) inpost написал(а):
Zzepish
Когда напишешь код среднего уровня, а потом вернёшься к нему через 1-2 недели, то поймешь разницу. Я, бывало, один скрипт на 700-800 строк переписывал и дополнял раз 6 или 7. Постоянно меняя способ защиты и дополнял функционал, в такой каше ты будешь путаться ещё пол года, пока поймешь где что и к кому... Красиво и удобно пишешь - это ты себя уважаешь.
Когда напишешь код среднего уровня, а потом вернёшься к нему через 1-2 недели, то поймешь разницу. Я, бывало, один скрипт на 700-800 строк переписывал и дополнял раз 6 или 7. Постоянно меняя способ защиты и дополнял функционал, в такой каше ты будешь путаться ещё пол года, пока поймешь где что и к кому... Красиво и удобно пишешь - это ты себя уважаешь.
Спустя 59 минут, 21 секунда (28.05.2012 - 16:47) Zzepish написал(а):
inpost
Я так и не понял, чем тебе $btn не нравится? ведь по умолчанию- кнопка нажата, значит $btn==1
Я так и не понял, чем тебе $btn не нравится? ведь по умолчанию- кнопка нажата, значит $btn==1
Спустя 46 минут, 18 секунд (28.05.2012 - 17:33) inpost написал(а):
Ты вывод ошибок включил? Посмотрел, что тебе WARNING сразу написали? ПРавильное программирование - программирование БЕЗ ОШИБОК!
У тебя код на 70% состоит из Попова, кстати.
У тебя код на 70% состоит из Попова, кстати.
Спустя 3 часа, 38 минут, 46 секунд (28.05.2012 - 21:12) Zzepish написал(а):
Котеров вообще советовал через $_REQUEST делать! но я не согласен!
Спустя 16 минут, 11 секунд (28.05.2012 - 21:28) inpost написал(а):
Zzepish
Нет, он как раз писал о том, что надо распределять четко всё. Просто в примерах показывал $_REQUEST.
Нет, он как раз писал о том, что надо распределять четко всё. Просто в примерах показывал $_REQUEST.
Спустя 8 минут, 27 секунд (28.05.2012 - 21:36) Zzepish написал(а):
inpost
еще он писал, что нужно юзать так @$_REQUEST[], ибо он не зависит ни от GET-формы, ни от POST! Но тогда можно будет в адресной строке задать значение!
еще он писал, что нужно юзать так @$_REQUEST[], ибо он не зависит ни от GET-формы, ни от POST! Но тогда можно будет в адресной строке задать значение!
Спустя 4 минуты, 44 секунды (28.05.2012 - 21:41) Игорь_Vasinsky написал(а):
Цитата |
@$_REQUEST[...] |
зло
if(isset($_REQUEST[...]))- лучик надежды
Спустя 5 минут, 1 секунда (28.05.2012 - 21:46) Zzepish написал(а):
Игорь_Vasinsky
А разница? Так просто идет проверка! Но через адресную строку ее все-равно реально задать) хотя тогда можно сделать проверку на значение, но это уже детали и лишний код! Все-равно не понимаю! Чем проверка на $btn (при нажатии значение ведь==1) не понравилось inpost
А разница? Так просто идет проверка! Но через адресную строку ее все-равно реально задать) хотя тогда можно сделать проверку на значение, но это уже детали и лишний код! Все-равно не понимаю! Чем проверка на $btn (при нажатии значение ведь==1) не понравилось inpost
Спустя 1 минута, 50 секунд (28.05.2012 - 21:48) Игорь_Vasinsky написал(а):
я тебе о чём сказал щас? нотисы и варнинги не глушат слобаками, от них нужно избавлятся путём отладки, а не тупо прятать.
и не более.
и не более.
Спустя 7 секунд (28.05.2012 - 21:48) inpost написал(а):
Свою голову на плечах ещё никто не отменял.
Хотя покажи, где конкретно он именно так рекомендовал? Назови страницу из книги
Хотя покажи, где конкретно он именно так рекомендовал? Назови страницу из книги
Спустя 3 минуты, 46 секунд (28.05.2012 - 21:52) Zzepish написал(а):
inpost
5 сек! Только найти дай =)
5 сек! Только найти дай =)
Спустя 4 минуты, 48 секунд (28.05.2012 - 21:57) Zzepish написал(а):
Во! Страница 205! Описание $_REQUEST
Спустя 3 минуты, 19 секунд (28.05.2012 - 22:00) Zzepish написал(а):
А! Я понял! Ты намекаешь на юзание action="какой_то_скрипт.php"! Но не удобно же(
Спустя 2 минуты, 45 секунд (28.05.2012 - 22:03) inpost написал(а):
Zzepish
195, почитай про собаку, там как раз говорится её вред!
195, почитай про собаку, там как раз говорится её вред!
Спустя 6 минут, 19 секунд (28.05.2012 - 22:09) Zzepish написал(а):
inpost
Я знаю! Читал: только юзать, если не повлечет абсолютно никаких действий за собой не заданная переменная! Или как-то так!
Я знаю! Читал: только юзать, если не повлечет абсолютно никаких действий за собой не заданная переменная! Или как-то так!
Спустя 1 минута, 59 секунд (28.05.2012 - 22:11) Zzepish написал(а):
может делать через is_set($_POST['btn'])?
Спустя 59 секунд (28.05.2012 - 22:12) inpost написал(а):
вообще надо в 99% случаев отказаться от собаки, за исключением с коннектом к БД.
Не is_set, а isset
Не is_set, а isset
Спустя 1 минута, 44 секунды (28.05.2012 - 22:14) Игорь_Vasinsky написал(а):
бинго!
Спустя 2 минуты, 57 секунд (28.05.2012 - 22:17) Zzepish написал(а):
смотрите! я так понимаю:
isset($_POST['btn']) дает TRUE при нажатии!
Но if($btn)- тоже, ведь, TRUE при нажатии!
isset($_POST['btn']) дает TRUE при нажатии!
Но if($btn)- тоже, ведь, TRUE при нажатии!
Спустя 5 минут, 34 секунды (28.05.2012 - 22:22) Zzepish написал(а):
Я подредактировал код! На на 2 переменные все-равно выдает ошибки! Я их отметил. И что с ними делать(
Спустя 2 минуты, 24 секунды (28.05.2012 - 22:25) inpost написал(а):
У тебя есть переменная: $_POST['nik'], зачем её дублировать в $nik ? Это лишнее и неправильно. Сразу работай непосредственно с $_POST['nik'] и т.д. далее.
Стоит лишь изменять в том случае, если с переменной будешь проводить операции в дальнейшем.
Стоит лишь изменять в том случае, если с переменной будешь проводить операции в дальнейшем.
Спустя 11 секунд (28.05.2012 - 22:25) Игорь_Vasinsky написал(а):
Цитата |
isset($_POST['btn']) дает TRUE при нажатии! Но if($btn)- тоже, ведь, TRUE при нажатии! |
да.
Цитата |
$text=mysql_real_escape_string($_POST['text']); //Ошибка |
ну тернарная операция же есть
$var = isset($var) ? filter($var) : null;
Спустя 1 минута, 47 секунд (28.05.2012 - 22:27) Zzepish написал(а):
Игорь_Vasinsky
я гдет видел такое, но не придал значение (подумал, что писал идиот):
В такой вариации!
я гдет видел такое, но не придал значение (подумал, что писал идиот):
if(isset($_POST['nik'])) $nik=$_POST['nik'];
В такой вариации!
Спустя 3 минуты, 50 секунд (28.05.2012 - 22:30) Игорь_Vasinsky написал(а):
в моём журнале прочти про тернарный оператор.
Спустя 6 секунд (28.05.2012 - 22:30) Zzepish написал(а):
Вот! Подправил! ошибки не выдает!
Спустя 12 минут, 58 секунд (28.05.2012 - 22:43) Zzepish написал(а):
Игорь_Vasinsky
ПОдправил код согласно твоему примеру)
ПОдправил код согласно твоему примеру)
Спустя 6 минут, 6 секунд (28.05.2012 - 22:50) Игорь_Vasinsky написал(а):
молодец!
Спустя 2 минуты, 52 секунды (28.05.2012 - 22:52) Zzepish написал(а):
ПРи проверке на error_reporting(E_ALL); ошибок не выдает!
Спустя 2 минуты, 31 секунда (28.05.2012 - 22:55) Zzepish написал(а):
Игорь_Vasinsky
Теперь код не совсем нубский?)
Теперь код не совсем нубский?)
Спустя 20 минут, 53 секунды (28.05.2012 - 23:16) inpost написал(а):
До сих пор нубский, ты же меня проигнорировал.
Спустя 3 минуты, 7 секунд (28.05.2012 - 23:19) Zzepish написал(а):
inpost
Если че- не учитывай форматирование!
Если че- не учитывай форматирование!
Спустя 1 час, 58 минут, 10 секунд (29.05.2012 - 01:17) Zzepish написал(а):
inpost
Дык в дальнейшем ее и проще пихать куданить! Разве не так? И короче, и у добней
Дык в дальнейшем ее и проще пихать куданить! Разве не так? И короче, и у добней
Спустя 50 минут, 17 секунд (29.05.2012 - 02:07) inpost написал(а):
Удобнее объекты или их представление в виде группировки в массивы по смыслу, но никак не независимые переменные, которые ничем друг с другом не связаны вовсе.
Лишняя переменная - лишняя ячейка в памяти занята, зачем забивать бесполезным?
Если я по коду пишу $_POST['key'] - значит я сразу вижу, что данные пришли из формы, а не откуда-то из левого скрипта!
Лишняя переменная - лишняя ячейка в памяти занята, зачем забивать бесполезным?
Если я по коду пишу $_POST['key'] - значит я сразу вижу, что данные пришли из формы, а не откуда-то из левого скрипта!
Спустя 5 часов, 28 минут, 37 секунд (29.05.2012 - 07:36) YVSIK написал(а):
Цитата (Zzepish @ 28.05.2012 - 22:12) |
Котеров вообще советовал через $_REQUEST делать! но я не согласен! |
хМ)) что-то уж выражение знакомое )) где-то оно уже проскакивало))
подобным, Шариков, Карла Маркса критиковал
вообщем как говорил прохфесор Преаброженский
в топку их обоих , и Котерова и Маркса этого )) в ТОПКУ
Спустя 5 минут, 28 секунд (29.05.2012 - 07:41) YVSIK написал(а):
Цитата (Zzepish @ 29.05.2012 - 00:19) |
inpost Если че- не учитывай форматирование! |
а если не игнорировать? все-же а написать так ))
<?php
<?phperror_reporting(E_ALL);
$db = mysql_connect('localhost', 'root', '');
mysql_select_db('work');
mysql_set_charset('UTF-8');
//Переменные
$summa = 1;
$time = time();
$self_url = $_SERVER['PHP_SELF'];
$ip = $_SERVER['REMOTE_ADDR'];
$nik = isset($_POST['nik']) ? mysql_real_escape_string(strip_tags(trim($_POST['nik']))) : null;
$text = isset($_POST['text']) ? mysql_real_escape_string($_POST['text']) : null;
if(isset($_POST['btn']) && !empty($nik) && !empty($text))
{
$user = mysql_query("SELECT * FROM `user` WHERE `ip`='$ip'");
$user_info = mysql_fetch_assoc($user);
if($user_info['time'] + 3 < $time)
{
if($user_info['money'] - $summa > = 0)
{
$summa = $user_info['money'] - $summa;
mysql_query("UPDATE `user` SET `money`='$summa',`time`='$time'");
mysql_query("INSERT INTO `mssges` (`nik`,`msg`) VALUES('$nik','$text')") or die(mysql_error());
header("Location:$self_url");
}
else
{
$message = 'У вас недосточно денег на отсылку письма';
}
}
else
{
$message = 'Вы можете отправлять сообщение не чаще чем раз в 3 секунды!';
}
}
?>
<!DOCTYPE html>
<head>
<meta charset="utf=8">
</head>
<body>
<?php
if(isset($message))
{
echo $message;
}
?>
<form method="post">
<input type="next" name="nik" placeholder="Введите ваш ник"></br>
<textarea cols="40" name="text" rows="5" placeholder="Введите текст"></textarea></br>
<input type="submit" name="btn" value="Отправить"><hr>
<?php $msges = mysql_query('SELECT * FROM `mssges`');
while($all_msges = mysql_fetch_assoc($msges))
{
$nik_out = htmlspecialchars($all_msges['nik']);
$msg_out = nl2br($all_msges['msg']);
echo '<b>'. $nik_out .'</b> пишет:</br>'. $msg_out .'</br>';
}
?>
и ещё сравнивать их, разница будет очевина)
Спустя 20 минут, 10 секунд (29.05.2012 - 08:02) twin написал(а):
Ты считаешь, что этого достаточно?
А тут что strip_tags() делает?
$user = mysql_query("SELECT * FROM `user` WHERE `ip`='$ip'");
А тут что strip_tags() делает?
$nik = isset($_POST['nik']) ? mysql_real_escape_string(strip_tags(trim($_POST['nik']))) : null;
Спустя 31 минута, 55 секунд (29.05.2012 - 08:34) Игорь_Vasinsky написал(а):
mysql_query("UPDATE `user` SET `money`='$summa',`time`='$time'");
mysql_query("INSERT INTO `mssges` (`nik`,`msg`) VALUES('$nik','$text')") or die(mysql_error());
понять не могу... какая строка обделена вниманием? первая или вторая? :lol:
Спустя 11 часов, 50 минут, 2 секунды (29.05.2012 - 20:24) Zzepish написал(а):
Игорь_Vasinsky
А обязательно везде лепить or die ?
А обязательно везде лепить or die ?
Спустя 2 минуты, 23 секунды (29.05.2012 - 20:26) Zzepish написал(а):
twin
$user = mysql_query("SELECT * FROM `user` WHERE `ip`='$ip'");
это ж я просто для примера влепил) а что?
$user = mysql_query("SELECT * FROM `user` WHERE `ip`='$ip'");
это ж я просто для примера влепил) а что?
Спустя 43 секунды (29.05.2012 - 20:27) Zzepish написал(а):
twin
strip_tags() -чтоб теги в нике вырезать! Не?
strip_tags() -чтоб теги в нике вырезать! Не?
Спустя 50 секунд (29.05.2012 - 20:27) Kuliev написал(а):
Цитата (Zzepish @ 29.05.2012 - 21:24) |
Игорь_Vasinsky А обязательно везде лепить or die ? |
Если не хочешь писать постоянно OR DIE() создай обертку для MYSQL_QUERY и будет тебе счастье...
Спустя 31 минута, 17 секунд (29.05.2012 - 20:59) Zzepish написал(а):
Kuliev
Дык оно ж никак не влияет, только на вывод ошибок!
Дык оно ж никак не влияет, только на вывод ошибок!
Спустя 3 минуты, 38 секунд (29.05.2012 - 21:02) Игорь_Vasinsky написал(а):
вот я и спрашиваю - тебе нужен вывод ошибок? у тя в одной строке есть в другой нет. понятно? ты либо отлаживаешь либо нет.
Спустя 17 минут, 37 секунд (29.05.2012 - 21:20) Zzepish написал(а):
Игорь_Vasinsky
да я одну, скорей сего проворонил просто
да я одну, скорей сего проворонил просто
Спустя 14 часов, 23 минуты, 22 секунды (30.05.2012 - 11:43) Zerstoren написал(а):
Цитата (Zzepish @ 29.05.2012 - 18:20) |
Игорь_Vasinsky да я одну, скорей сего проворонил просто :D |
по этому стоит делать обертки.
К примеру:
function query($sql, $debug = false) {
$result = mysql_query($sql);
if($debug && !$result) die(mysql_error());
return $result
}
При публикации проекта, $debug, как значение по умолчанию оставляем false, а при разработке в true.
В общем такое малюсенькое абстрагирование.
Спустя 6 минут, 24 секунды (30.05.2012 - 11:50) Zzepish написал(а):
Zerstoren
Эт ООП уже так?
Эт ООП уже так?
Спустя 26 минут, 15 секунд (30.05.2012 - 12:16) Ser18 написал(а):
Нет
Спустя 53 минуты, 27 секунд (30.05.2012 - 13:09) Zzepish написал(а):
Ser18
А абстрагирование не к ООП относится?
А абстрагирование не к ООП относится?
Спустя 7 минут, 49 секунд (30.05.2012 - 13:17) inpost написал(а):
Zzepish
При чём тут функции к ООП? ООП - это наследие между классами и распределение их на цепочки. Даже сами классы по отдельности не будут никаким ООП.
При чём тут функции к ООП? ООП - это наследие между классами и распределение их на цепочки. Даже сами классы по отдельности не будут никаким ООП.
Спустя 23 минуты, 51 секунда (30.05.2012 - 13:41) Ramzil_Nixon написал(а):
<?php
error_reporting(E_ALL);
$db=mysql_connect('localhost','root','');
mysql_select_db('work');
mysql_set_charset('UTF-8');
//Переменные
$summa=1;
$time=time();
$self_url=$_SERVER['PHP_SELF'];
$ip=$_SERVER['REMOTE_ADDR'];
$nik=isset($_POST['nik']) ? mysql_real_escape_string(strip_tags(trim($_POST['nik']))): null;
$text=isset($_POST['text']) ? mysql_real_escape_string($_POST['text']) : null;
if(isset($_POST['btn']) && !empty ($nik) && !empty($text))
{
$user=mysql_query("SELECT * FROM `user` WHERE `ip`='$ip'");
$user_info=mysql_fetch_assoc($user);
if($user_info['time']+3<$time)
{
if($user_info['money']-$summa>=0)
{
$summa=$user_info['money']-$summa;
mysql_query("UPDATE `user` SET `money`='$summa',`time`='$time'");
mysql_query("INSERT INTO `mssges` (`nik`,`msg`) VALUES('$nik','$text')") or die(mysql_error());
header("Location:".$self_url);
}
else
{
$message='У вас недосточно денег на отсылку письма';
}
}
else
$message='Вы можете отправлять сообщение не чаще чем раз в 3 секунды!';
}
?>
<!DOCTYPE html>
<head>
<meta charset="utf=8">
</head>
<body>
<?php if(isset($message)) echo $message; ?>
<form method="post">
<input type="next" name="nik" placeholder="Введите ваш ник"></br>
<textarea cols="40" name="text" rows="5" placeholder="Введите текст"></textarea>
</br>
<input type="submit" name="btn" value="Отправить">
<hr>
<?php $msges=mysql_query('SELECT * FROM `mssges`');
while($all_msges=mysql_fetch_assoc($msges))
{
$nik_out=htmlspecialchars($all_msges['nik']);
$msg_out=nl2br($all_msges['msg']);
echo '<b>'.$nik_out.'</b> пишет:</br>'.$msg_out.'</br>';
}
?>
Спустя 2 минуты, 48 секунд (30.05.2012 - 13:44) twin написал(а):
Цитата (Zzepish @ 29.05.2012 - 17:26) |
twin $user = mysql_query("SELECT * FROM `user` WHERE `ip`='$ip'"); это ж я просто для примера влепил) а что? |
Ну если для примера и безопасность не волнует, то да.
Спустя 1 минута, 16 секунд (30.05.2012 - 13:45) twin написал(а):
Цитата (Zzepish @ 29.05.2012 - 17:27) |
twin strip_tags() -чтоб теги в нике вырезать! Не? |
Чем "теги" то помешали? А если у меня такой ник - <twin>?
Спустя 3 минуты, 32 секунды (30.05.2012 - 13:49) inpost написал(а):
Ramzil_Nixon
У тебя те же ошибки, что выше говорились... особенно с моей стороны.
У тебя те же ошибки, что выше говорились... особенно с моей стороны.
Спустя 1 час, 3 минуты, 20 секунд (30.05.2012 - 14:52) Zzepish написал(а):
twin
А! Согласен. Прогнал
А! Согласен. Прогнал