-
Posts
978 -
Joined
-
Last visited
-
Days Won
3
Content Type
Profiles
Forums
Calendar
Store
Posts posted by stars
-
-
Ну для $_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;$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 однако более простая запись. И оно вполне читабельное, однако возможно это дело привычки...
-
Ооо, спасибо большое за такие интересные советы.
$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 ?
-
А вот я обычно беру в скобки всю вычислительную часть и раз вы используете двойные кавычке так и пишите переменные сразу в строке зачем заставлять 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}");
- 1
-
Какой хоть язык программирования интересует? Скажем в 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);
- 1
-
-
-
если строка
<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>';
но лучше было бы просто сделать вставки прямо в коде...
-
Ну я лично и не сомневался, я лишь подсказывал вам где все таки нужно искать ваши 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
-
1) QUERY_STRING содержит лишь ту часть запроса которая отвечает за GET параметры, там знака вопроса и быть не может. Что вам мешает добавить перед $_SERVER['QUERY_STRING'] строку 'index.php?'?
2) Вырезать нужно чтобы не было дублей банально на второй раз уже у вас параметр usrstrcolм будет с дублем, так что либо разбирайтесь с preg_replace(заодно и бесценные знания по регуляркам получите) либо используйте вариант со скрытыми инпутами он кстати наиболее желателен если у вас ограниченное количество передаваемых в GET переменных.
-
3.Я выкупиаю,что траблы с переменными(
Вот только как ихвывести с sql???
Хорошо, тогда позвольте поинтересоваться у вас в коде написано $row = $STH->fetch() (это же вы написали?) что как вы думаете выполняет этот кусок кода?
Чтобы хоть немного разобраться попробуйте в цикле написать:
print_r($row);
И еще, щас только посмотрел что вы в цикл запихнули <table border="1"> но в том же цикле таблицу вы незакрываети это повлечет разрыв верстки...
- 1
-
Для начала помогите тут,дальше потом.
Спасибо...
Что интересно этим вы хотели сказать? Вас вроде не кто не просил выкладывать ошибки )))
Далее судя по предоставленному вами коду и скрину, видно что код вы нам предоставили не исходных. В котором есть ряд ошибок я бы даже сказал что других.
Теперь касательно ошибки которую вы заскринили, в переводе с английского "Undefined variable: serial in //// on line 21" будет "Не найдена переменная: serial в //// на строке 21", собственно в этом у вас и ошибка, вы на 21 строке вызываете переменную, которую до этого не объявляли. Хочу заметить что для перевода ошибки не нужно владеть глубокими познаниями в языке + на дворе 21 век и есть бесплатные онлайн переводчики. Так что учитесь умение понимать ошибки которые вам пишут это вообще 90% того чтобы их исправить(и более не допускать).
- 1
-
Чтобы перебрасывать все 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
-
Если я правильно понял вам нужно чтобы после выбор, страница обновлялась выводилась надпись и в селекте было выбрано переданное число? Если так то вот пример:
<?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>
-
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
Начинайте читать документацию, все равно далеко без нее вы не уедите.
-
Воу воу воу,парни,полегче)
Я так понял,что сейчас все юзают новые технологии под названием "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'];
Проблема с тернарным оператором
in PHP
Posted
По большому счету да если опасаетесь ссылок надо фильтровать.
В частности далеко не всегда письма отправляют в html, проверка так же может осуществляться уже после формирования body (это всего одна проверка, а не множество как у вас), так же если вы используете какую-то библиотеку для отправки писем то там может быть уже стоит ограничение на ввод тэгов, ну и самое главное что мэйл сервисы очень серьезно фильтрую письма там обычные ссылки порой зарезают, а вы про JS )) если говорить про почтовые программы то тут я не слишком силен но думаю что как минимум JS они выполнять не станут.