Ben OOP PHP ile bu hakkı yapıyorum?

0 Cevap php

Ben onun avantajları hakkında çok şey okudum sonra Hello, ben cepten PHP ile benim komut (ajax ile temas script) birini yeniden yazma sürecinde değilim.

Komut uzun oldu ama ben bu oop iyi olduğunu düşünüyorum. Ben oop kullanarak php kod hakkında birçok makale okudum, ama yine de bana kafa karıştırıcı oluyor.

The Code

İlk yazısının bu bölümünde bakalım:

/*
 * Validate the data that was given by the user
 */
public function isDataVaild() {
        if (array_filter($_POST, array($this, '_isDataEmpty'))) {
            $this->_error('Please fill all the required info');
            return false;
        }

        if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
            $this->_error('Please use a vaild email');
            return false;
        }

        if (!isset($_SESSION['captcha']) || $_SESSION['captcha'] != $_POST['captcha']) {
            $this->_error('Plese make sure you to enter the correct answer to the spam question');
            return false;
        }
        return true;
}

/*
 * Check is the values are empty or not
 */
protected function _isDataEmpty($val) {
    return(empty(trim($val)));
}

/*
 * Check if there is seesion in not valid or if it does not pass the exploit test
 */
public function isThereExploit () {
        if(array_filter($_POST, array($this, '_validateExploit')) || !$this->_isSessionValid()) {
            if($this->_ajax) {
                $this->_error('Exploit Detected');
            } else {
                $this->_error("<strong style='color: red'>Warning</strong>: An Exploitation attempt has been detected!");
            }
            return false;
        }
        return true;
}

/*
 * Test to see if the values have an exploit
 */
protected function _validateExploit($val) {
    $exploitPattrens = array('content-type', 'to:', 'bcc:', 'cc:', 'document.cookie', 'document.write', 'onclick', 'onload', '\n', '\r', '\t', '%0A', '%0D', '%08', '%09');

    foreach ($exploitPattrens as $exploit) {
        if (strpos($val, $exploit) !== false){
            return true;
        }
    }
    return false;
}

/*
 * Check if the session is vaild for this user
 */
protected  function _isSessionValid() {
    return ($_POST['token'] == $_SESSION['token']);
}

/*
 * Make some sanitizing to the givin value
 */
protected function _clean(&$variable) {
    $variable = trim(filter_var($variable, FILTER_SANITIZE_STRING));
    return $variable;
}

/*
 * Make the message ready to be sent by removing extra data and fixing the rest
 */
protected function _cleanMessage() {   
    foreach ($_POST as $key => &$val) {
        if ($key == 'email') {
            $val = strtolower($val);
        }
        if ($key == 'captcha' || $key == 'token') {
            unset($_POST[$key]);
        }
        $this->_clean($val);
    }
    return $_POST;
}

/*
 * Make the message after checking if the data is vaild and clean
 */
private function _makeMessage() {

    if(!$this->_ajax) {
        if(!$this->isDataVaild()) {
            return;
        }
    }

    if(!$this->isThereExploit()) {
        return;
    }

    $messageEntries = $this->_cleanMessage();

    $message_start = "<div dir='rtl' style='padding: 50px 0 100px;background: #eeeeee; font-family: Arial, Helvetica, sans-serif;'><h1 align='center' style='font-size: 24px; font-weight: bold;color: #989898;margin-bottom: 35px'>New Message</h1><table width='600' align='center' border='1' style='border-collapse: collapse; border: 1px solid #dddddd;font-size: 16px;' cellpadding='14' cellspacing='2'>";

    $message_end = "</table><p style='margin:0;color:#CACACA;font-size:10px;padding-top:20px;text-align:center;'><a style='color:#CACACA;text-decoration:none;' href='http://coolcontact.co.cc'>coolContact v1.2</a> - Developed &amp; Designed by Maher Salam, &copy; <a style='color:#CACACA;text-decoration:none;' href='http://coolworlds.net'>coolworlds.net</a></p></div>";

    $this->_message .= $message_start;

   foreach ($messageEntries as $id => $entrie) {

        $this->_message .= "<tr valign='top' bgcolor='#ffffff'><td width='90' align='left' style='color: #989898;'><b>" . $id . '</b></td><td>' . nl2br($entrie) . '</td></tr>';
        $this->_messagePlein .= $id . ': ' . nl2br($entrie) . '\r\n';
    }

    $this->_message .= $message_end;
}

/*
 * Send the message and return true if it worked
 */
public function send() {
        $this->_makeMessage();

        require 'class.phpmailer-lite.php';
        $mail = new PHPMailerLite();
        $mail->Mailer = 'mail';
        $mail->CharSet = 'UTF-8';

        $mail->SetFrom($this->_senderEmail, $this->_senderName);
        $mail->AddAddress($this->_recieverEmail);

        $mail->Subject = $this->_messageTitle;
        $mail->IsHTML(true);

        $mail->Body = $this->_message;
        $mail->AltBody = $this->_messagePleins;

        $mail->Send();

        return true;
}

Bunu okumak için bir sürü kod olabilir biliyorum, ama sana bütün resmi vermek istedim :)

The Problem

Is there a better way to rewrite some of these functions (like makeMessage())? And how about performance?

Şimdiden teşekkürler.

0 Cevap