PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): [1] 2 »

> Найдено сообщений: 18
ghjy06 Отправлено: 31 Мая, 2013 - 19:58:20 • Тема: Я только учусь. Помогите пожалуйста допилить код • Форум: Вопросы новичков

Ответов: 5
Просмотров: 314
DelphinPRO пишет:
а если просто взять и подумать? не пробовали?

PHP:
скопировать код в буфер обмена
  1. $name = $fields['author'].'Гость';
  2. $result2 = mysql_query ("INSERT INTO comments (post,author,text,date,mail) VALUES ('$fields[id]','$name','$fields[text]','$date','$fields[mail]')",$db);


Я давно уже не занимался PHP, уделил больше времени верстке. А сейчас возникла необходимость в решении поставленных мною задач. Я понял, что нужно повторять и повторять с нуля, чтобы наверстать упущенную сноровку и вспомнить азы. Поэтому собственно и обратился на форум, т.к. на форуме, много профессионалов, для которых эти задачи сущий пустяк ("пяти минут дело"), которые в наше то время на мое удивление очень отзывчивые, наверное по тому, что сами когда-то начинали или возможно просто по доброте души. В любом случае лично вы на форуме многим помогли, за что Вам огромный респект.
(Добавление)
DelphinPRO пишет:
а если просто взять и подумать? не пробовали?

PHP:
скопировать код в буфер обмена
  1. $name = $fields['author'].'Гость';
  2. $result2 = mysql_query ("INSERT INTO comments (post,author,text,date,mail) VALUES ('$fields[id]','$name','$fields[text]','$date','$fields[mail]')",$db);

А остальные задачи, правда можно решить при помощи preg_match()?
- Подскажите, где об этом можно почитать.
ghjy06 Отправлено: 31 Мая, 2013 - 16:10:59 • Тема: Я только учусь. Помогите пожалуйста допилить код • Форум: Вопросы новичков

Ответов: 5
Просмотров: 314
Хм..., а разве можно так писать:
PHP:
скопировать код в буфер обмена
  1. $result2 = mysql_query ("INSERT INTO comments (post,author,text,date,mail) VALUES ('$fields[id]','$fields[author]'.'Гость','$fields[text]','$date','$fields[mail]')",$db);
  2.  

(Добавление)
ghjy06 пишет:
Хм..., а разве можно так писать:
PHP:
скопировать код в буфер обмена
  1. $result2 = mysql_query ("INSERT INTO comments (post,author,text,date,mail) VALUES ('$fields[id]','$fields[author]'.'Гость','$fields[text]','$date','$fields[mail]')",$db);
  2.  


Желательно реальный пример кода привести.
ghjy06 Отправлено: 31 Мая, 2013 - 15:31:12 • Тема: Я только учусь. Помогите пожалуйста допилить код • Форум: Вопросы новичков

Ответов: 5
Просмотров: 314
Существует форма, отправляющая данные, которые заносятся в массив $fields, они обрабатываются и добавляется в базу данных:
Стоят такие задачи:"Проделать тоже самое, только:1. чтобы автоматом к значению "author" добавлялось слово Гость и заносилось в базу не просто "Сергей", а "Сергей Гость"; 2. Если в поле "e-mail" формы указаны какие-то значения, которые не могут содержаться в e-mail adrese вывести (/*№#!?%$^~&): "Вы ввели недопустимый e-mail, вернитесь на предыдущую страницу и напишите настоящий e-mail и кнопка возврата на предыдущую страницу; 3. Если в поле e-mail нет знака "@" вывести: "Вы ввели недопустимый e-mail, вернитесь на предыдущую страницу и напишите настоящий e-mail и кнопка возврата на предыдущую страницу; 4. Если в поле author введены недопустимые значения например "admin","administrator", "Автор", "author", (/*№#!?%$^~&), или, если введены цифры или имя меньше 2-х букв вывести: "Вы ввели недопустимое имя, вернитесь на предыдущую страницу и напишите настоящее имя и кнопка возврата на предыдущую страницу;
Можно еще на свое усмотрение посоветовать что-то добавить в целях безопасности, буду признателен.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $fields = array(
  3.                                 "author" => "",
  4.                                 "mail" => "",
  5.                                 "text" => "",
  6.                                 "pr" => "",
  7.                                 "sub_com" => "",
  8.                                 "id"=> ""
  9.                                 );
  10. foreach (array_keys($fields) as $k) {
  11.   if (isset($_POST[$k])) {
  12.     $value = trim($_POST[$k]);
  13.     if (!$value) {
  14.       continue;
  15.     }
  16.         if ($fields[author] == "Ваше имя" or $fields[mail] == "Ваш e-mail"){
  17.         exit ("<div class='com'>Вы ввели не всю информацию, вернитесь назад и заполните все поля.</div> <br> <input id='send' type='button' value='Вернуться назад' onclick='window.history.go(-1)'>");
  18.         }
  19.         }
  20.     $fields[$k] = htmlspecialchars($value);
  21.   }
  22. $result = mysql_query ("SELECT sum FROM comments_settings",$db);
  23. $myrow = mysql_fetch_array($result);
  24.  
  25. if ($pr == $myrow["sum"])
  26. {
  27. $date = date("Y-m-d");
  28. $result2 = mysql_query ("INSERT INTO comments (post,author,text,date,mail) VALUES ('$fields[id]','$fields[author]','$fields[text]','$date','$fields[mail]')",$db);
  29. $address = "admin@site.com";
  30. $subject = "Новый комментарий на блоге";
  31. $result3 = mysql_query ("SELECT title FROM data WHERE id='$id'",$db);
  32. $myrow3 = mysql_fetch_array ($result3);
  33. $post_title = $myrow3["title"];
  34. $message = "Появился комментарий к посту - ".$post_title."\nКомментарий добавил(а): ".$author."\nТекст комментария: ".$text."\nСсылка на заметку: http://site.com/post.php?id=".$id."";
  35. mail($address,$subject,$message,"Content-type:text/plain; Charset=utf-8\r\n");
  36.  
  37. echo "<html><head>
  38. <meta http-equiv='Refresh' content='0; URL=http://site.com/post.php?id=$id'>
  39. </head></html>";
  40. exit();
  41. }
  42. else
  43. {
  44. exit ("<div class='com'>Вы ввели неверную сумму цифр с картинки на предыдущей странице.</div> <br> <input id='send' type='button' value='Вернуться назад' onclick='window.history.go(-1)'>");
  45. }
  46. ?>

(Добавление)
Все 4 задания это было бы идеально, но если смотреть реально на вещи, то самым актуальным является задача №1.
ghjy06 Отправлено: 01 Марта, 2013 - 15:47:55 • Тема: Подскажите по .htaccess и ЧПУ • Форум: Вопросы новичков

Ответов: 18
Просмотров: 883
NEMOGY пишет:
ghjy06 пишет:
Это реально сделать?

Реально. Вы не понимаете просто самой сути как оно все работает... почитайте здесь

Прочитал. Эффекта нет. Мне наверное нужно на пальцах объяснить, что куда вставлять и что делать... Огорчение
ghjy06 Отправлено: 28 Февраля, 2013 - 16:29:24 • Тема: Подскажите по .htaccess и ЧПУ • Форум: Вопросы новичков

Ответов: 18
Просмотров: 883
Это реально сделать?
ghjy06 Отправлено: 28 Февраля, 2013 - 16:23:37 • Тема: Как побороть данную ошибку При валидации? • Форум: Вопросы новичков

Ответов: 9
Просмотров: 729
LShark пишет:
По моему, сэр как бы не в курсях, что можно заслэшить кавычки/апостроф, чтобы не было проблем в пых-коде...

PHP:
скопировать код в буфер обмена
  1. echo "А не пойти ли почитать \"Учебник\"?";


Я так и сделал! Подмигивание
ghjy06 Отправлено: 28 Февраля, 2013 - 04:59:43 • Тема: Подскажите по .htaccess и ЧПУ • Форум: Вопросы новичков

Ответов: 18
Просмотров: 883

У меня проблема. Вставляю код, как вы описали и ничего не происходит, как было так и осталось.
Описываю структуру:
site.com/index.php - Главная.
site.com/cats.php - отвечает за вывод категорий. // Например site.com/cats.php?cat=11 - авто, site.com/cats.php?cat=21 - девушки; site.com/cats.php?cat=111 - футбол.
site.com/post.php - отвечает за вывод заметки полностью.// Например site.com/post.php?id=11 - BMW, site.com/post.php?id=21 - Дженни Вейд; site.com/post.php?id=111 - Шевченко.
Еще есть три файла , author.php - об авторе, biz.php - предложение, guest.php - гостевая
Нужно чтобы эти файлы тоже отображались с ЧПУ.

Я прописываю в .htaccess:

PHP:
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteBase /
  3. RewriteCond %{REQUEST_FILENAME} !-d
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteRule ^(.*) index.php?q=$1 [L]
  6.  

и копирую в index.php:

PHP:
скопировать код в буфер обмена
  1. // вот тут будут наши "части"
  2. $params = array();
  3.  
  4. // получили строку
  5. $query_string = str_replace("q=","",trim($_SERVER['QUERY_STRING']));
  6.  
  7. // на всякий случай декодируем
  8. $query_string = urldecode($query_string);
  9.  
  10. // разбиваем на массив
  11. $query_params = explode("/",$query_string);
  12.  
  13. // и проверяем
  14. // а вдруг в конец слеш не дописали?
  15. // да и почистим сразу от SQL-инъекций
  16. foreach ($query_params as $query_param)
  17.   if ($query_param != "")
  18.     $params[] = mysql_real_escape_string($query_param);
  19.  
  20. // посмотрим что получилось
  21. var_dump($params);


сохраняю, обновляю и ничего.
Попробовал код скопировать в post.php - ничего, в cats.php - ничего.

Подскажите что не так?
ghjy06 Отправлено: 28 Февраля, 2013 - 01:27:19 • Тема: Как побороть данную ошибку При валидации? • Форум: Вопросы новичков

Ответов: 9
Просмотров: 729
NEMOGY пишет:
Здесь подробно описано как должна быть оформлена ссылка :http://htmlbook[dot]ru/html/a
Обратите внимание на:
href="URL"


Я знаю, что нужно брать значение атрибута href в кавычки, трудность заключалась в том, что если я ставил кавычки после знака = и перед >, то получал еще больше ошибок. Но проблему решил, действительно проблема была в самих кавычках.
Спасибо большое за внимание и помощь всем, кто принимал участие в данной теме.[u][/u]
ghjy06 Отправлено: 27 Февраля, 2013 - 09:28:45 • Тема: Как побороть данную ошибку При валидации? • Форум: Вопросы новичков

Ответов: 9
Просмотров: 729
Мелкий пишет:
Какая разница, что это?
Валидация требует заключение атрибута в кавычки.


Название темы: "Как побороть...?".
ghjy06 Отправлено: 27 Февраля, 2013 - 09:10:54 • Тема: Как побороть данную ошибку При валидации? • Форум: Вопросы новичков

Ответов: 9
Просмотров: 729
OrmaJever пишет:
вы не пробовали вобще значения атрибутов брать в кавычки как это сказано во всех стандартах ? Однако

Это постраничная навигация, брать в кавычки при таком варианте кода претит.
if ($page != 1) $pervpage = '<a href=http://site.com/site.com.php'.'?page=1>Первая</a> | <a href=http://site.com/site.com.php'.'?page='. ($page - 1) .'>Предыдущая</a> | ';
ghjy06 Отправлено: 26 Февраля, 2013 - 22:40:26 • Тема: Как побороть данную ошибку При валидации? • Форум: Вопросы новичков

Ответов: 9
Просмотров: 729
Line 117, Column 132: = in an unquoted attribute value. Probable causes: Attributes running together or a URL query string in an unquoted attribute value.
[url]…ttp://site.com/site.com.php?page=2>2</a> | <a href=http://site.com/ve…[/url]
ghjy06 Отправлено: 20 Февраля, 2013 - 16:15:54 • Тема: Не работает проверка заполнения формы • Форум: Вопросы новичков

Ответов: 10
Просмотров: 684
DeepVarvar пишет:
Дальше думайте сами.

Т.к. проблему я решил (почти так, как хотелось) благодаря DeepVarvar - думаю не лишним будет сообщить Вам об этом. Пользователям будет полезно знать решение.
Предложенный вами код я немного доработал под свои нужды.
Итак:
Форма:
PHP:
скопировать код в буфер обмена
  1. <?echo "<h3>Оставьте свое сообщение или отзыв:</h3>";
  2. //вставляем адрес изображения из базы данных
  3. $result4 = mysql_query ("SELECT img FROM comments_settings",$db);
  4. $myrow4 = mysql_fetch_array($result4);
  5.                                 ?>


CODE (html):
скопировать код в буфер обмена
  1. <form id="form" action="./gbooko.php" method="post" name="form_com">
  2.                 <textarea name="text" cols="55" rows="8" placeholder="Ваша запись"></textarea>
  3.                 <input id="input" name="author" onblur="if(this.value == '') {this.value = 'Ваше имя'; this.style.color = '#808080';}" onfocus="if(this.value == 'Ваше имя') {this.value = ''; this.style.color = '#000';}" type="text" value="Ваше имя" size="27" maxlength="30"><span class="required">*</span>
  4.  
  5.                 <input id="input" name="mail" onblur="if(this.value == '') {this.value = 'Ваш e-mail'; this.style.color = '#777';}" onfocus="if(this.value == 'Ваш e-mail') {this.value = ''; this.style.color = '#000';}" type="text" value="Ваш e-mail" size="27" maxlength="30"><span class="required">*</span>
  6.         <div>
  7.                 <img src="<?=$myrow4["img"]; ?>" width="80px" height="40px">
  8.         <div><strong>Введите в поле только ЧЕТНУЮ цифру с картинки:</strong></div>
  9.                 <input id='input' name="pr" type="text" size="8" maxlength="5"><span class="required">*</span>
  10.         </div>
  11.         <div>
  12.                 <input id ="send" name="sub_com" type="submit" value="Добавить запись">
  13.         </div>
  14. </form>
  15. //Выводим все комментарии на этой же странице чуть ниже формы
  16.  

CODE (html):
скопировать код в буфер обмена
  1. <h2>Все записи в гостевой:</h2>

PHP:
скопировать код в буфер обмена
  1. <?PHP                          
  2.  
  3. $result3 = mysql_query ("SELECT * FROM gbook ORDER BY id DESC",$db);
  4. if (mysql_num_rows($result3) > 0)
  5. {
  6. $myrow3 = mysql_fetch_array($result3);
  7.  
  8. do
  9. {
  10. printf ("<div id='com'><div id='name'>%s</div>
  11.                                                         <div id='data'>%s</div>
  12.                                                         <hr color='#808080' width='250px'>
  13.                                                         <div id='texts'>%s</div></div>",$myrow3["author"],
  14.                                                         $myrow3["date"],
  15.                                                         $myrow3["text"]);
  16.  
  17.  
  18. }
  19. while ($myrow3 = mysql_fetch_array($result3));
  20.  
  21.  
  22. }
  23.  
  24. ?>


В файл обработчик поместил следующий код:
PHP:
скопировать код в буфер обмена
  1. <?PHP include ("./bd/open_ses.php");
  2. $fields = array(
  3.                                 "author" => "",
  4.                                 "mail" => "",
  5.                                 "text" => "",
  6.                                 "pr" => "",
  7.                                 "sub_com" => ""
  8.                                 );
  9. foreach (array_keys($fields) as $k) {
  10.   if (isset($_POST[$k])) {
  11.     $value = trim($_POST[$k]);
  12.     if (!$value) {
  13.       continue;
  14.     }
  15.         if ($fields[author] == "Ваше имя" or $fields[mail] == "Ваш e-mail"){
  16.         exit ("<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля. <br> <input type='button' value='Вернуться назад' onclick='window.history.go(-1)'>");
  17.         }
  18.         }
  19.     $fields[$k] = htmlspecialchars($value);
  20.   }
  21.  
  22. var_dump($fields);
  23.  
  24. $result = mysql_query ("SELECT sum FROM comments_settings",$db);
  25. $myrow = mysql_fetch_array($result);
  26.  
  27. if ($fields[pr] == $myrow["sum"])
  28. {
  29. $date = date("Y-m-d");
  30. $result2 = mysql_query ("INSERT INTO gbook (author,text,date,mail) VALUES ('$fields[author]','$fields[text]','$date','$fields[mail]')",$db);
  31. $address = "admin@site.com";
  32. $subject = "Новая запись в гостевой";
  33.  
  34. $message = "Появилась запись в гостевой книге. \nЗапись добавил(а): ".$author."\nТекст записи: ".$text."\nСсылка на заметку: http://site.com/book.php";
  35. mail($address,$subject,$message,"Content-type:text/plain; Charset=utf-8\r\n");
  36.  
  37. echo "<html><head>
  38. <meta http-equiv='Refresh' content='0; URL=./book.php'>
  39. </head></html>";
  40. exit();
  41.  
  42. }
  43. else
  44. {
  45. exit ("<p>Вы ввели неверную сумму цифр с картинки на предыдущей странице. <br> <input type='button' value='Вернуться назад' onclick='window.history.go(-1)'>");
  46. }
  47. ?>
  48.  

Сложность возникла в том, что тег textarea не передает данные в ячейку массива "text" => "", т.к. у него нет атрибута value он постоянно пустой. Если ячейке массива задать значение "text" => "Ваша запись" и дополнить функцию if:
PHP:
скопировать код в буфер обмена
  1. if ($fields[author] == "Ваше имя" or $fields[mail] == "Ваш e-mail" or $fields[text] == "Ваша запись"){
  2.         exit ("<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля. <br> <input type='button' value='Вернуться назад' onclick='window.history.go(-1)'>");
,
при этом оставить пустым поле тега textarea и отправить форму, то сработает <input type='button' value='Вернуться назад' onclick='window.history.go(-1)'>. Но подлость в том, что это сработает даже если поле заполнено.

Поэтому выполнить проверку текстового поля на пустоту мне не удалось. В принципе данное поле по логике и так заполнят. Буду благодарен, если подскажите решение.
ghjy06 Отправлено: 14 Февраля, 2013 - 23:48:27 • Тема: Не работает проверка заполнения формы • Форум: Вопросы новичков

Ответов: 10
Просмотров: 684
DeepVarvar пишет:
Ахах, оценили значит харизму Закатив глазки
Прошу прощения, что так вот долго не отвечал - дела домашние.

Ладно, поехали.

Первый вариант:
Вы слишком не терпеливы. Показалось что считаете тут на форуме кто-то вам что-то должен.
Неа - ни капельки не должен. Кроме того, увидев тот код, который был сброшен...
Такое размещают на govnokod.ru чтобы поржать.
Ни у кого нет желания лезть в это "Г" и марать руки, что-то советовать.
Лучше отмолчаться, от греха подальше - себе дороже.
Потому, что после одного совета окажется что вы не знаете еще более глубоких азов, и придется откатываться с объяснениями в самый низ, в "каменный век"..
Решение проблемы?
Возможно (я надеюсь) тут: http://forum.php.su/topic.php?fo...33&topic=793

Второй вариант:
Ммммм... А давайте перепишу вам все с нуля и заново?

На самом деле есть еще и третий вариант:
А давайте вы попробуете сами переписать все заново.
А мы тут просто поможем процессу. Направим в нужное русло.
Помогать будет тот, кто свободен сейчас, и если ему будет настроение вам помогать.
А таких лудей тут полно.

Я внесу свою первую лепту.

Начнем с верстки.
Почему у вас в тегах идет описание стилей?
Почему на текстарии используется плейсхолдер, а на инпутах жаваскрипт?
Онфокус на скрипте? о_О Переносите в css
Почему в примере не открыт див перед формой?
Используйте один тип кавычек при описании атрибутов и свойств элементов DOM.
Почему у формы не абсолютный путь?
Почему идентификатор input, даже на форме не уникален?

Теперь скрипт.
stripslashes($author); это что? magic quotes включен?
Я сокращу только прием параметров. Дальше думайте сами.
PHP:
скопировать код в буфер обмена
  1. // там где пустые кавычки можно задать значения по умолчанию
  2. $fields = array("author" => "", "mail" => "", "text" => "", "pr" => "", "sub_com" => "");
  3. foreach (array_keys($fields) as $k) {
  4.   if (isset($_POST[$k])) {
  5.     $value = trim($_POST[$k]);
  6.     if (!$value) {
  7.       continue;
  8.     }
  9.     $fields[$k] = htmlspecialchars($value);
  10.   }
  11. }
  12. var_dump($fields);


По первому варианту:
Не могу Вам возразить, т.к. я только учусь. Вы наверное экстрасенс, данный код, это воспроизведение полученных знаний от человека, к которому Вы не равнодушны - "Ж. Попова" и видео курсов СПЕЦИАЛИСТ.

Я очень хочу учиться, но ограничен во времени, возможностях и источниках черпания знаний, поэтому стараюсь хоть чему-то научиться, но не все получается так, как хочется.

Второй вариант мне скорее не подойдет, т.к. думаю, что это будет дорогого стоить. Да и в конце концов я сам ничему не научусь.

Третий вариант скорее всего будет самым актуальным для меня. Я был бы чрезмерно благодарен, если бы мог учиться у профессионалов, разумеется, когда у Вас есть время и настроение.

Что касается верстки:
Почему у вас в тегах идет описание стилей?
Подозревая мысль, которую вы хотели осветить этим вопросом, что "Это признак нехорошего кода", отвечу: "Потому что так тоже можно, но я прислушался к Вам и перенес все в таблицу стилей). Закатив глазки

Почему на текстарии используется плейсхолдер, а на инпутах жаваскрипт?
Дело в том что блог, который я "написал", является кросбраузерным. Я хочу избежать надписей над импутами "Ведите имя:". Хочу расположить подобные надписи внутри импутов, чтобы при клике левой кнопкой мыши текст "Ведите имя:" исчезал. IE не поддерживает атрибут placeholder (html5). В данной форме, текстовая область одна, поэтому если в IE она не будет подписана, то и так понятно, что в нее нужно ввести текст комментария (минимизировал применении скриптов). На картинке, которую я прилагаю, макет работающей на локальном хосте формы.

Онфокус на скрипте? о_О Переносите в css
Если я не ошибаюсь вопрос риторический. Улыбка

Почему в примере не открыт див перед формой?
Открывающий div на месте. Я не аккуратно скопировал код для демонстрации.

Используйте один тип кавычек при описании атрибутов и свойств элементов DOM.
Учту.

Почему у формы не абсолютный путь?
Исправил.

Почему идентификатор input, даже на форме не уникален?
Потому что он содержит всего 1 правило:
#input {
margin:5px 15px 15px 0px;
}

По поводу кода, который вы предложили, считаю его очень профессиональным, но я провозился с ним вчера до 5 часов утра и так и не наладил. Данные отправляются, о чем свидетельствует var_dump, однако я пока не додумался, как обработать значения, ключей массива, если они пустые или в них содержится значение value чтобы браузер выводил:
"Вы ввели не всю информацию, вернитесь назад и заполните все поля.".
(Добавление)
DelphinPRO пишет:
Как видите, код намного читабельне, и удобнее для доработок в будущем.
В целом согласен, но для IE не подойдет.
ghjy06 Отправлено: 13 Февраля, 2013 - 23:24:54 • Тема: Подскажите по .htaccess и ЧПУ • Форум: Вопросы новичков

Ответов: 18
Просмотров: 883
Что нужно прописать в файле .htaccess, для того чтобы вот такая адресная строка:

http://domen[dot]com/post.php?post=1

отображалась:

http://domen[dot]com/post/1

а лучше чтобы вот так:

http://domen[dot]com/post1[dot]html

Спасибо!
(Отредактировано

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB