Now you can Subscribe using RSS

Submit your Email
Hiển thị các bài đăng có nhãn PHP. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn PHP. Hiển thị tất cả bài đăng

Thứ Tư, 9 tháng 5, 2018

PHP 5 File Upload

game4playfree
Với PHP, thật dễ dàng để tải các tệp lên máy chủ.

Tuy nhiên, dễ dàng gặp nguy hiểm, vì vậy hãy luôn cẩn thận khi cho phép tải lên tệp!

Định cấu hình tệp "php.ini"

Trước tiên, hãy đảm bảo rằng trước khi học PHP được định cấu hình để cho phép tải lên tệp.

Trong tệp "php.ini" của bạn, tìm kiếm chỉ thị file_uploads và đặt thành On:
file_uploads = On


Create The HTML Form

Next, create an HTML form that allow users to choose the image file they want to upload:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

Some rules to follow for the HTML form above:
  • Make sure that the form uses method="post"
  • The form also needs the following attribute: enctype="multipart/form-data". It specifies which content-type to use when submitting the form

Without the requirements above, the file upload will not work.

Other things to notice:

  • The type="file" attribute of the <input> tag shows the input field as a file-select control, with a "Browse" button next to the input control
The form above sends data to a file called "upload.php", which we will create next.

Tạo tập tin tải lên PHP Script
Tệp "upload.php" chứa mã để tải lên tệp:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake imageif(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
?>

Tập lệnh PHP đã giải thích:

$ target_dir = "uploads /" - chỉ định thư mục nơi tệp sẽ được đặt
$ target_file chỉ định đường dẫn của tệp được tải lên
$ uploadOk = 1 chưa được sử dụng (sẽ được sử dụng sau)
$ imageFileType giữ phần mở rộng của tệp (trong trường hợp thấp hơn)
Tiếp theo, kiểm tra xem tệp hình ảnh có phải là hình ảnh thực hay hình ảnh giả

Kiểm tra xem Tệp đã tồn tại chưa

Bây giờ chúng ta có thể thêm một số hạn chế.
Đầu tiên, chúng tôi sẽ kiểm tra xem tệp đã tồn tại trong thư mục "tải lên" chưa. Nếu có, thông báo lỗi được hiển thị và $ uploadOk được đặt thành 0:
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}


Limit File Size


The file input field in our HTML form above is named "fileToUpload".

Now, we want to check the size of the file. If the file is larger than 500KB, an error message is displayed, and $uploadOk is set to 0:
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}

Loại tệp giới hạn

Mã bên dưới chỉ cho phép người dùng tải lên các tệp JPG, JPEG, PNG và GIF. Tất cả các loại tệp khác cung cấp thông báo lỗi trước khi đặt $ uploadOk thành 0:

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}

Hoàn thành tập tin tải lên PHP Script

Tệp "upload.php" hoàn chỉnh bây giờ trông giống như sau:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake imageif(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already existsif (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file sizeif ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formatsif($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an errorif ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>

PHP Fog tăng 1,8 triệu đô la để trở thành Heroku của PHP

game4playfree
Nếu bạn là nhà phát triển, bạn có thể quen thuộc với Heroku, công ty khởi nghiệp mới được Salesforce mua lại với số tiền 212 triệu đô la tiền mặt. Heroku giúp các nhà phát triển triển khai và mở rộng các ứng dụng Ruby của họ, cho phép họ thuê ngoài bảo trì và các nhiệm vụ quản trị để họ có thể viết mã. Giờ đây, có một công ty khởi nghiệp mới có tên là PHP Fog có nhiệm vụ tương tự, ngoại trừ việc hy vọng sẽ làm cho cuộc sống của các nhà phát triển PHP trở nên dễ dàng hơn.



Công ty vừa huy động được 1,8 triệu đô-la tài trợ trong một vòng do Madrona Venture Group dẫn đầu, với sự tham gia của First Round Capital, Founders Co-Op, và một số nhà đầu tư thiên thần. Dịch vụ này vẫn ở bản beta riêng tư, nhưng 100 độc giả TechCrunch có thể đăng ký ngay tại đây.

Người sáng lập Lucas Carlson nói rằng trong khi PHP Fog có một số điểm tương đồng với Heroku, nó có một vài khác biệt chính (ngoài ngôn ngữ). Một là Sương mù PHP cung cấp cho mỗi người dùng máy ảo của riêng họ để các nhà phát triển không bị ảnh hưởng bởi các ứng dụng của nhau (Heroku đã chia sẻ tài nguyên).

Anh cũng nói rằng bạn thực sự có thể bắt đầu xây dựng và mở rộng quy mô trang web của mình mà không cần phải viết một dòng mã bằng cách tận dụng 'Cửa hàng ứng dụng PHP' của dịch vụ, cung cấp các lượt cài đặt ứng dụng một lần nhấp như WordPress và Drupal. Nhưng hầu hết các nhà phát triển có thể sẽ tận dụng lợi thế của tích hợp git đầy đủ của dịch vụ.

Cuối cùng, ông chỉ ra rằng nền tảng của các nhà phát triển PHP lớn hơn Ruby gấp sáu mươi lần, và có sự đa dạng hơn, với nhiều nhà phát triển sử dụng các ứng dụng như WordPress, Drupal, Joomla và các ứng dụng khác.

PHP Fog không phải là dịch vụ duy nhất tìm cách cung cấp cho nhà phát triển nền tảng giống như Heroku cho các ngôn ngữ khác ngoài Ruby. Gần đây chúng tôi đã viết về DotCloud, nhằm cung cấp các dịch vụ tương tự cho nhiều ngôn ngữ khác nhau. Carlson hoài nghi về mục tiêu này, giải thích rằng ông không nghĩ rằng họ sẽ có thể cung cấp dịch vụ chuyên biệt mà một số nhà phát triển cần. Một đối thủ cạnh tranh khác là CloudControl, cũng cung cấp giải pháp PHP.

Thứ Ba, 8 tháng 5, 2018

PaaS PHP Fog ra mắt công chúng

game4playfree
Giống như Heroku cho PHP, PHP Fog ra mắt công chúng ngày hôm nay để giúp các nhà phát triển PHP triển khai và mở rộng các ứng dụng của họ trong đám mây. Tăng 1,8 triệu đô la trong vòng một dẫn bởi Madrona và tiếp theo là vòng đầu tiên, sáng lập Co-Op và những người khác. PHP Fog ra mắt trong phiên bản beta riêng vào tháng 12 và hiện đã có cho tất cả các thành viên của công chúng.

Ngoài việc tập trung hoàn toàn vào PHP, PHP Fog khác với Heroku (và tất cả bao gồm đối thủ cạnh tranh dotCloud) là nó cung cấp cho người dùng một kho ứng dụng PHP, cho phép mọi người xây dựng trang Drupal và WordPress mà không cần biết cách viết mã. Dịch vụ này bắt đầu miễn phí với lưu trữ được chia sẻ và sau đó dao động từ $ 29 - $ 249 tùy thuộc vào số lượng máy chủ bạn muốn dành riêng.

Người sáng lập Lucas Carlson nói: “Khi tôi bắt đầu công ty tôi nghĩ,“ Tại sao không phải ai làm điều này cho PHP, nó là một thị trường lớn hơn nhiều? ”Trong số một triệu trang web hàng đầu, 330K chạy PHP và chỉ 5K chạy Ruby. Đây là một cơ hội lớn hơn nhiều, và tôi đã may mắn vì tôi có thể kiếm tiền từ cơ hội này. ”

Kể từ khi được tài trợ vào tháng 12, PHP Fog đã thuê một nhóm các nhà phát triển (8) và đăng ký 13.000 người trong danh sách beta của mình; "Mất một năm để Heroku đăng ký 10.000 người và chúng tôi mất 6 tháng để đăng ký 13.000 người, vì vậy chúng tôi sẽ nhanh gấp hai lần."

Ngoài việc tuyển dụng và xây dựng thêm nhiều ứng dụng, Carlson thừa nhận rằng một sự thay đổi tên nằm trong các thẻ (PHP Fog là tên khởi động khá buồn chán nhất mà tôi từng viết, và tôi đã viết về Shwowp). Anh ta có kế hoạch lớn và cuối cùng muốn dịch vụ trở thành “Amazon of PaaS”.

Phát hành đến 1.000 người mỗi ngày trong tuần qua, PHP Fog hiện có sẵn cho bất kỳ ai muốn đăng ký tại đây.

Thứ Năm, 3 tháng 5, 2018

Gửi Email sử dụng PHP

game4playfree
PHP phải được định cấu hình một cách xác thực trong php.ini file với các chi tiết về cách hệ thống của bạn gửi email. Mở php.ini có sẵn trong thư mục /etc/ và tìm phần có bắt đầu với [mail function].

Người dùng Windows nên vững chắc rằng có 2 chỉ thị được cung cấp. Cái đầu tiên được gọi là SMTP, nó định tha ma chỉ email Server của bạn. Thứ 2 được gọi là sendmail_from, nó định nghĩa trang chỉ email của riêng bạn.

Cấu hình cho Windows trông giống như sau:

[mail function]
; For Win32 only.
SMTP = smtp.secureserver.net

; For win32 only
sendmail_from = webmaster@niit-ict.com

Người dùng Linux cần cho PHP biết vị trí của áp dụng sendmail. Đường dẫn path phải được xác định cho chỉ thị sendmail_path.

Cấu hình cho Linux trông giống như sau:

[mail function]
; For Win32 only.
SMTP = ; For win32 only sendmail_from = ; For Unix only sendmail_path = /usr/sbin/sendmail -t -i

Bây giờ chúng ta cùng thực hiện việc gửi Email bởi sử dụng PHP.

Gửi email văn bản đơn giản trong PHP





PHP sử dụng hàm mail() để gửi một email. Hàm này đề nghị 3 tham số nép mà xác định địa chỉ email người nhận, chủ đề của thông điệp (message) và nội dung thông điệp, ngoài ra có thêm 2 thông số tùy ý nữa.

mail( to, subject, message, headers, parameters );
Bảng dưới miêu tả các tham số này:
Tham sốMiêu tả
toBắt buộc. Chỉ ra địa chỉ email của người nhận
subjectBắt buộc. Chỉ ra chủ đề của email. Tham số này không thể chứa kí tự newline (dòng mới)
messageBắt buộc. Chỉ ra nội dung thông điệp. Các dòng phân cách nhau bởi một LF (\n). Mỗi dòng không vượt quá 70 kí tự
headersTùy ý. Xác định đầu đề bổ sung, như From, Cc và Bcc. Các đầu đề bổ sung nên được tách biệt với một CRLF (\r\n)
parametersTùy ý. Xác định một tham số bổ sung cho chương trình gửi mail

Ngay khi hàm mail được gọi, PHP sẽ gửi email này, sau đó nó sẽ trả về true nếu thành công và false nếu thất bại.

Để gửi mail cho nhiều người nhận, tham số đầu tiên trong hàm mail() là danh sách người nhận được phân biệt nhau bởi dấu phảy.

Gửi HTML email trong PHP

Khi bạn gửi một thông điệp văn bản sử dụng PHP, khi đó quờ quạng nội dung sẽ được xử lý như văn bản đơn giản. Thậm chí nếu bạn thêm các thẻ HTML trong một thông điệp văn bản, nó sẽ hiển thị như văn bản thông thường và các thẻ HTML sẽ không được định dạng theo cú pháp HTML. Tuy nhiên, PHP cung cấp tùy chọn gửi thông điệp HTML như một thông điệp HTML thực sự.

Khi gửi một thông điệp email, bạn có thể xác định một Mime version, content-type và tập kí tự để gửi một email HTML.
thí dụ

thí dụ sau sẽ gửi một thông điệp email HTML tới xyz@somedomain.com sao chép nó sang afgh@somedomain.com. Bạn có thể code chương trình này trong theo một cách mà nó sẽ nhận được ắt các nội dung từ người dùng và sau đó nó sẽ gửi một email.

<html>
   
   <head>
      <title>Gửi email trong PHP</title>
   </head>
   
   <body>
      
      <?php
         $to = "xyz@somedomain.com";
         $subject = "Đây là subject";
         
         $message = "<b>Đây là HTML Message.</b>";
         $message .= "<h1>Đây là headline.</h1>";
         
         $header = "From:abc@somedomain.com \r\n";
         $header = "Cc:afgh@somedomain.com \r\n";
         $header .= "MIME-Version: 1.0\r\n";
         $header .= "Content-type: text/html\r\n";
         
         $retval = mail ($to,$subject,$message,$header);
         
         if( $retval == true )
         {
            echo "Gửi email thành công ...";
         }
         else
         {
            echo "Không thể gửi email ...";
         }
      ?>
      
   </body>
</html>

Gửi đính kèm cùng Email trong PHP

Để gửi một email với nội dung hỗn tạp thì điều cần thiết là thiết lập Content-type header thành multipart/mixed. Sau đó văn bản và phần đính kèm có thể được xác định bên trong boundaries.

Một boundary được bắt đầu với 2 dấu gạch ngang theo sau bởi một số độc nhất vô nhị mà không thể xuất hiện trong thông điệp của email. Hàm md5() của PHP được dùng để tạo một số hexa 32 kí số và là số độc nhất. Một boundary cuối cùng biểu lộ phần chung cuộc của email cũng phải chấm dứt với hai dấu gạch nối.

<?php
   // các biến sau là quan trọng và cần thiết
   $from=$_REQUEST["from"];
   $emaila=$_REQUEST["emaila"];
   $filea=$_REQUEST["filea"];
   
   if ($filea)
   {
      function mail_attachment ($from , $to, $subject, $message, $attachment){
         $fileatt = $attachment; // đường dẫn tới file
         $fileatt_type = "application/octet-stream"; // kiểu file 
         
         $start = strrpos($attachment, '/') == -1 ? strrpos($attachment, '//') : strrpos($attachment, '/')+1;
         $fileatt_name = substr($attachment, $start, strlen($attachment)); // tên file được sử dụng như là attachment 
         
         $email_from = $from; // địa chỉ người gửi email này
         $subject = "New Attachment";
         
         $email_subject =  $subject; // phần Subject của email 
         $email_txt = $message; // phần nội dung trong email 
         $email_to = $to; // địa chỉ email người nhận
         
         $headers = "From: ".$email_from;
         $file = fopen($fileatt,'rb'); 
         $data = fread($file,filesize($fileatt)); 
         fclose($file); 
         
         $msg_txt="\n\n Bạn đã nhận một New Attachment từ địa chỉ $from";
         $semi_rand = md5(time()); 
         $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 
         $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
         
         $email_txt .= $msg_txt;
         $email_message .= "Đây là thông báo gồm nhiều phần trong định dạng MIME.\n\n" . "--{$mime_boundary}\n" . "Content-Type:text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $email_txt . "\n\n";
         $data = chunk_split(base64_encode($data));
         
         $email_message .= "--{$mime_boundary}\n" . "Content-Type: {$fileatt_type};\n" . " name=\"{$fileatt_name}\"\n" . //"Content-Disposition: attachment;\n" . //" filename=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n";
         $ok = mail($email_to, $email_subject, $email_message, $headers);
         
         if($ok)
         {
            echo "File được gửi thành công.";
            unlink($attachment); // Xóa file sau khi Attachment đã được gửi.
         }
         
         else
         {
            die("Xin lỗi vì không gửi được email. Xin hãy thử lại!");
         }
      }
      move_uploaded_file($_FILES["filea"]["tmp_name"],'temp/'.basename($_FILES['filea']['name']));
      mail_attachment("$from", "youremailaddress@gmail.com", "subject", "message", ("temp/".$_FILES["filea"]["name"]));
   }
?>

<html>
   <head>
      
      <script language="javascript" type="text/javascript">
         function CheckData45()
         {
            with(document.filepost)
            {
               if(filea.value != "")
               {
                  document.getElementById('one').innerText = "Đang đính kèm File ... Mời bạn chờ trong chốc lát!!!";
               }
            }
         }
      </script>
      
   </head>
   <body>
      
      <table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
         <tr>
            <td align="center">
               <form name="filepost" method="post" action="file.php" enctype="multipart/form-data" id="file">
                  
                  <table width="300" border="0" cellspacing="0" cellpadding="0">
                     <tr valign="bottom">
                        <td height="20">Tên bạn:</td>
                     </tr>
                     
                     <tr>
                        <td><input name="from" type="text" id="from" size="30"></td>
                     </tr>
                     
                     <tr valign="bottom">
                        <td height="20">Địa chỉ email của bạn:</td>
                     </tr>
                     
                     <tr>
                        <td class="frmtxt2"><input name="emaila" type="text" id="emaila" size="30"> </td>
                     </tr>
                     
                     <tr>
                        <td height="20" valign="bottom">Attach File:</td>
                     </tr>
                     
                     <tr valign="bottom">
                        <td valign="bottom"><input name="filea" type="file" id="filea" size="16"></td>
                     </tr>
                     
                     <tr>
                        <td height="40" valign="middle"><input name="Reset2" type="reset" id="Reset2" value="Reset">
                        <input name="Submit2" type="submit" value="Submit" onClick="return CheckData45()"></td>
                     </tr>
                  </table>
                  
               </form>
               
               <center>
                  <table width="400">
                     <tr>
                        <td id="one">
                        </td>
                     </tr>
                  </table>
               </center>
               
            </td>
         </tr>
      </table>
      
   </body>
</html>
Mọi người cho thể tham gia khóa học của NIIT-ICT Hà Nội

Coprights @ 2018, NIIT ICT Hà Nội Designed By Lil leeo - Đào Tạo Lập Trình Viên Quốc Tế