Jump to content

stars

User
  • Posts

    978
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by stars

  1. По большому счету да если опасаетесь ссылок надо фильтровать.

     

    В частности далеко не всегда письма отправляют в html, проверка так же может осуществляться уже после формирования body (это всего одна проверка, а не множество как у вас), так же если вы используете какую-то библиотеку для отправки писем то там может быть уже стоит ограничение на ввод тэгов, ну и самое главное что мэйл сервисы очень серьезно фильтрую письма там обычные ссылки порой зарезают, а вы про JS )) если говорить про почтовые программы то тут я не слишком силен но думаю что как минимум JS они выполнять не станут. 

  2. Ну для $_POST['name'] тоже надо проверять наличие (isset). Но главный вопрос зачем вам addslashes и trim что вы будете далее делать с данными? 

     

    Просто если  вы отправляете письмом то абсолютно не важно есть там спец символы или лишние пробелы поскольку два пробела и более в письме будут выглядеть как один только если это не неразрывный пробел  , если вы заносите данные в mysql то наверняка у вас pdo или mysqli и там как бы по умолчанию есть инструменты для экранизации всякого добра которое может привести к SQL-инжекции. Так что скорее всего вы просто лишние действия делаете...

  3. Сегодня у меня технический вопрос ))))

     

    Насчет debian, а конкретнее выставления правд доступа на папки и файлы по умолчанию.

    Корень моей проблемы лежит в git у нас несколько человек работают с одним проектом у каждого в /home/username/.profile стоит umask 022 и при пуше git создает объекты с правами на папку rwxr-xr-x тут не хватает прав на запись группы, а файл создается r--r--r-- группа и овнер прописываются именно user'a 

     

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

     

    P.S. раздела подходящего на форуме я не нашел(а люди знающие есть наверняка), прошу модераторов перенести куда-то тему или оставить ее тут.

     

     

     

    Решение:

    Как оказалось umask не причем достаточно было в конфиги ядра репозитария (файл config [core]) добавить параметр sharedRepository = 0660

  4. Я кстати пока ждала ответа, так и сделала, раз в одну строку не получалось) 

    $mailTopic = $site_name." - заявка от: ".$name;$mailTopic .= (isset($phone) && !empty($phone) ) ? " тел.: ".$phone :" email.: ".$email;

    Значит от розг нас по сути отделяет только ентер?

     

    можно и в одну

    $mailTopic = $site_name.' - заявка от: '.$name.((isset($phone) && !empty($phone) ) ? ' тел.: '.$phone : ' email.: '.$email);

    Но нужно ли? И еще вот эта запись isset($phone) && !empty($phone) это капец ))))) Просто потому что из формы вы данные получаете через глобальные переменные скорее всего $_GET $_POST (есть и другие есть что), далее чтобы в переменную $phone присвоить $_GET['phone'] нужно как минимум проверить есть ли он именно тем самым isset и получается что $phone уже точно есть! Обычно это делается так :

     

    $phone = isset($_GET['phone']) ? $_GET['phone'] : null;$mailTopic = $site_name.' - заявка от: '.$name;// тут важно только одно что телефон у нас не может быть равен 0 или 000000 и т.п. если может быть 0 то условие должно быть другим$mailTopic .= $phone ? ' тел.: '.$phone : ' email.: '.$email;

    Либо вот так:

     

    $mailTopic = $site_name.' - заявка от: '.$name;// тут важно только одно что телефон у нас не может быть равен 0 или 000000 и т.п. если может быть 0 то условие должно быть другим$mailTopic .= (isset($_GET['phone']) && $_GET['phone']) ? ' тел.: '.$_GET['phone'] : ' email.: '.$email;
     

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

     

     

    посуте это тоже условие if () else однако более простая запись. И оно вполне читабельное, однако возможно это дело привычки...

  5. Ооо, спасибо большое за такие интересные советы.

    $phone ? " phone.: {$phone}" : " email.: {$email}

    А если phone=''; - то что находится внутри с точки зрения проверки условия? И не может ли какой-то спецсимвол или какое-то другое содержимое переменной $phone дать значение false ложное? 

     

    phone будет true если он не содержит null || false || пустой строки || 0 || array() (пустого массива) и дальше по аналогии, в привычном понимание если он не равен нулю/пустоте.

    Простите меня конечно, но я бы за такие тернарные операторы бил розгами до потери пульса.

     

     

    Считаете код не читаемым? Какой вариант вы бы предложили? Просто я склонен к тому что код должен быть читаемым но плодить излишние переменные тоже не рационально. Например все конкатенируемые элементы можно разбить построчно и добавить комментариев если код трудный, однако только в том случае если с этим кодом не предстоит частая работа.

    echo (int)((boolean)"\n"),'';echo (int)((boolean)"\x0A"),'     // *nix перенос строки';

     

    Забавная запись, а почему же пропустили \r и \r\n или скажем PHP_EOL ? ^_^

  6. А вот я обычно беру в скобки всю вычислительную часть и раз вы используете двойные кавычке так и пишите переменные сразу в строке зачем заставлять PHP искать подстановки в строке когда вы делаете конкатенацию или вы просто не различаете двойные и одинарные кавычки?

    $mailTopic = "{$site_name} - kuk-u: {$name}".(!empty($phone) ? " phone.: {$phone}" : " email.: {$email}");

    Фигурные скобки конечно не обязательны, это моя привычка связана она с тем, что в основном работаю с объектами и массивами и бывают случаи когда без скобок переменная просто не распознается.

     

    Так же я бы упростил конструкцию !empty($phone) достаточно в месте где определяется переменная или не определяется объявить $phone = null; и ваша строка будет выглядеть следующим образом:

    $mailTopic = "{$site_name} - kuk-u: {$name}".($phone ? " phone.: {$phone}" : " email.: {$email}");
    • Like 1
  7. Доброго всем времени суток, прошу помощи в написании правила. Есть сайт на котором надо закрыть доступ к папке (template) причем в папке купа под папок и где-то глубоко есть пара php файлов к которым доступ закрывать нельзя. И вот я в толк не возьму как это придумать. 

     

    Логично было бы написать регулярку типа

    Deny from all'|\/template\/.*php|' allow

    Или можно прямо в папку и закинуть файл htaccess и там прописать запрет на все кроме php но чето я в толк не возьму не как, как это сделать...

  8. А вам точно нужно так усложнять headers????? Это конечно не ключевая ошибка скорее всего ваша проблема в convert_cyr_string и отсутствии его в "Subject: ".$subject."\r\n"; Чтобы точно сказать надо посмотреть что вы там с кодировкой накрутили.

     

    Нельзя все как то проще сделать?

    <?php// multiple recipients$to  = 'aidan@example.com';// subject$subject = 'Birthday Reminders for August';// message$message = '<html><head><title>text</title></head><body>text</body></html>';// To send HTML mail, the Content-type header must be set$headers  = 'MIME-Version: 1.0' . "\r\n";$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";// Additional headers$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";// Mail itmail($to, $subject, $message, $headers);?>
  9. оба варианта не подходят первый ошибочно в результаты записывает 881 в котором вообще 2 нету второй упускает секцию dsnkjds<df2dsjkds и 881 тоже записывает...

  10. если строка 

    <b>123</b><b>332</b><b>624</b><b>724</b><b>881</b><b>dsnkjds<df2dsjkds</b>

    из нее надо получить данные между тегами где 2 не стоит рядом с тегом, свои идеи зашли в тупик может кто-то подскажет как правильно составить регулярку?

     

    Я пробовал так:

    |<b>.+2.+</b>|U|<b>[^<]+2[^<]+</b>|U

    Однако в ответах были ошибки "332</b><b>624" и во втором случае на попало "dsnkjds<df2dsjkds" а оно полностью удовлетворяет условиям

     

  11. Испытываю ряд трудностей при просмотре сайта с apple устройств, а именно они отказываются воспринимать Tahoma и заменяют его шрифтом с засечками. Какие есть стандартные методы борьбы с яблоком?

     

    Меня бы в принципе устроила даже отдельная загрузка шрифта для этих устройств через @font-face с указанием @media я просто не нашел как именно нужно выделять их.

  12. Как то у вас все не логично ))) Смотрите:

     

    1) чтобы прибавить к строке строку используется канкатинация вот пара премеров:

    echo 'index.php?',$_SERVER['QUERY_STRING'];$_SERVER['QUERY_STRING'] = 'index.php?'.$_SERVER['QUERY_STRING'];echo $_SERVER['QUERY_STRING'];

    2) далее насчет инпутов зачем вы впихиваете форму в переменную неужели это необходимо? В общем вот вариант с впихиванием формы:

    $listsort2="	<form name='form' action='' method='get'>	<select id='usrstrcol' onchange='this.form.submit()' name='usrstrcol'>	<option value=''".$c0." disabled='disabled' style='display:none;' />25	<option value='10'".$c10." />10	<option value='25'".$c11." />25	<option value='50'".$c12." />50	<option value='100'".$c13." />100";if(isset($_GET['cid']) && $_GET['cid']) $listsort2 .= "<input type='hidden' name='cid' value='{$_GET['cid']}'>";if(isset($_GET['id']) && $_GET['id']) $listsort2 .= "<input type='hidden' name='id' value='{$_GET['id']}'>";if(isset($_GET['pid']) && $_GET['pid']) $listsort2 .= "<input type='hidden' name='pid' value='{$_GET['pid']}'>";$listsort2 .= $sortp2.$sortsrt2.'</select></form>';

    но лучше было бы просто сделать вставки прямо в коде...

  13. Ну я лично и не сомневался, я лишь подсказывал вам где все таки нужно искать ваши SQL данные.

     

    Смотрите данные выводятся очень просто:

     

    1) Если у нас переменная 

    $var = 1;

     то вывод крайне прост:

    echo $var;

    2) Если у нас массив:

    $massiv = array(1 => 1, 2 => 'test', 10 => 'пример'); 

    То вывести мы можем как и весь массив, так и отдельный элемент

    foreach($massiv as $key => $val){  echo "{$key} => {$val}";}echo $massiv[2];

    3) Есть еще классы именно классом у вас $row и является!

    $obj = new stdClass;$obj->test = 'abc';$obj->other = 6.2;

    А теперь выведем информацию

    echo $obj->test;echo $obj->other;

    Настоятельно советую почитать про переменные, массивы, объекты, а также циклы  и условия.

     

    P.S. У вас в последнем вашем примере как минимум 4 ошибки ))))

    • Like 1
  14. 1) QUERY_STRING содержит лишь ту часть запроса которая отвечает за GET параметры, там знака вопроса и быть не может. Что вам мешает добавить перед $_SERVER['QUERY_STRING']  строку 'index.php?'?

    2) Вырезать нужно чтобы не было дублей банально на второй раз уже у вас параметр usrstrcolм будет с дублем, так что либо разбирайтесь с preg_replace(заодно и бесценные знания по регуляркам получите) либо используйте вариант со скрытыми инпутами он кстати наиболее желателен если у вас ограниченное количество передаваемых в GET переменных. 

  15. 3.Я выкупиаю,что траблы с переменными(

    Вот только как ихвывести с sql???

     

    Хорошо, тогда позвольте поинтересоваться у вас в коде написано $row = $STH->fetch() (это же вы написали?) что как вы думаете выполняет этот кусок кода?

     

    Чтобы хоть немного разобраться попробуйте в цикле написать:

    print_r($row);

    И еще, щас только посмотрел что вы в цикл запихнули <table border="1"но в том же цикле таблицу вы незакрываети  это повлечет разрыв верстки...

    • Like 1
  16. Для начала помогите тут,дальше потом.

    Спасибо...

     

    Что интересно этим вы хотели сказать? Вас вроде не кто не просил выкладывать ошибки )))

     

    Далее судя по предоставленному вами коду и скрину, видно что код вы нам предоставили не исходных. В котором есть ряд ошибок я бы даже сказал что других.

    Теперь касательно ошибки которую вы заскринили, в переводе с английского "Undefined variable: serial in //// on line 21" будет "Не найдена переменная: serial в //// на строке 21", собственно в этом у вас и ошибка, вы на 21 строке вызываете переменную, которую до этого не объявляли. Хочу заметить что для перевода ошибки не нужно владеть глубокими познаниями в языке + на дворе 21 век и есть бесплатные онлайн переводчики. Так что учитесь умение понимать ошибки которые вам пишут это вообще 90% того чтобы их исправить(и более не допускать).

    • Like 1
  17. Чтобы перебрасывать все GET параметры есть ряд способов, но сводятся они к 2 вариантам:

    1) добавить в форму скрытые input при отправки они так же как и ваш селект будут передаваться выглядит это так:

    <input type="hidden" name="cid" value="<?php echo isset($_GET['cid']) ? $_GET['cid'] : ''; ?>"><input type="hidden" name="pid" value="<?php echo isset($_GET['pid']) ? $_GET['pid'] : ''; ?>"><input type="hidden" name="id" value="<?php echo isset($_GET['id']) ? $_GET['id'] : ''; ?>">

    2) Прописать нужные параметры в атрибуте action у тэгп form, тут можно либо в ручную перечислить все параметры, либо воспользоваться суперглабальным масивом SERVER где уже есть ваши GET параметры но из него надо будет регуляркой вырезать usrstrcol

  18. Если я правильно понял вам нужно чтобы после выбор, страница обновлялась выводилась надпись и в селекте было выбрано переданное число? Если так то вот пример:

    <?phpif (isset($_GET['usrstrcol'])){	echo ('isset usrstrcol <br>'.$_GET['usrstrcol']);} ?><html><head>	<title>Число</title></head><body><form name="form" action="" method="get">	<select id="usrstrcol" onchange="this.form.submit()" name='usrstrcol'>		<option value="" <?php if (!isset($_GET['usrstrcol'])) : ?>selected="selected"<?php endif; ?> disabled="disabled">Select combo</option>		<option value="1" <?php if (isset($_GET['usrstrcol']) && $_GET['usrstrcol'] == 1) : ?>selected="selected"<?php endif; ?>>11</option>		<option value="2" <?php if (isset($_GET['usrstrcol']) && $_GET['usrstrcol'] == 2) : ?>selected="selected"<?php endif; ?>>22</option>		<option value="3" <?php if (isset($_GET['usrstrcol']) && $_GET['usrstrcol'] == 3) : ?>selected="selected"<?php endif; ?>>33</option>	</select></form></body></html>
  19. 1) Вам нужно проверить установлено ли у вас в PHP расширение PDO.

    2) Попробуйте отловить ошибку спомощью try catch

    try {    $db = new PDO('mysql:host=localhost;dbname=qqq', 'root', '');    $data = $db->query('SELECT `value` FROM `number` LIMIT 1')->fetch();}catch(PDOException $e) {    echo $e->getMessage();}

    3) А к вашей ошибке, это не относится но, Вы по всей видимости просто скопировали часть кода не вдаваясь, так вот даже поправив ошибку скрипт работать не будет потому что вы получаете данные в переменную $data, а ниже обращаетесь к $number


    Начинайте читать документацию, все равно далеко без нее вы не уедите.

  20. Воу воу воу,парни,полегче)

     

    Я так понял,что сейчас все юзают новые технологии под названием "PDO"??!! 

    Если да,подскажите где кроме http://us1.php.net/manual/ru/book.pdo.php можно в нём разобраться,желательно на примерах!

     

    http://labdes.ru/php-pdo-mysql-examples

    Ваш скрипт будет выглядеть примерно так:

     

    <?php$db = new PDO('mysql:host=localhost;dbname=qqq', 'root', 'root');$data = $db->query('SELECT `value` FROM `number` LIMIT 1')->fetch();echo $data['value'];
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy