Delete. 10x

PHP, MySQL, JavaScript, HTML, CSS и др.
Аватар
Алекс
Извън линия
Потребител
Потребител
Мнения: 114
Регистриран на: 03 Яну 2017, 01:13
Местоположение: $this->locale()
Се отблагодари: 3 пъти
Получена благодарност: 9 пъти
Обратна връзка:

Delete. 10x

Мнение от Алекс » 06 Яну 2018, 02:21

Delete. 10x
Последно промяна от Алекс на 03 Мар 2022, 17:54, променено общо 29 пъти.
01001100 01100001 01110010 01100001 01110110 01100101 01101100

Аватар
sianbg
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 13 Ное 2017, 12:18
Получена благодарност: 1 път
Обратна връзка:

Контактна форма с captcha и проверка на полетата

Мнение от sianbg » 06 Яну 2018, 02:29

Пълни глупости. Първо това е много груба грешка. Не може да проверяваш входните данни с javasccript... Първо javascript го изпълнява клиента и може да го манипулира както си иска. Второ ако ползвам curl или нещо друго мога да направя директно пост заявка към файла. Без браузър. Трето преди да изпратиш съобщението до мейла ги минаваш през htmlspecialchars. Повечето мейл пощи ти ги ескейпват, но когато цъкнеш покажи ще ти се изпълни кода, който съм изпратил. Когато си го ескейпнал преди да го изпратиш няма да се изпълни javascrip-та, който съм написал. Надявам се, че разбра какви са ти грешките и не препоръчвам на никого да използва този код.

Аватар
Алекс
Извън линия
Потребител
Потребител
Мнения: 114
Регистриран на: 03 Яну 2017, 01:13
Местоположение: $this->locale()
Се отблагодари: 3 пъти
Получена благодарност: 9 пъти
Обратна връзка:

Контактна форма по E-mail с CAPTCHA и проверка на полетата

Мнение от Алекс » 06 Яну 2018, 02:34

За javascript-a може и да си прав, но trim() включва много функции в една, една от които е htmlspecialchars.
Целият код е на Impossible, променил съм малко от PHP частта.
Ще обновя кода.
01001100 01100001 01110010 01100001 01110110 01100101 01101100

Аватар
sianbg
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 13 Ное 2017, 12:18
Получена благодарност: 1 път
Обратна връзка:

Контактна форма по E-mail с CAPTCHA и проверка на полетата

Мнение от sianbg » 06 Яну 2018, 02:40

Виж какво премахва в документацията - http://php.net/manual/bg/function.trim.php

Изпълни този код и виж разликата. Може и онлайн - http://sandbox.onlinephpfunctions.com/

Код за потвърждение: Избери целия код

<?php

$string = "<script>alert(2);</script>";
var_dump(trim($string));
var_dump(htmlspecialchars($string));


Аватар
Алекс
Извън линия
Потребител
Потребител
Мнения: 114
Регистриран на: 03 Яну 2017, 01:13
Местоположение: $this->locale()
Се отблагодари: 3 пъти
Получена благодарност: 9 пъти
Обратна връзка:

Контактна форма по E-mail с CAPTCHA и проверка на полетата

Мнение от Алекс » 06 Яну 2018, 03:22

Delete. 10x
Последно промяна от Алекс на 03 Мар 2022, 17:55, променено общо 1 път.
01001100 01100001 01110010 01100001 01110110 01100101 01101100

Аватар
sianbg
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 13 Ное 2017, 12:18
Получена благодарност: 1 път
Обратна връзка:

Контактна форма по E-mail с CAPTCHA и проверка на полетата

Мнение от sianbg » 06 Яну 2018, 03:42

Не ме разбра правилно. Ще ти обясня какво се случва. Ти извикваш captcha и слагаш стойността в полето. Потребителя пише в друго поле и после ги сравняваш. Ако пратя пост заявка и попълня двете полета да са примерно 555 и проверката ще мине. Правилният начин е да покажеш captcha, да вземеш какво е написал потребителя, да го пратиш на гугъл и той ще ти върне отговор дали тази капча отговаря с това, което е написал потребителя. Само така можеш да се защитиш от ботове. Всичко, което се изпълнява в клиента и клиента праща може да бъде манипулирано.

Правилно използване на captcha:
https://developers.google.com/recaptcha/old/docs/php
Другият вариант е:
https://stackoverflow.com/questions/272 ... r-side-php

Аватар
Алекс
Извън линия
Потребител
Потребител
Мнения: 114
Регистриран на: 03 Яну 2017, 01:13
Местоположение: $this->locale()
Се отблагодари: 3 пъти
Получена благодарност: 9 пъти
Обратна връзка:

Контактна форма по E-mail с GOOGLE CAPTCHA и проверка на полетата

Мнение от Алекс » 06 Яну 2018, 04:50

Delete. 10x
Последно промяна от Алекс на 03 Мар 2022, 17:55, променено общо 1 път.
01001100 01100001 01110010 01100001 01110110 01100101 01101100

Аватар
gan
Извън линия
Потребител
Потребител
Мнения: 1
Регистриран на: 05 Фев 2019, 10:55

Контактна форма по E-mail с GOOGLE reCAPTCHA и проверка на полетата

Мнение от gan » 05 Фев 2019, 10:57

Ето една актуална публикация по темата за инсталиране на капча https://ganmax.com/kak-se-instalira-kap ... v-uebsayt/

Аватар
dunnata
Извън линия
Потребител
Потребител
Мнения: 1
Регистриран на: 26 Фев 2019, 08:48

Контактна форма по E-mail с CAPTCHA и проверка на полетата

Мнение от dunnata » 26 Фев 2019, 09:13

Алекс написа: 06 Яну 2018, 03:22 Кодът беше променен, надявам се сега да няма никакви проблеми, но ако откриете грешки споделете! :)
Здравейте, благодаря за кода. Работи.
Имам един проблем обаче и моля за помощ.
Модифицирах малко кода, като добавих имейл и телефонен номер и премахнах Скайп.
Получавам имейл на пощата си, но е с подател от моят хостинг и не получавам телефонния номер.
Виждам единствено съобщението и преди да отворя мейла виждам мейла на подателя.
Моля за помощ.
Ето кода, като съм прикрил в него имейла и ключа за reCAPTCHA:

Код за потвърждение: Избери целия код


<?php
        $Name;$Email;$Phone;$Message;$captcha;$to;$email_message;$headers;
		
        if(isset($_POST['Name']))
          $Name=htmlspecialchars($_POST['Name']);
        
		if(isset($_POST['Email']))
          $Email=htmlspecialchars($_POST['Email']);
	  
		if(isset($_POST['Phone']))
          $Phone=htmlspecialchars($_POST['Phone']);
	  
		if(isset($_POST['Message']))
          $Message=htmlspecialchars($_POST['Message']);
	  
        if(isset($_POST['g-recaptcha-response']))
          $captcha=htmlspecialchars($_POST['g-recaptcha-response']);
		
        if(empty($Name) ||  empty($Email) || empty($Message)) {
	     echo 'Моля, попълнете всички полета!';
            exit;
	}
	
        if(!$captcha){
          echo 'Моля, проверете дали сте преминали теста за ботове успешно!';
          exit;
        }
        
$response=json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=**********response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']), true);

        if($response['success'] == false)
        {
          echo '<h2>Не толерираме спамери в нашият сайт!</h2>';
        }
        else
        {
        	$to = "******";
		$email_message = "Name: $Name \n";
		$email_message = "Phone: $Phone \n";
		$email_message = "Message: $Message \n";
		$headers = 'From: $Name' . "\r\n" . 'Content-type: text/html; charset=utf-8' . "\r\n";
		mail($to, $Email, $email_message, $headers);

   {
    header('Location: ******');
   }
        }
?>


Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Уеб Програмиране”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 7 госта