preg_match: исправление проблемы с блокировкой https: // URL-ссылка в комментариях - PullRequest
0 голосов
/ 14 января 2019

Итак, короткий рассказ: Я проверяю много стеков над потоком статьи с похожей ситуацией и нашел только этот 1) Обнаружение URL с помощью preg_match? без http: // в строке 2) preg_match, чтобы разрешить только https: // в URL

но не ответил на мою проблему

enter image description here

Так что я делаю preg_match в своем php-файле, чтобы люди не вставляли URL-адреса из Bot и Troll. Но когда я проверяю его с помощью этого кода, он не работает :(. Поэтому, если они отправляют сообщение с каким-либо префиксом URL, оно не будет отправлено. Но оно не работает

if(preg_match('/(https|ftp|http):/i',$comments))
        {
        // prevent form from saving code goes here
        echo "<script>alert('Please Correct your message');</script>";
        // echo "<script>window.open('contactus.php','_self');</script>";
        }

но по какой-то причине он обходит preg_match и все еще отправляется даже при всплывающем скрипте. Есть ли что-то, что я делаю неправильно, потому что мой коллега использует этот код на другом сайте, и он работает. Спасибо

enter image description here

PS: ЗДЕСЬ весь код, если вам нужно больше контекста, спасибо

<?php
session_start();
    /*if ($_SESSION['company'] != "RapidPay") {
        //redirect to the logout pag
        $redirect = 'index.php';
        include  './includes/redirect.php';
     } 
    if(!$_SESSION['userid']) {
        header("Location:login.php");
    }*/
/*  if(!$_SESSION['userid']){
        header("location:login.php");
}*/
    $userid = $_SESSION['userid'];
    $username = $_SESSION['username'];
    $useremail = $_SESSION['uemail'];
    $uphone = $_SESSION['uphone'];
    $usecurity = $_SESSION['usecurity'];

    include './includes/dblogin.php';
$currentPage = 'contactus';
?>
<!DOCTYPE html>

<?php
    $dontsend=0;
    $mailstatus="";
    if(isset($_POST["submit"])){
        //catch spambots
        $honeypot = FALSE;

        if (!empty($_REQUEST['honeypot']) && (bool) $_REQUEST['honeypot'] == TRUE){

            $honeypot = TRUE;
            $dontsend=1;
            # treat as spambot

        }


        $username=$_POST["uname"];

        $phoneno=$_POST["phno"];

        $email=$_POST["email"];

        $comments= $_POST["message"];

        if(preg_match('/(https|ftp|http):/i',$comments))
            {
            // prevent form from saving code goes here
            echo "<script>alert('Please Correct your message');</script>";
            // echo "<script>window.open('contactus.php','_self');</script>";

            }


        if (preg_match('/[А-Яа-яЁё]/u', $comments) || strpos($comments, 'erect') !== false){

            $ipaddress = $_SERVER["REMOTE_ADDR"];
            $subject = 'russian spammer ip /erectile spammer ip - RPSBS';
            $message = $comments . " " . $ipaddress;
            $from = $eemail;
            $headers = "From:".$from;
            $to= 'EMAIL';
            # mail($to, $subject, $message, $headers);
            $dontsend=1; 
}



   if ($dontsend!=1){

            $ipaddress = $_SERVER["REMOTE_ADDR"];

            $message="";

            $message.="<table>";

            $message.="<tr height='40'><td colspan='2' style='vertical-align:top'>Details of the Person</td></tr>"; 

            $message.="<tr height='40' ><td style='vertical-align:top; width:120px'><b>Name:</b></td><td style='vertical-align:top'>".$username."</td></tr>";

            $message.="<tr height='40' ><td style='vertical-align:top'><b>Mobile Number:</b></td><td style='vertical-align:top'>".$phoneno."</td></tr>";        

            $message.="<tr height='40' ><td style='vertical-align:top'><b>Email ID:</b></td><td style='vertical-align:top'>".$email."</td></tr>";           

            $message.="<tr height='40' ><td style='vertical-align:top'><b>Message:</b></td><td style='vertical-align:top; text-align:justify'>".$_POST["message"]. "<br>this message is from ip address " . $ipaddress ."</td></tr>";

            $message.="</table>";



            $to="EMAIL";


            $sub="RapidPay - Contact US Form Submission From ".$username;

            $headers="";
            $headers .= "MIME-Version: 1.0" . "\r\n";
            $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

            $headers .="From: ".$email."\r\n";

            mail($to, $sub, $message, $headers);

            $mailstatus="Your mail has been sent";

            //phpinfo();



       }






    }

?>
...