Cookie cuộn tròn PHP

Nhiều người coi thường PHP vì họ không tin rằng nó là một ngôn ngữ có cấu trúc đầy đủ và họ nghĩ rằng lập trình viên được tự do tạo mã spaghetti tồi tệ nhất

Dù sao thì tôi tin rằng lập trình tồi đến từ một lập trình viên tồi, mặc dù một số ngôn ngữ có thể thực thi tính chính xác và an toàn loại trên các ngôn ngữ khác

cURL là viết tắt của Client URL đề cập đến một thư viện để truyền dữ liệu bằng các giao thức khác nhau hỗ trợ cookie, HTTP, FTP, IMAP, POP3, HTTPS (có Chứng chỉ SSL), v.v. Ví dụ này sẽ minh họa cách lấy cookie từ một cURL PHP thành một biến. Các chức năng cung cấp một tùy chọn để đặt một cuộc gọi lại sẽ được gọi cho mỗi dòng tiêu đề phản hồi. Hàm sẽ nhận đối tượng curl và một chuỗi có dòng tiêu đề. Cùng với mục đích của họ, yêu cầu cho ví dụ này được mô tả dưới đây

Các hàm CURL của PHP giúp dễ dàng tải xuống nội dung từ các trang web. Đôi khi bạn cần có khả năng quản lý cookie được đặt từ trang web mà dữ liệu đến từ đó. Điều này được thực hiện bằng cách sử dụng các tùy chọn CURLOPT_COOKIEJAR và CURLOPT_COOKIEFILE như trong bài đăng này

CURLOPT_COOKIEJAR

CURLOPT_COOKIEJAR đặt tên tệp nơi lưu trữ cookie. Nếu máy chủ đặt bất kỳ tệp nào, chúng sẽ được ghi vào tệp này và nó sẽ được tạo nếu nó chưa tồn tại

Để đặt tệp cookie là /tmp/cookies. txt (không thực sự là một nơi tốt để lưu trữ tệp cookie, nhưng sẽ phục vụ cho ví dụ này), vào điều khiển curl $ch

curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt');

CURLOPT_COOKIEFILE

Cài đặt jar cookie là nơi curl ghi cookie vào, nhưng cần có một cài đặt riêng để curl gửi cookie trở lại máy chủ. Đây là cài đặt CURLOPT_COOKIEFILE. Nếu nó không được đặt thì sẽ không có cookie nào được gửi đến máy chủ. Nếu tệp không tồn tại, thì không có lỗi nào được đưa ra

Ví dụ sử dụng

curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');

Để tất cả chúng cùng nhau

Đoạn mã sau đọc và ghi cookie vào /tmp/cookies. txt khi thực hiện yêu cầu tới http. //www. thí dụ. com

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');

$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

HTML từ yêu cầu được lưu trữ trong $output và một mảng thông tin về yêu cầu được lưu trữ trong biến $info. Tôi đã đề cập đến hai biến này trong một vài bài viết trước đây của tôi về PHP và curl

Chào mừng bạn đến với hướng dẫn về cách thực hiện lệnh gọi PHP CURL bằng cookie. Cần thực hiện cuộc gọi từ máy chủ đến máy chủ liên quan đến cookie?

Để thực hiện lệnh gọi PHP CURL với cookie, chúng tôi sử dụng

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');

$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
8 để chỉ định nơi lưu cookie sau khi cuộc gọi kết thúc và
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');

$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
9 để chỉ định tệp cookie nào sẽ gửi đến máy chủ từ xa

  • <?php
    // (A) OUTPUT COOKIE ON REMOTE SERVER
    echo "REMOTE SERVER COOKIE - ";
    print_r($_COOKIE);
     
    // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
    setcookie("Test", date("Y-m-d H:i:s"));
    0
  • <?php
    // (A) OUTPUT COOKIE ON REMOTE SERVER
    echo "REMOTE SERVER COOKIE - ";
    print_r($_COOKIE);
     
    // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
    setcookie("Test", date("Y-m-d H:i:s"));
    1
  • <?php
    // (A) OUTPUT COOKIE ON REMOTE SERVER
    echo "REMOTE SERVER COOKIE - ";
    print_r($_COOKIE);
     
    // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
    setcookie("Test", date("Y-m-d H:i:s"));
    2
  • <?php
    // (A) OUTPUT COOKIE ON REMOTE SERVER
    echo "REMOTE SERVER COOKIE - ";
    print_r($_COOKIE);
     
    // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
    setcookie("Test", date("Y-m-d H:i:s"));
    3
  • <?php
    // (A) OUTPUT COOKIE ON REMOTE SERVER
    echo "REMOTE SERVER COOKIE - ";
    print_r($_COOKIE);
     
    // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
    setcookie("Test", date("Y-m-d H:i:s"));
    0
  • <?php
    // (A) OUTPUT COOKIE ON REMOTE SERVER
    echo "REMOTE SERVER COOKIE - ";
    print_r($_COOKIE);
     
    // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
    setcookie("Test", date("Y-m-d H:i:s"));
    1
  • <?php
    // (A) OUTPUT COOKIE ON REMOTE SERVER
    echo "REMOTE SERVER COOKIE - ";
    print_r($_COOKIE);
     
    // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
    setcookie("Test", date("Y-m-d H:i:s"));
    2

Điều đó bao gồm những điều cơ bản, nhưng hãy đọc để biết thêm ví dụ

ⓘ Tôi đã bao gồm một tệp zip chứa tất cả mã nguồn khi bắt đầu hướng dẫn này, vì vậy bạn không cần phải sao chép-dán mọi thứ… Hoặc nếu bạn chỉ muốn đi sâu vào

 

 

TLDR – TRANG TRÌNH BÀY NHANH

Tải xuống & Ghi chú

 

TẢI XUỐNG & LƯU Ý

Đầu tiên, đây là liên kết tải xuống mã ví dụ như đã hứa

 

GHI CHÚ NHANH

Nếu bạn phát hiện ra một lỗi, hãy bình luận bên dưới. Tôi cũng cố gắng trả lời các câu hỏi ngắn, nhưng đó là một người so với cả thế giới… Nếu bạn cần câu trả lời gấp, vui lòng xem danh sách các trang web của tôi để được trợ giúp về lập trình

 

MÃ VÍ DỤ TẢI XUỐNG

Nhấp vào đây để tải xuống tất cả mã nguồn ví dụ, tôi đã phát hành nó theo giấy phép MIT, vì vậy hãy thoải mái xây dựng trên mã nguồn đó hoặc sử dụng nó trong dự án của riêng bạn

 

 

COOKIES PHP CURL

Được rồi, bây giờ chúng ta hãy đi vào các ví dụ về xử lý cookie với PHP CURL

 

1A) CUỘC GỌI MÁY CHỦ CỤC ĐỊA PHƯƠNG

1-cookie-tệp. php

<?php
// (A) INIT CURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/0-dummy.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);

// (B) SET COOKIE FILE
// CURLOPT_COOKIEFILE - SEND THIS COOKIE FILE TO THE REMOTE SERVER.
// CURLOPT_COOKIEJAR - SAVE COOKIE INTO THIS FILE AFTER CURL CLOSE.
$cookie = __DIR__ . DIRECTORY_SEPARATOR . "cookie.txt"; // NOTE: ABSOLUTE PATH
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);

// (C) CURL FETCH
$result = curl_exec($ch);
if (curl_errno($ch)) { echo curl_error($ch); }
else {
  echo $result."\r\n\r\n";
  $clist = curl_getinfo($ch, CURLINFO_COOKIELIST);
  echo "LOCAL SERVER RECEIVED COOKIE - ";
  print_r($clist);
}
curl_close($ch);

Đây chỉ là phiên bản “cải tiến đôi chút” của đoạn giới thiệu để xuất kết quả trao đổi giữa máy chủ cục bộ và máy chủ từ xa

 

1B) MÁY CHỦ TỪ XA GIẢ

0-hình nộm. php

<?php
// (A) OUTPUT COOKIE ON REMOTE SERVER
echo "REMOTE SERVER COOKIE - ";
print_r($_COOKIE);
 
// (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
setcookie("Test", date("Y-m-d H:i:s"));

Trên máy chủ từ xa giả – Chúng tôi chỉ cần xuất cookie đã nhận và gửi tiêu đề để đặt cookie

<?php
// (A) OUTPUT COOKIE ON REMOTE SERVER
echo "REMOTE SERVER COOKIE - ";
print_r($_COOKIE);
 
// (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
setcookie("Test", date("Y-m-d H:i:s"));
3 thành dấu thời gian hiện tại

 

1C) ĐIỀU GÌ SẼ XẢY RA

  • Trong lần chạy đầu tiên –
    • Máy chủ từ xa sẽ không hiển thị bất kỳ giá trị cookie nào vì đây là kết nối mới
    • Sau đó, máy chủ từ xa sẽ phản hồi bằng một cookie đã đặt
      <?php
      // (A) OUTPUT COOKIE ON REMOTE SERVER
      echo "REMOTE SERVER COOKIE - ";
      print_r($_COOKIE);
       
      // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
      setcookie("Test", date("Y-m-d H:i:s"));
      4 trở lại máy chủ cục bộ
    • Máy chủ cục bộ lưu
      <?php
      // (A) OUTPUT COOKIE ON REMOTE SERVER
      echo "REMOTE SERVER COOKIE - ";
      print_r($_COOKIE);
       
      // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
      setcookie("Test", date("Y-m-d H:i:s"));
      4 vào tệp
      <?php
      // (A) OUTPUT COOKIE ON REMOTE SERVER
      echo "REMOTE SERVER COOKIE - ";
      print_r($_COOKIE);
       
      // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
      setcookie("Test", date("Y-m-d H:i:s"));
      6
  • Trong các lần chạy tiếp theo –
    • Máy chủ cục bộ đọc
      <?php
      // (A) OUTPUT COOKIE ON REMOTE SERVER
      echo "REMOTE SERVER COOKIE - ";
      print_r($_COOKIE);
       
      // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
      setcookie("Test", date("Y-m-d H:i:s"));
      6 và gửi nó đến máy chủ từ xa
    • Máy chủ từ xa hiện hiển thị dấu thời gian của lần truy cập trước
    • Sau đó gửi set-cookie
      <?php
      // (A) OUTPUT COOKIE ON REMOTE SERVER
      echo "REMOTE SERVER COOKIE - ";
      print_r($_COOKIE);
       
      // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
      setcookie("Test", date("Y-m-d H:i:s"));
      4 trở lại máy chủ cục bộ
    • Máy chủ cục bộ cập nhật 
      <?php
      // (A) OUTPUT COOKIE ON REMOTE SERVER
      echo "REMOTE SERVER COOKIE - ";
      print_r($_COOKIE);
       
      // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
      setcookie("Test", date("Y-m-d H:i:s"));
      4 trong tệp
      <?php
      // (A) OUTPUT COOKIE ON REMOTE SERVER
      echo "REMOTE SERVER COOKIE - ";
      print_r($_COOKIE);
       
      // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
      setcookie("Test", date("Y-m-d H:i:s"));
      6

 

 

2) CÀI ĐẶT COOKIES THỦ CÔNG

2-bộ-cookie. php

curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');
6

Đây là ví dụ tương tự như trên, nhưng với một dòng khác của

curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');
61 để nối thêm dữ liệu. Theo dõi những điều trên

  • Máy chủ cục bộ sẽ đọc từ
    <?php
    // (A) OUTPUT COOKIE ON REMOTE SERVER
    echo "REMOTE SERVER COOKIE - ";
    print_r($_COOKIE);
     
    // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
    setcookie("Test", date("Y-m-d H:i:s"));
    6, nối thêm
    curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');
    63 và gửi chúng đến máy chủ từ xa
  • Máy chủ từ xa hiện sẽ hiển thị các giá trị cookie của
    curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');
    64
  • Lưu ý phần phản hồi – Máy chủ từ xa chỉ cho biết set-cookie
    <?php
    // (A) OUTPUT COOKIE ON REMOTE SERVER
    echo "REMOTE SERVER COOKIE - ";
    print_r($_COOKIE);
     
    // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
    setcookie("Test", date("Y-m-d H:i:s"));
    4. Vì vậy, máy chủ cục bộ sẽ chỉ cập nhật
    <?php
    // (A) OUTPUT COOKIE ON REMOTE SERVER
    echo "REMOTE SERVER COOKIE - ";
    print_r($_COOKIE);
     
    // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
    setcookie("Test", date("Y-m-d H:i:s"));
    3 trong
    <?php
    // (A) OUTPUT COOKIE ON REMOTE SERVER
    echo "REMOTE SERVER COOKIE - ";
    print_r($_COOKIE);
     
    // (B) SEND HEADER - UPDATE "TEST" COOKIE TIMESTAMP
    setcookie("Test", date("Y-m-d H:i:s"));
    6;

 

 

3-cookie-xóa. php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');

$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
5

Cuối cùng, chỉ là một đề cập nhanh – Nếu bạn cần xóa hoặc làm trống cookie, hãy sử dụng các tùy chọn

curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');
69 hoặc
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');

$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
50 để thực hiện

 

 

BIT BỔ SUNG & LIÊN KẾT

Đó là tất cả cho hướng dẫn chính và đây là một phần nhỏ về một số tính năng bổ sung và liên kết có thể hữu ích cho bạn

 

LIÊN KẾT và THAM KHẢO

  • CURL – PHP
  • Tùy chọn CURL – PHP
  • Cookie – PHP

 

BẢNG CHEAT INFOGRAPHIC

Cảm ơn bạn đã đọc, và chúng tôi đã đi đến cuối. Tôi hy vọng rằng nó đã giúp bạn hiểu rõ hơn và nếu bạn muốn chia sẻ bất cứ điều gì với hướng dẫn này, vui lòng bình luận bên dưới. Chúc may mắn và mã hóa hạnh phúc

Ở yêu cầu đầu tiên, đặt CURLOPT_COOKIEJAR thành tên của tệp để lưu trữ cookie trong . Trong các yêu cầu tiếp theo, hãy đặt CURLOPT_COOKIEFILE thành cùng tên tệp và cURL đọc cookie từ tệp và gửi chúng cùng với yêu cầu.

Bánh quy cuộn tròn là gì?

curl có thể chỉ định và lưu trữ các cookie gặp phải trong quá trình vận hành HTTP . Tùy chọn -cookie COOKIE_IDENTIFER chỉ định loại cookie nào sẽ cung cấp. Cookies được định nghĩa là name=value. Nhiều cookie phải được phân tách bằng dấu chấm phẩy ( ; ). $ cuộn tròn http. //thí dụ. com --cookie "user=username;pass=hack"

PHP có cuộn tròn không?

cURL là thư viện PHP và công cụ dòng lệnh (tương tự như wget) cho phép bạn gửi và nhận tệp qua HTTP và FTP. Bạn có thể sử dụng proxy, truyền dữ liệu qua kết nối SSL, đặt cookie và thậm chí nhận các tệp được bảo vệ bằng thông tin đăng nhập.

Các tùy chọn cuộn tròn trong PHP là gì?

Hàm cURL ¶ .
curl_close — Đóng phiên cURL
curl_copy_handle - Sao chép một điều khiển cURL cùng với tất cả các tùy chọn của nó
curl_errno - Trả về số lỗi cuối cùng
curl_error - Trả về chuỗi chứa lỗi cuối cùng cho phiên hiện tại
curl_escape — URL mã hóa chuỗi đã cho
curl_exec - Thực hiện phiên cURL