Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1267 • Страница 39 из 64<  1 ... 36  37  38  39  40  41  42 ... 64  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Junior
Статус: Не в сети
Регистрация: 17.12.2008
По подробней напиши, для чего тебе это надо? Не форму делаешь?



Партнер
 

Junior
Статус: Не в сети
Регистрация: 06.08.2008
HTML
Есть ли атрибуты,запрещающие появления полосы прокрутки в элементе "textarea" ?
T.е.текст не должен превышать количества строк,указанных в атрибуте "rows".


 

Junior
Статус: Не в сети
Регистрация: 17.12.2008
абонент007 писал(а):
Есть ли атрибуты,запрещающие появления полосы прокрутки в элементе "textarea" ?
T.е.текст не должен превышать количества строк,указанных в атрибуте "rows".

Если тебе надо чтобы не было полосы прокрутки, то
css -
Код:
overflow:hidden;

но в опере не работает.
А если тебе надо
Цитата:
T.е.текст не должен превышать количества строк,указанных в атрибуте "rows"

то это можно сделать с помощью JS -
Код:
<textarea onkeypress="onkp()" id=txt></textarea>
function onkp()
{
   if(window.event.srcElement.value.length>5){window.event.returnValue=false}
}

но это не спасет тебя от Ctrl+V :)


 

Member
Статус: Не в сети
Регистрация: 13.06.2007
Откуда: UK/Glasgow
Фото: 0
Помогите плиз со скриптиком.
Написал небольшую админскую панель, так вот надо сверять имя и пароль с оными в базе данных. Это я сделал, но не знаю, как остановить выполнение дальнейшего скрипта, если пароль или логин неверны. Если введу break; то оно будет работать, но будет и выдавать ошибку в браузере: Fatal error: Cannot break/continue 1 level in
И ещё, если кто-то напрямую залезет в админскую страницу, то эта вся байда не срабатывает :)

Вот код если чё:

ident.php
Код:
<meta http-equiv="Content-Type" content="no-cache; charset=windows-1251"/>
<title>Вход в админскую панель</title>

<form method=post action=mwork.php>
Введите логин:<BR>
<input type=text name=name><br>
Введите пароль:<BR>
<input type=password name=pass><br>
<input type=submit name=send value=Проверить>
</form>



mwork.php
Код:
***блаблабла соединение с бд и тд итп... ***


$name =  stripslashes(trim($_POST['name']));
$pw =  md5(stripslashes(trim($_POST['pass'])));
$adminlogin=mysql_query ("select name from admmenu;"); // Запрос имени и пароля из БД
$adminpassw=mysql_query ("select passw from admmenu;");
$adname=mysql_result($adminlogin,0,'name'); // Их перевод в сам php
$adpass=mysql_result($adminpassw,0,'passw');

if(@$_POST['send'] != '') { //Если нажата кнопка send
   if ($name!==$adname) { echo "Неверное имя!"; } // Если введённое имя и пароль не совпадает с оными из БД, то должно написать эту ошибку и ОСТАНОВИТЬ СКРИПТ (КАК ЭТО СДЕЛАТЬ?)
      if ($pw!==$adpass) { echo "Неверный пароль";  }

                    }

//Ещё нужна защита от того, кто напрямую зайдёт на админскую страницу (КАК ЭТО СДЕЛАТЬ?)

Там где надобно помочь, я пометил "(КАК ЭТО СДЕЛАТЬ?)"

_________________
-=AMD POWER FAN CLUB=-


 

Advanced member
Статус: Не в сети
Регистрация: 27.02.2007
Откуда: Москва
Фото: 54
SwiPTorrent писал(а):
stripslashes

Мммм.. Кто же так фильтрует? Есть же mysql_escape_string и mysql_unescape_string.

Да и вообще, это следует делать примерно так:

Код:
$name = mysql_escape_string(trim($_POST['name']));
$pass = md5(trim($_POST['pass']));

$result = mysql_query("SELECT COUNT(*) as row_count FROM admmenu WHERE name = '$name' AND pass = '$pass'");
$row = db_fetch_object($result);

if ($row->row_count == 0){ 
   die("Имя или пароль введены неверно.");
} else {
   // Все ОК
}


Цитата:
//Ещё нужна защита от того, кто напрямую зайдёт на админскую страницу


В каком смысле? Используй куки или сессии в комбинации с проверкой выше, нет ничего проще.

З.Ы. лучше выложи весь код, думаю там много чего следует переделать.

Примерчик простой на закуску тебе сделал:

Код:
// admin.php

function auth($name, $pass) {

  $result = mysql_query("SELECT COUNT(*) as row_count FROM admmenu WHERE name = '$name' AND pass = '$pass'");
  $row = db_fetch_object($result);

  if ($row->row_count == 0)
     return 0;
  else
     return 1; // Все ОК

}

function check_cookie($set_time){

  $result = mysql_query("SELECT COUNT(*) as row_count FROM adm_sessions WHERE set_time = '$set_time' AND ip = '".md5($_SERVER['REMOTE_ADDR'])."'");
  $row = db_fetch_object($result);

  if ($row->row_count == 0)
     return 0;
  else
     return 1; // Все ОК

}

if(!empty($_POST['name']) && !empty($_POST['pass'])) {

  $authorized = auth(
    mysql_escape_string(trim($name)),
    md5(trim($pass))
  );

  if($authorized) {
    setcookie("check_cookie", time());
    mysql_query("INSERT INTO adm_sessions VALUES(". time() .",'". md5($_SERVER['REMOTE_ADDR']). "')");

    header("Location: admin.php");
    die();

  } else {

    die("Неверное имя или пароль");

  }

} else {

  $authorized = check_cookie( mysql_escape_string(trim($_COOKIE['check_cookie'])) );
 
  if($authorized) { // юзер залогинен?

    // тут вывод админки, выполнение требующих прав действий.

  } else { // неа

    // выводим код формы авторизации через die()

  }


}


Чтобы работало, нужно создать еще одну таблицу в базе (adm_sessions, две колонки... Первая set_time-целое число, вторая ip - строка). Еще хорошо бы добавить в функцию проверки куков запрос на очистку таблицы от древних записей об авторизации, но с этим я думаю ты сам разберешься.

_________________
14900KS @ 6100/4800
96G Trident Z5 @ 7200 (34-42-42-53, ICE-RDT)
z790 Aorus Master X
RX 6900XT GAMING OC 16G+Bykski WB
macOS Sequia 15.5


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
HertZ писал(а):
Кто же так фильтрует?

Он фильтрует волшебные кавычки.

Я их фильтрую (иногда) так...
Код:
// избавляюсь от них если включены
$_POST['name'] = get_magic_quotes_gpc() ? stripslashes($_POST['name']) : $_POST['name'];
// и только потом уже беру имя и если надо делаю trim хотя в данном случае не особо вижу в этом смысл
$name =  trim($_POST['name']);

Хотя чаще не фильтрую потому что пишу чаще для конкретных серверов (где они отключены и включены быть могут только если админ с катушек съедет)

То что ты говоришь я делаю (и рекомендую делать) уже в запросе чтоб разделять переменную содержащую имя, от отфильтрованной строки идущей в запрос.
Цитата:
$result = mysql_query("SELECT COUNT(*) as row_count FROM admmenu WHERE name = '" . mysql_real_escape_string($name) . "' AND pass = '$pass'");


То чем занимается 99% посетителей этого топика называется "быдлокодерство", не надо писать код который "работает" надо писать тот который структурирован и документирован, тогда шансы того что он будет работать гораздо выше, и даже есть шансы что он будет работать хорошо !!!

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Advanced member
Статус: Не в сети
Регистрация: 27.02.2007
Откуда: Москва
Фото: 54
Vladson писал(а):
Он фильтрует волшебные кавычки.

А про SQL-инъекции забыл? Вот будет прикол, если кто-то дроп для всех таблиц сделает...

Vladson писал(а):
То чем занимается 99% посетителей этого топика называется "быдлокодерство", не надо писать код который "работает" надо писать тот который структурирован и документирован, тогда шансы того что он будет работать гораздо выше, и даже есть шансы что он будет работать хорошо !!!

Теперь понятно, почему сайт zztop'a без проблем получилось снести под корень три раза подряд. Писать надо нормально, а не красиво.
Добавлено спустя 1 минуту, 6 секунд
Vladson писал(а):
чтоб разделять переменную содержащую имя, от отфильтрованной строки идущей в запрос.

Смысл?

_________________
14900KS @ 6100/4800
96G Trident Z5 @ 7200 (34-42-42-53, ICE-RDT)
z790 Aorus Master X
RX 6900XT GAMING OC 16G+Bykski WB
macOS Sequia 15.5


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
HertZ писал(а):
А про SQL-инъекции забыл?

не факт что знал )))
HertZ писал(а):
Смысл?

Вот поработаешь над проектом в пару мегабайт (скажут ДОПИСАТЬ туда функционала) на опыте поймёшь что такое "порядок в коде"
Добавлено спустя 2 минуты, 17 секунд
Код это не просто набор букв и чисел !!!
Код по сути инструкция, и для процессора, и для программиста. Чем понятнее она написана тем точнее первый ей следует, и тем проще второму её править/дописывать/улучшать.
Добавлено спустя 1 минуту, 34 секунды
HertZ писал(а):
снести под корень

Снести под корень можно всё, другое дело сколько на это уйдёт времени, и стоит ли игра свеч !!!
Добавлено спустя 57 секунд
Даже вот (не фотошоп)
#77

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Advanced member
Статус: Не в сети
Регистрация: 27.02.2007
Откуда: Москва
Фото: 54
Vladson писал(а):
Вот поработаешь над проектом в пару мегабайт (скажут ДОПИСАТЬ туда функционала) на опыте поймёшь что такое "порядок в коде"

Не знаю, к чему это сказано.. Работать приходилось, и с утверждением согласен, но "большего порядка" в вашем варианте не вижу... Абсолютно однофигственные варианты.

Vladson писал(а):
Снести под корень можно всё, другое дело сколько на это уйдёт времени, и стоит ли игра свеч !!!

Ушло на эту богомерзкую, по словам админа, акцию, меньше пяти минут.

Vladson писал(а):
Чем понятнее она написана тем точнее первый ей следует, и тем проще второму её править/дописывать/улучшать.

Спорное утверждение. Так как пишем не в машинных кодах, то я бы даже сказал, что перманентно неверное. Хотя бы потому, что даже компиляторы ассемблера иногда генерируют настолько непохожий на оригинальный код, что выводы очевидны. Попробуйте как-нибудь проверить, интересно же.

З.Ы. вот вам простой пример на с/с++:

Это:

Код:
a = a * 2;


работает на х86 минимум в 10 раз медленнее такого варианта:

Код:
a = a >> 1;

И чем на большее число мы будем умножать, тем больше будет разница в быстродействии между умножением и операцией сдвига.

Не все что хорошо выглядит, хорошо работает... Еще можно использование адресной арифметики в пример привести, хотите?

_________________
14900KS @ 6100/4800
96G Trident Z5 @ 7200 (34-42-42-53, ICE-RDT)
z790 Aorus Master X
RX 6900XT GAMING OC 16G+Bykski WB
macOS Sequia 15.5


 

Junior
Статус: Не в сети
Регистрация: 17.09.2007
Откуда: Москва
Vladson писал(а):
То чем занимается 99% посетителей этого топика называется "быдлокодерство", не надо писать код который "работает" надо писать тот который структурирован и документирован, тогда шансы того что он будет работать гораздо выше, и даже есть шансы что он будет работать хорошо !!!

У меня на работе раньше такой программист был как раз, который писал на php, лишь бы заработало и от него отстали.. Скажу я вам, доделывать после его ухода сайт, которым он занимался, было истинным мучением, после чего я все же решил почти полностью его переделать, уже как раз структурированно и документированно.. И самому же потом легче и приятней работать, и если кому-то придется модифицировать этот код, то легче разобраться будет..
Как я делаю:
1.Пишу в начале функций что они делают, разбиваю функции по группам:
Код:
########################   Функции регистрации    ####################
function reg_company ($errors) { ### Функция вывода формы регистрации компании
"Текст функции"
}
function reg_pers ($errors) { ### Функция вывода формы регистрации работника
"Текст функции"
}
######################################################################

2. Таким же макаром разбиваю и основной код, чтобы бегло просмотрев комментарии, можно было найти его нужную часть, и уже с ней работать.
3. Так же как с функциями, пишу для каждого условия (if, elseif, else) в комментарии, что делается если оно выполняется:
Код:
if ($errors) {$CONTENT.=reg_pers($errors);} ### Если есть ошибки то снова выводим форму регистрации
else { ### Если ошибок нет, то вставляем данные в бд
}

Я не претендую на лавры мегакрутого программера (вообще я php "выучил" сам, по необходимости, и из-за интереса), но все же такой подход считаю весьма удобным и хотелось бы, чтобы люди аккуратнее писали код. =)

И еще хотелось бы задать вопрос людям, понимающим в безопасном программировании на php.
Если обрабатывать входящие данные след. функцией, то можно ли считать, что они обезопасились и смело использовать их для записи в бд и последующего использования\вывода на сайте?
Вот сама функция:
Код:
function save_POST($_POST){
   foreach($_POST as $key => $value ){
   $_POST[$key] = strip_tags($_POST[$key], "<br><br />");
   $_POST[$key] = trim($_POST[$key]);
   $_POST[$key] = mysql_real_escape_string($_POST[$key]);
   }
return $_POST;
}


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
HertZ писал(а):
однофигственные варианты.

Вот как ты после этой обработки восстановишь данные (например через год захочешь не только в базу пихать, но и по мылу послать, или ещё куда нибудь, придётся извращаться с повторной обработкой...)

True_Drago писал(а):
Если обрабатывать входящие данные след. функцией

Безопасности то добавит, а вот логичности ноль... (см.выше про "не только в базу")

У вас одна и таже проблема, вы смотрите на POST данные как на то что идёт в базу, а надо разделять "данные" которые пришли POST-ом и то куда они пойдут и когда !!!!

Данные надо обрабатывать не в зависимости откуда они пришли, а в зависимости куда они уйдут ! © dark-demon.
Добавлено спустя 1 минуту, 55 секунд
PS - http://dkflbk.nm.ru/php_basic_err_1.html (в материале есть одна серьёзная ошибка вместо is_numeric надо ctype_digit но советую почитать тем кто обеспокоен безопасностью)

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
HertZ писал(а):
работает на х86 минимум в 10 раз медленнее такого варианта:

Если тормозит язык программирования значит тормозит именно программист (с) моё

Если приложение (или фрагмент) тормозит, его стоит оптимизировать, в противном случае будет экономия на спичках (выигрыш в целом 0.01% а код усложняется на 999%) чем и отличается опытный программер от новичка, он не делает "идеальный" код, а находит выгодный компромисс между "игрой и стоимостью свечь"

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Junior
Статус: Не в сети
Регистрация: 17.09.2007
Откуда: Москва
Vladson писал(а):
Безопасности то добавит, а вот логичности ноль... (см.выше про "не только в базу")

У вас одна и таже проблема, вы смотрите на POST данные как на то что идёт в базу, а надо разделять "данные" которые пришли POST-ом и то куда они пойдут и когда !!!!


Вобщем понял - если хотим данные записать в бд, то обрабатываем их именно для вставки в бд (убираем возможность SQL инъекции). Если, допустим, записали эти данные в бд, то каждый раз перед их выводом уже обезопашиваем их для вывода - удаляем лишние теги и т.д. и т.п.

Статья понравилась, все толково там написано, так что спасибо за полезную ссылку!


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
True_Drago писал(а):
Вобщем понял - если хотим данные записать в бд, то обрабатываем их именно для вставки в бд (убираем возможность SQL инъекции).

Это в частности, а в целом просто разделяем данные и то что с ними можно сделать, данные это то что идёт от пользователя, они не могут быть опасными, опасно неправильное с ними обращение (в том числе и обработка их не там где надо)

Вот этот форум к примеру, он не режет теги, не 'фильтрует' "кавычки" он не трогает данные, однако они нормально сохраняются и нормально отображаются.

True_Drago писал(а):
Статья понравилась, все толково там написано, так что спасибо за полезную ссылку!

В том то и дело что в первом посте этой темы есть куда более полезная ссылка http://phpfaq.ru/ и там всё тоже самое написано и даже больше и даже лучше. Если есть желание писать не просто "кое-как" рабочий код, а на самом деле "безглючный" код, обязательно прочитай от корки до корки (а может даже и не один раз) очень многое станет понятно, а очень многое из того что казалось понятным раньше будет казаться смешным...

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Junior
Статус: Не в сети
Регистрация: 17.09.2007
Откуда: Москва
Еще раз спасибо!
К сожалению пока не так много времени, чтобы это читать, но обязательно найду на это время, когда над своим проектом буду работать..
Пока что я учился по книжке Джанет Валейд, PHP5 для чайников + различные статьи и инета по мере надобности, но вот как-то в вопросах безопасного программирования остался в некоторых непонятках. Теперь буду знать что читать, и принципы безопасности. )
А вообще, допишу диплом, и начну изучать и практиковаться в ООП - уже давно пора..


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
True_Drago писал(а):
практиковаться в ООП

Тогда выброси Валейда и тем более читай меньше статей недостаточно авторитетных авторов из инета...

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Junior
Статус: Не в сети
Регистрация: 17.09.2007
Откуда: Москва
Vladson писал(а):
Тогда выброси Валейда и тем более читай меньше статей недостаточно авторитетных авторов из инета...

Вроде начальные знания она нормально дает, но все же некоторые вопросы там и правда плохо освещены, так что когда начну изучать ООП, возьму что-нить более серьезное все-таки)))
Я начал php с нее изучать, т.к. фактически вообще даже школьный\институтский курс программирования забыл и хоть какие-то азы она дала))))
А статьи из инета - это в основном справочная информация по функциям php, да решение каких-либо конкретных задач (в основном смотрел пару-тройку решений, и потом делал свое)


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
Главное усвой основно принцип ООП, делай не так чтоб "просто было" а так чтоб "по уму".
Это конечно сложно, но не невозможно.

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Junior
Статус: Не в сети
Регистрация: 17.09.2007
Откуда: Москва
Vladson писал(а):
Главное усвой основно принцип ООП, делай не так чтоб "просто было" а так чтоб "по уму". Это конечно сложно, но не невозможно.

Опять вспомнился мне мой бывшый коллега по работе, который когда узнал про ява скрипты, начал их везде добавлять, потому что "прикольно" или чтобы как раз "просто было"...
Да и сам ща проект доделываю, который уже не по уму разрабатываю, а лишь бы быстрее доделать , т.к. мотивации 0..(но все же надеюсь получается не откровенное говно)
Так вот - когда делаешь, чтобы просто было, или просто хреново, потом же тяжелее самому работать становится, да и потом если кто-то будет доделывать твой код, вспомнит не добрым словом создателя такого "творения"..
Вобщем согласен что, что код надо писать именно "по уму", а не абы как.


 

Junior
Статус: Не в сети
Регистрация: 23.12.2006
Откуда: Норильск
Есть веб - сервер. Юзер вводит данные в форму, эти данные отправляются в обычный текстовый файл. Дальше юзер должен отослать этот файл мне. Нам же нужно чтобы юзер никак не смог узнать что написано в файле, да и вообще просмотреть его. Много гуглил но подходящего ответа найти не удалось. Нужно сделать это только средствами PHP. Буду благодарен за любую помощь. Спасибо.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1267 • Страница 39 из 64<  1 ... 36  37  38  39  40  41  42 ... 64  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan