رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مجموعه قطعه کدهای کاربردی PHP
#1
قطعه کد کار با دیتابیس MySQL

از نظر من مهمترین قطعه کدی که باید باهاش آشنا باشید، قطعه کد کار با دیتابیس MySQL هست. کمتر برنامه ای دیدیم که اطلاعات خودش رو درون چیزی به جز این نوع پایگاه اطلاعاتی ذخیره کنه پس اگر این قطعه کد رو داشته باشید و بدونید چطوری باید ازش استفاده کنید میشه گفت نیمی از راه رو برای نوشتن برنامه ای مثل سیستم مدیریت محتوا و… طی کردید. این قطعه کد از ارتباط با MySQL بگیر تا افزودن، ویرایش، حذف و جستجوی اطلاعات درونش هست. یه نگاهی بهش بندازید:

کد:
<?php
/**
 * File: Database.php
 *
 * This class is designed to be the interface class with a database.
 * This is currently setup to use SQL syntax however can be changed if needed in future for a different type of database.
 * Using this class will save a lot of programming if a change was needed.
 * Also works brilliantly for MySQL, used in 3 major projects so far :)
 *
 * 
 * @author     Daniel Rosser
 * @version    1.0
 * 
 */
 
 
class Database {
    private $HOST  = "example.com";
    private $TABLE = "table"; 
    private $USER  = "";
    private $PASS  = "";
    private $ERROR_CONNECT = "Could not connect to Database"; 
    private $ERROR_QUERY   = "Could not query the Database";
    private $connection;
    private $lastResult;
    
    /**
     * Constructor
     * @param type - Type of connection, Read only, Write
     */
    function __construct($type)  //php 5+ style constructor
    {
      switch ($type) {    
      case readWrite:
          $this->USER = "username";
          $this->PASS = "password";
          break;
      case readWriteCreate:
          $this->USER = "username";
          $this->PASS = "password";
          break;
      case readOnly:
      default:
          $this->USER = "username";
          $this->PASS = "password";
          break;
       }       
       $this->connect();
    }
    
    /**
     * Destructor
     */
    function __destruct()
    {
       $this->close;
       }
    
    /**
     * Connect to the database
     * @return connection
     */
    
    function connect()
    {
       $this->connection = mysql_connect($this->HOST,$this->USER,$this->PASS) or print mysql_error($this->ERROR_CONNECT);
       $result = mysql_select_db($this->TABLE,$this->connection);
       return($connection);
    }  
    
    /**
     * Delete a row from a table
     * @param table - Table name
     * @param id - ID of row
     * @return result
     */     
    function delete($table, $id)
    {
       $query = "DELETE FROM $table WHERE id='$id'";
       $result = mysql_query($query,$this->connection) or print mysql_error($this->ERROR_QUERY);
       return($result);
    } 
    
    /**
     * Delete a row from a table
     * @param table - Table name
     * @param idName - name of the ID row
     * @param id - ID of row
     * @return result
     */
    function deleteSpecific($table, $idName, $id)
    {
       $query = "DELETE FROM $table WHERE $idName='$id'";
       $result = mysql_query($query,$this->connection) or print mysql_error($this->ERROR_QUERY);
       return($result);
    } 
    
    /**
     * Disconnects and closes the connection with database
     */
    function disconnect()
    {
       mysql_close($this->connection);
    }
    
    /**
     * Insert fields, values into Table
     * @param table - Table name
     * @param fields - Fields to insert
     * @param values - Values to insert
     */
    function insert( $table, $fields, $values )
    {
      $start  = "INSERT INTO $table(";
      $middle = ") VALUES (";
      $end    = ")";
      $size   = sizeof($fields); // verify the size of the fields
      $stringFields = "";
      for($i=0;$i <= ($size-1);$i++){
        $stringFields .= "$fields[$i]";
        if( $i != ($size-1) ){
        $stringFields .= ",";
        }
      }
      $stringValues="";
      for( $k=0; $k <= ($size-1); $k++ ){
          $stringValues .= "\"$values[$k]\"";
          if( $k != ($size-1) ){
            $stringValues .= ",";
          }
       }
      $insert = "$start$stringFields$middle$stringValues$end";      
      $insert = str_replace('""', mysql_escape_string("NULL"), $insert);
      $insert = str_replace('" "', mysql_escape_string("NULL"), $insert);
      $insert= str_replace("''", "", $insert);
      $insert = str_replace("' '", "", $insert);    
      $this->query($insert);
    }
    
    /**
     * Update fields, values into Table
     * @param table - Table name
     * @param fields - Fields to insert
     * @param values - Values to insert
     * @param idName - Name of Primary Key row
     * @param id - The unique identifier
     */
    function update( $table, $fields, $values, $idName, $id )
    {
      $start  = "UPDATE $table SET ";
      $end    = " WHERE $idName=\"$id\";";
      $size   = sizeof($fields); // verify the size of the fields
      $sizeV  = sizeof($values);
      if($sizeV != $size)
        echo "Developer Error, Size of Fields / Values are not the same- Fields:$size Values:$sizeV";
        
      $string = "";      
      for($i=0;$i <= ($size-1);$i++){
        $string .= "$fields[$i] = \"$values[$i]\"";
        if( $i != ($size-1) ){
        $string .= " , ";
        }
      }
      $update = "$start$string$end";         
      $update = str_replace('""', mysql_escape_string("NULL"), $update);
      $update = str_replace('" "', mysql_escape_string("NULL"), $update);
      $update = str_replace("''", "", $update);
      $update = str_replace("' '", "", $update);      
      $this->query($update);
    }
    
    /**
     * Use this for a SQL Query
     * Data is stored inside $this->lastResult 
     * @param sql - SQL to query the database
     */
    function query($sql)
    {
      if(!($this->lastResult = mysql_query($sql, $this->connection)))
        die("MySQL Error from Query. Error: ".mysql_error()." From SQL : $sql");
    }
    
    /**
     * Fetch rows from last query
     * @return row array
     */
    function fetchRow()
    {
        return mysql_fetch_array($this->lastResult);
    }
    
    /**
     * Fetch rows from last query
     * @return an associative array that corresponds to the fetched row and moves the internal data pointer ahead
     */
    function fetchRowAssociative()
    {
        return mysql_fetch_assoc($this->lastResult);
    }
    
    
    
    /**
     * Number of rows in a table
     * @param table - Table to query
     */
    function number($table)
    {
        $query  = "SELECT * FROM $table";
        $result = mysql_query($query, $this->connection);
        $number = mysql_num_rows($result);
        return($number);
    }
    
    /** 
     * Return the last id of an insertion
     * @return last id of an insertion
     */
    function lastId() 
    {
       return mysql_insert_id($this->connection); 
    } 
    
    /**
     * Return the number of rows affected on last query
     * @return number of rows 
     */
    function numberAffected() 
    {
       $query = mysql_affected_rows();
       return($query);
    }
    
    /**
     * Return the number of rows in the last query
     * @return number of rows 
     */
    function numberOfRows()
    {    $number = mysql_num_rows($this->lastResult);
        return($number);
    }
        
    /**
     * Return the number of rows found in a query
     * @return number of rows
     */
    function numberRows($query)
    {
      $result = mysql_query($query, $this->connection);
      $number = mysql_num_rows($result);
      return($number);
    }  
    
};
?>

قطعه کد ارسال ایمیل

یکی از کاربردیترین قطعه کدها که ممکنه بهش احتیاج پیدا کنید، همین قطعه کد ارسال ایمیله که موارد استفاده اش زیاده ولی مهمترین اونها استفاده به عنوان فرم تماس هست. این کلاس اصلی ارسال ایمیل رو ببینید:

کد:
<?php

Class sendmail{

    public $smtp_host;
    public $smtp_port = 25;
    public $smtp_user;
    public $smtp_password;
    public $from_name;
    public $SendFromMail;
    public $mail_to;
    public $subject;
    public $message;
    public $headers = '';
    public $ContentType = 'html';
    public $charset = 'windows-1251';
    public $smtp_debug = true;
    public $socket;
    public $error;
    public $SendMailVia  = 'smtp';
    
  public function __construct()
    {
            if($this->SendFromMail == ''){
               $this->SendFromMail = $this->smtp_user;
            }
    }
    
    public function Send($mail_to = '', $subject = '', $message = '')
    {
        if($mail_to!=''){$this->mail_to = stripslashes($mail_to);}
            if($subject!=''){$this->subject = stripslashes($subject);}
            if($message!=''){$this->message = $message;}
            $meilsArr = array_filter($this->GetMailAndNameArr());
            if(trim($this->mail_to)==''){$this->error = 'Enter the recipient address'; }
            if($meilsArr == array()){$this->error = 'Please enter a valid recipient address'; }
            foreach ($meilsArr as $val)
            {
                $validEmail = $this->validEmail($val[2]);
                if($validEmail)
                {
                  if($this->SendMailVia=='smtp'){
                      return $this->SMTPsend($mail_to = $val[2], $name_to = $val[1]);
                    }
                    else{
                      return $this->MAILsend($mail_to = $val[2], $name_to = $val[1]);
                    }    
                }
            }
    }
    
    public function MAILsend($mail_to, $name_to)
    {
    if($this->ContentType=="text"){
        $header="Content-Type: text/plain; charset=".$this->charset."";
      }
        else{
        $header="Return-Path: ".$this->smtp_user."\n".
      "Reply-To: ".$this->SendFromMail."\n".
      "From: ".$this->from_name." <".$this->SendFromMail.">\n".
      "Subject: ".$this->subject."\n".
        "Content-Type: text/html; charset=".$this->charset."\n";
      }
      if(mail("$name_to <$mail_to>",$this->subject,$this->message,$header)){
         return true;
        }else{
         return false;
        }
  }
    
    public function SMTPsend($mail_to, $name_to)
    {
            $SEND =   "Date: ".date("D, d M Y H:i:s") . "\r\n";
            $SEND .=   'Subject: =?'.$this->charset.'?B?'.base64_encode($this->subject)."=?=\r\n";
            if ($this->headers!=''){ $SEND .= $this->headers."\r\n\r\n"; }
      else
      {
         $SEND .= "Reply-To: ".$this->SendFromMail."\r\n";
         $SEND .= "MIME-Version: 1.0\r\n";
         $SEND .= "Content-Type: text/".$this->ContentType."; charset=\"".$this->charset."\"\r\n";
         $SEND .= "Content-Transfer-Encoding: 8bit\r\n";
         $SEND .= "From: \"".$this->from_name."\" <".$this->SendFromMail.">\r\n";
         $SEND .= "To: $name_to <$mail_to>\r\n";
         $SEND .= "X-Priority: 3\r\n\r\n";
      }
      $SEND .=  $this->message."\r\n";
        
                $socket = fsockopen($this->smtp_host, $this->smtp_port, $errno, $errstr, 30);
          if(!socket)
            {
          if($this->smtp_debug) $this->error = $errno." - ".$errstr;
          return false;
        }
                
                if (!$this->server_parse($socket, "220", __LINE__)){ return false; }
                
            fputs($socket, "HELO ".$this->smtp_host. "\r\n");
            if (!$this->server_parse($socket, "250", __LINE__)) {
               if ($this->smtp_debug) $this->error = '<p>Can not send HELO!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "AUTH LOGIN\r\n");
            if (!$this->server_parse($socket, "334", __LINE__)) {
               if ($this->smtp_debug) $this->error = '<p>Can not find an answer to a request authorization.</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, base64_encode($this->smtp_user) . "\r\n");
            if (!$this->server_parse($socket, "334", __LINE__)) {
               if ($this->smtp_debug) $this->error = '<p>Login authorization was not accepted by server!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, base64_encode($this->smtp_password) . "\r\n");
            if (!$this->server_parse($socket, "235", __LINE__)) {
               if ($this->smtp_debug) $this->error = '<p>No password was not accepted as a true server! Authorization Error!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "MAIL FROM: <".$this->smtp_user.">\r\n");
            if (!$this->server_parse($socket, "250", __LINE__)) {
               if ($this->smtp_debug) $this->error = '<p>Unable to send command MAIL FROM: </p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "RCPT TO: <" . $mail_to . ">\r\n");
            if (!$this->server_parse($socket, "250", __LINE__)) {
               if ($this->smtp_debug) $this->error = '<p>Unable to send command RCPT TO: </p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "DATA\r\n");
            if (!$this->server_parse($socket, "354", __LINE__)) {
               if ($this->smtp_debug) $this->error = '<p>Unable to send command DATA</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, $SEND."\r\n.\r\n");
            if (!$this->server_parse($socket, "250", __LINE__)) {
               if ($this->smtp_debug) $this->error = '<p>Unable to send the message body. The letter was sent!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "QUIT\r\n");
            fclose($socket);
            return TRUE;
    }
    
    
    
    private function GetMailAndNameArr(){
        $mailingArr = array();
            $tos = preg_split("/;|,/",$this->mail_to);
            $pregcode = '/(.*?)<(.*?)>/i';
            foreach($tos as $to)
            {
              if(preg_match('/(.*?)<(.*?)>/i',$to,$matches))
                {
                  unset($matches[0]);    
                  $matches[1] = trim(str_replace('"','',$matches[1]));
                  $matches[2] = trim($matches[2]);
                  $mailingArr[] =$matches; 
                }
                elseif(preg_match('/\b([A-Z0-9._%-]+)@([A-Z0-9.-]+\.[A-Z]{2,4})\b/i',$to,$matches2))
                {
                     unset($matches[0]);    
                     $matches[1] = trim(str_replace('"','',$matches2[1]));
                     $matches[2] = trim($matches2[0]);
                     $mailingArr[] =$matches;
                }
            }
            return $mailingArr;
    }
    
    private function server_parse($socket, $response, $line = __LINE__) {
    while (substr($server_response, 3, 1) != ' ') {
          if (!($server_response = fgets($socket, 256))) {
               if ($this->smtp_debug) $this->error = "<p>$line Problems sending mail! $response</p>";
               return false;
          }
    }
    if (!(substr($server_response, 0, 3) == $response)) {
           if ($this->smtp_debug) $this->error = "<p>$line Problems sending mail! $response</p>";
           return false;
        }
    return true;
  }

  function validEmail($email)
  {
    $isValid = true;
    $atIndex = strrpos($email, "@");
      $msg = '';
    if (is_bool($atIndex) && !$atIndex)
    {
      $isValid = false;
    }
    else
    {
      $domain = substr($email, $atIndex+1);
      $local = substr($email, 0, $atIndex);
      $localLen = strlen($local);
      $domainLen = strlen($domain);
      if ($localLen < 1 || $localLen > 64){
                 $msg = 'local part length exceeded';
         $isValid = false;
      }
      else if ($domainLen < 1 || $domainLen > 255){
                 $msg = ' domain part length exceeded ';
         $isValid = false;
      }
      else if ($local[0] == '.' || $local[$localLen-1] == '.'){
                 $msg = ' local part starts or ends with .';
         $isValid = false;
      }
      else if (preg_match('/\\.\\./', $local)){
                 $msg = 'local part has two consecutive dots';
         $isValid = false;
      }
      else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)){
                 $msg = 'character not valid in domain part';
         $isValid = false;
      }
      else if (preg_match('/\\.\\./', $domain)){
                 $msg = '  domain part has two consecutive dots';
         $isValid = false;
      }
      else if(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\","",$local))){
                 $msg = '  character not valid in local part unless local part is quoted';
         if (!preg_match('/^"(\\\\"|[^"])+"$/',str_replace("\\\\","",$local))){
            $isValid = false;
         }
      }
      if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A"))){
                 $msg = '  domain <b>'.$domain.'</b> not found in DNS';
         $isValid = false;
      }
    }
      $this->error = $msg;
    return $isValid;
  }

}
?>

شمارش تعداد کلمات

این قطعه کد تعداد کلمات (و نه حروف) رو می شماره. جاهایی مثل بخش ارسال دیدگاه یا در هرجایی که از ویرایشگر متن استفاده می کنید، کاربرد داره. مثلاً می تونید تعداد کلماتی که کاربر مجاز به استفاده هست رو محدود کنید.


کد:
<?php
function word_count($sentence){
$array = explode(" ", $sentence);
return count($array);
}
$words = word_count("آزمایشگاه مجازی طرح‌چه");
echo $words;
?>
[عکس: 468-60.jpg]
پاسخ
 سپاس شده توسط Milad ، MrAhmad ، mojtabakh18
#2
از زبان های برنامه نویسی جدید کسی اطلاعی نداره؟
پاسخ




کاربران در حال بازدید این موضوع: 1 مهمان