-
Posts
978 -
Joined
-
Last visited
-
Days Won
3
Content Type
Profiles
Forums
Calendar
Store
Everything posted by stars
-
По большому счету да если опасаетесь ссылок надо фильтровать. В частности далеко не всегда письма отправляют в html, проверка так же может осуществляться уже после формирования body (это всего одна проверка, а не множество как у вас), так же если вы используете какую-то библиотеку для отправки писем то там может быть уже стоит ограничение на ввод тэгов, ну и самое главное что мэйл сервисы очень серьезно фильтрую письма там обычные ссылки порой зарезают, а вы про JS )) если говорить про почтовые программы то тут я не слишком силен но думаю что как минимум JS они выполнять не станут.
-
Ну для $_POST['name'] тоже надо проверять наличие (isset). Но главный вопрос зачем вам addslashes и trim что вы будете далее делать с данными? Просто если вы отправляете письмом то абсолютно не важно есть там спец символы или лишние пробелы поскольку два пробела и более в письме будут выглядеть как один только если это не неразрывный пробел , если вы заносите данные в mysql то наверняка у вас pdo или mysqli и там как бы по умолчанию есть инструменты для экранизации всякого добра которое может привести к SQL-инжекции. Так что скорее всего вы просто лишние действия делаете...
-
Сегодня у меня технический вопрос )))) Насчет debian, а конкретнее выставления правд доступа на папки и файлы по умолчанию. Корень моей проблемы лежит в git у нас несколько человек работают с одним проектом у каждого в /home/username/.profile стоит umask 022 и при пуше git создает объекты с правами на папку rwxr-xr-x тут не хватает прав на запись группы, а файл создается r--r--r-- группа и овнер прописываются именно user'a Побывал найти руководство где вообще задаются umask, пробовал прописывать другие значения, перезагружал сервер но так и не получил нужные мне права, а только запутался, прошу собственно помощи. P.S. раздела подходящего на форуме я не нашел(а люди знающие есть наверняка), прошу модераторов перенести куда-то тему или оставить ее тут. Решение: Как оказалось umask не причем достаточно было в конфиги ядра репозитария (файл config [core]) добавить параметр sharedRepository = 0660
-
можно и в одну $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 однако более простая запись. И оно вполне читабельное, однако возможно это дело привычки...
-
phone будет true если он не содержит null || false || пустой строки || 0 || array() (пустого массива) и дальше по аналогии, в привычном понимание если он не равен нулю/пустоте. Считаете код не читаемым? Какой вариант вы бы предложили? Просто я склонен к тому что код должен быть читаемым но плодить излишние переменные тоже не рационально. Например все конкатенируемые элементы можно разбить построчно и добавить комментариев если код трудный, однако только в том случае если с этим кодом не предстоит частая работа. Забавная запись, а почему же пропустили \r и \r\n или скажем PHP_EOL ?
-
А вот я обычно беру в скобки всю вычислительную часть и раз вы используете двойные кавычке так и пишите переменные сразу в строке зачем заставлять 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}");
-
Какой хоть язык программирования интересует? Скажем в PHP есть функция mail, мануалы отлично описывают ее.
-
$a = Array('n1' => 1, 'n2' => 2, 'n3' => 3); sort($a); print_r($a);
-
Доброго всем времени суток, прошу помощи в написании правила. Есть сайт на котором надо закрыть доступ к папке (template) причем в папке купа под папок и где-то глубоко есть пара php файлов к которым доступ закрывать нельзя. И вот я в толк не возьму как это придумать. Логично было бы написать регулярку типа Deny from all'|\/template\/.*php|' allowИли можно прямо в папку и закинуть файл htaccess и там прописать запрет на все кроме php но чето я в толк не возьму не как, как это сделать...
-
А вам точно нужно так усложнять 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);?>
-
А вы пишите без ошибок ругаться не будет ))) return preg_replace('|<img[^><]*src="file:///C:/[^><]+"[^><]*\/?>|U', "", $string);
-
Вот так вроде работает: |<b>(??!</b>).)+2(??!</b>).)+</b>|
-
оба варианта не подходят первый ошибочно в результаты записывает 881 в котором вообще 2 нету второй упускает секцию dsnkjds<df2dsjkds и 881 тоже записывает...
-
если строка <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" а оно полностью удовлетворяет условиям
-
Испытываю ряд трудностей при просмотре сайта с apple устройств, а именно они отказываются воспринимать Tahoma и заменяют его шрифтом с засечками. Какие есть стандартные методы борьбы с яблоком? Меня бы в принципе устроила даже отдельная загрузка шрифта для этих устройств через @font-face с указанием @media я просто не нашел как именно нужно выделять их.
-
Как то у вас все не логично ))) Смотрите: 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>';но лучше было бы просто сделать вставки прямо в коде...
- 10 replies
-
Ну я лично и не сомневался, я лишь подсказывал вам где все таки нужно искать ваши 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 ошибки ))))
-
1) QUERY_STRING содержит лишь ту часть запроса которая отвечает за GET параметры, там знака вопроса и быть не может. Что вам мешает добавить перед $_SERVER['QUERY_STRING'] строку 'index.php?'? 2) Вырезать нужно чтобы не было дублей банально на второй раз уже у вас параметр usrstrcolм будет с дублем, так что либо разбирайтесь с preg_replace(заодно и бесценные знания по регуляркам получите) либо используйте вариант со скрытыми инпутами он кстати наиболее желателен если у вас ограниченное количество передаваемых в GET переменных.
- 10 replies
-
Хорошо, тогда позвольте поинтересоваться у вас в коде написано $row = $STH->fetch() (это же вы написали?) что как вы думаете выполняет этот кусок кода? Чтобы хоть немного разобраться попробуйте в цикле написать: print_r($row);И еще, щас только посмотрел что вы в цикл запихнули <table border="1"> но в том же цикле таблицу вы незакрываети это повлечет разрыв верстки...
-
Что интересно этим вы хотели сказать? Вас вроде не кто не просил выкладывать ошибки ))) Далее судя по предоставленному вами коду и скрину, видно что код вы нам предоставили не исходных. В котором есть ряд ошибок я бы даже сказал что других. Теперь касательно ошибки которую вы заскринили, в переводе с английского "Undefined variable: serial in //// on line 21" будет "Не найдена переменная: serial в //// на строке 21", собственно в этом у вас и ошибка, вы на 21 строке вызываете переменную, которую до этого не объявляли. Хочу заметить что для перевода ошибки не нужно владеть глубокими познаниями в языке + на дворе 21 век и есть бесплатные онлайн переводчики. Так что учитесь умение понимать ошибки которые вам пишут это вообще 90% того чтобы их исправить(и более не допускать).
-
Чтобы перебрасывать все 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
- 10 replies
-
Если я правильно понял вам нужно чтобы после выбор, страница обновлялась выводилась надпись и в селекте было выбрано переданное число? Если так то вот пример: <?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>
- 10 replies
-
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 Начинайте читать документацию, все равно далеко без нее вы не уедите.
-
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'];