| BG Development · За реклама · За контакти |
Помощ Търсене Потребители Календар Правила |
| Здравей! ( Включване | Регистриране ) |
| Страници: (4) [1] 2 3 ... последна » ( Първото ново мнение ) | ![]() ![]() ![]() |
| Бай Аз |
Публикувано на: 02-02-2024, 14:03
|
||||
|
Име: Група: Потребител Ранг: Редовен член Мнения: 397 Регистриран на: 04.02.21 |
Здравейте! Искам да направя проста и семпла работеща контактна форма за сайт, която да съответства на стандартите! Но да е оптимална: нито прекалено сложна, с излишни неща, нито пък да липсва нещо, което е необходимо! Ще сложа за начало една, която работи и съм я ползвал, за да я преработим нея: (Няма да пиша подробни CSS стилове, само базови, и главно HTML и PHP код) Ето кода на първоначалната ми страница contacts.html
Ето и кода ми в php файла sendmail.php:
Идеята ми е да бъде без JavaScript и затова съм я направил потребителят да се върне по този начин на предишната страница. Ще очаквам предложения за промени! Това мнение е било редактирано от Бай Аз на 02-02-2024, 14:06 |
||||
| Бай Аз |
Публикувано на: 02-02-2024, 15:48
|
||
|
Име: Група: Потребител Ранг: Редовен член Мнения: 397 Регистриран на: 04.02.21 |
Основно имам предвид какви подобрения могат да се направят в php кода на файла sendmail.php? Този код:
Това мнение е било редактирано от Бай Аз на 02-02-2024, 15:48 |
||
| thrawn |
Публикувано на: 02-02-2024, 17:42
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 3864 Регистриран на: 17.01.17 |
При POST заявки, обикновено се ползва PRG патерн (post/redirect/get) за да се избегне повторно изпращане на същите данни при рефреш.
Щом ти харесва с две страници правиш страницата с формата -> POST заявка към сървърът които връща 302 (да речем), което кара клиентът да пусне GET заявка към страницата със статусът (нова страница с това което връщаш в момента след изпращане на съобщението). Трябва да предвидиш и защита от флуд или направо да му изтряскаш една капча с която да отрежеш ботовете (това е редно да го има и при коментарите). Освен това, не проверяваш дали функцията mail е извикана успешно. Това мнение е било редактирано от thrawn на 02-02-2024, 17:43 |
| ici |
Публикувано на: 02-02-2024, 19:09
|
![]() Име: Ивайло Илчев Група: VIP Ранг: Почетен член Мнения: 19077 Регистриран на: 06.06.04 |
-------------------- Facebook is a bit like checking your underwear after a fart.
Most likely there's nothing new and if there is it's probably shit. |
| Бай Аз |
Публикувано на: 05-02-2024, 08:40
|
|
Име: Група: Потребител Ранг: Редовен член Мнения: 397 Регистриран на: 04.02.21 |
ici,
Измисленият бот, няма как да ми отговори на този въпрос - пробвах го, той ми дава стандартно решение, което дори не е решение и е по-зле от моето. Нямаш представа, като го сглобявах моя код - колко уж стандартни решения - не работят добре и правилно! Примерно - не ти показват получателя, писмото идва на шльокавица, писмото не се разделя на отделни редове и т.н.т. Така, че идеята ми тук е хора, които имат контактни форми на сайтовете си, да кажат какво може да се добави в моя код? Иначе, аз съм си изтеглил около 20-тина примерни контактни форми, и сега ще анализирам, за да видя кое да променя в моя код. |
| Бай Аз |
Публикувано на: 07-02-2024, 09:18
|
||||||||||||||
|
Име: Група: Потребител Ранг: Редовен член Мнения: 397 Регистриран на: 04.02.21 |
ОК , остана ми малко време и за този въпрос. Сега, разбрах, че трябва целия този код да бъде с условие за проверка, и накрая също трябва да има такова условие за проверка - дали съобщението е изпратено успешно? Значи, кодът трябва да бъде примерно такъв:
Да питам следното по този код:
Има и варианти, при които в $message има по-малко неща, примерно само
А повечето данни са в хедърите:
Аз в началото го бях направил така, но не ми изписваше нищо в самото съобщение и по съвет на php програмист изместих тези данни:
в съобщението. Но кажете и вие, според вас как е по-правилно? ----------------------------------------------------------------------------- Въпроси към thrawn
thrawn, с какъв код точно се прави това?
Капча не ми се слага, но такава защита от флуд(да има ограничение по време за изпращане на следващ коментар) ще е добре да се направи, а също и за системата за коментарите! И как точно се прави тази защита от флуд? Това мнение е било редактирано от Бай Аз на 07-02-2024, 09:24 |
||||||||||||||
| thrawn |
Публикувано на: 07-02-2024, 09:42
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 3864 Регистриран на: 17.01.17 |
PRG просто значи, че кодът които обработва POST заявките не връща директно html а праща http отговор с код 3ХХ. Което кара барузерът да направи GET заявка за ресурсът описан в location хедърът.
Относно защитите - темата е разтеглива. Сесия + timestamp ще даде добри резултати за UX-a но това не е реална защита, затова се почват магарии със следене на ip адреси и т.н. Но като цяло, всичко може да се заобиколи, ако някой е решил да го направи. Затова, вместо да се опитваш сам да откриваш топлата вода е удачно да ползваш "стандартни" услуги за това. Капча се поставя лесно и новите (версия 3 на гугъл да речем) дори не искат взаимодействие с потребителя. Та за няколко реда код получаваш едно много добро ниво на защита. |
| Бай Аз |
Публикувано на: 07-02-2024, 09:52
|
||||||||||
|
Име: Група: Потребител Ранг: Редовен член Мнения: 397 Регистриран на: 04.02.21 |
thrawn, А по тези въпроси какво ти е мнението? Това мнение е било редактирано от Бай Аз на 07-02-2024, 09:52 |
||||||||||
| thrawn |
Публикувано на: 07-02-2024, 10:02
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 3864 Регистриран на: 17.01.17 |
Дали ще използваш локална променлива или не е все тая. С IDE е много по-удобно да се работи с променливи отколкото с асоциативни масиви, защото то може да следи за грешки които се допускат лесно а се виждат трудно (например $_POST["msesage"]);
Имай в предвид, че ако ползваш данни подадени от клиент за изграждане на хедър то те трябва задължително да минават през филтриране. Затова там ограничи до минимум нещата които пипаш. Останалото е все тая как го правиш (докато използваш text/plain) Това мнение е било редактирано от thrawn на 07-02-2024, 10:09 |
| Бай Аз |
Публикувано на: 07-02-2024, 11:39
|
||||
|
Име: Група: Потребител Ранг: Редовен член Мнения: 397 Регистриран на: 04.02.21 |
Аз в началото го бях написал така:
Но правеше друг проблем(както този, който имах в системата за коментарите) - всичко се поместваше на един ред. И ми обясниха, че за да работят "\r\n" трябва да се ползва "Content-Type: text/plain" И затова го направих с text/plain и така работи правилно! Казаха ми още, че за да бъде кодът ми изцяло коректен трябва: 1. Когато имам Content-Type, трябва да има и MIME-Version: 1.0. 2. Когато имам utf-8, трябва да има и Content-Transfer-Encoding: 8bit и поддържащ това "транспорт", или трябва да се използва кодиране (base64, etc.) Но не ми обясниха как точно трябва да направя това - с конкретен код! Това мнение е било редактирано от Бай Аз на 07-02-2024, 11:44 |
||||
Страници: (4) [1] 2 3 ... последна » |
![]() ![]() ![]() |