Mã php url ngắn

Premium URL Shortener is a script Rút gọn URL PHP được đóng gói với nhiều tính năng độc đáo. Nó cho phép bạn rút ngắn một liên kết dài thành liên kết thông minh ngắn mà bạn có thể sử dụng để theo dõi các lần nhấp và tối ưu hóa các chiến dịch tiếp thị của mình.




Nó cung cấp cho bạn nhiều công cụ độc đáo để nhanh chóng khởi động một trang web rút gọn liên kết. Một số tính năng bao gồm nhắm mục tiêu theo địa lý, nhắm mục tiêu theo thiết bị, tư cách thành viên cao cấp, bảng điều khiển và bảng quản trị mạnh mẽ cùng một loạt công cụ CMS để giúp bạn xây dựng ước mơ của mình . Nó đang được phát triển tích cực trong hơn 8 năm, vì vậy điều này có nghĩa là nó sẽ ngày càng trở nên tốt hơn so với mỗi bản cập nhật [giá đáng kinh ngạc. ].





Bản demo trực tiếp của Trình rút ngắn URL
Bạn có thể kiểm tra tập lệnh bằng thông tin xác thực sau. Đây là tài khoản quản trị viên và người dùng. Sau khi đăng nhập, chỉ cần nhấp vào “Quản trị viên” ở trên cùng để truy cập bảng quản trị. Xin lưu ý rằng bản demo sẽ thiết lập lại mỗi tuần.

Tài khoản quản trị

Email/Tên người dùng. [email được bảo vệ] / quản trị viên

Mật khẩu. adminpass

Trang đăng nhập. Trang lớp phủ. Trang thống kê mẫu

URL ngắn mẫu có khung. URL ngắn mẫu với Splash

Dsplash tùy chỉnh. Trang tùy chỉnh. Bản địa hóa dễ dàng

Một số tính năng tuyệt vời

Thân thiện với xã hội
Phần mềm như một dịch vụ [SaaS]< . 9. 5 [15/11/2020]

Hồ sơ đẹp
Tính năng nhóm
Tên miền tùy chọn
Gói & Công cụ quay vòng liên kết
Splash & trang lớp phủ
Dịch vụ tư nhân
Hệ thống đánh dấu trang URL với Bookmarklet
Lịch sử người dùng ẩn danh
Đăng nhập xã hội
Dịch dễ dàng
Nhắm mục tiêu theo địa lý & Hệ thống nhắm mục tiêu theo thiết bị
Hệ thống API nâng cao
Xác thực URL & Plugin reCaptcha
Bảng quản trị đầy đủ tính năng
Mẫu đáp ứng với Trình chỉnh sửa mẫu tích hợp sẵn
Trình cài đặt nhanh chóng và dễ dàng
Tài liệu cấp doanh nghiệp
Hỗ trợ cao cấp

Link Download Premium URL Shortener Version 5.9.5 [15/11/2020]


LINK FSHARE

Fshare



LIÊN KẾT TẢI LÊN

Tải xuống

 

Gần đây, đồng nghiệp của tôi, Niels, đã viết một bài đăng tuyệt vời cho biết cách xây dựng trình rút ngắn URL bằng cách sử dụng. NET và Redis. Khi đọc nó, tôi đã được truyền cảm hứng đến mức quyết định xây dựng công cụ rút ngắn URL của riêng mình bằng PHP và PostgreSQL thay vì. NET và Redis, vì tôi biết những công nghệ đó tốt hơn nhiều

Vậy điều gì hấp dẫn khi xây dựng một công cụ rút ngắn URL? . ly, ngắn. Dịch vụ rút ngắn liên kết dịch vụ nhắn tin io hoặc Twilio. Thành thật mà nói, khái niệm này chỉ thu hút sự chú ý của tôi và truyền cảm hứng cho tôi

Nó không có tất cả các tính năng mà bạn có thể mong đợi ở một dịch vụ chuyên nghiệp, chẳng hạn như tùy chỉnh URL, phân tích và theo dõi lần nhấp, liên kết có thương hiệu hoặc khả năng thêm CTA [Gọi hành động]. Tuy nhiên, nó có chứa các yếu tố cần thiết

Hướng dẫn điều kiện tiên quyết

Để làm theo cùng với hướng dẫn này, bạn sẽ cần những điều sau đây

  • Docker Engine và Docker Compose HOẶC PHP 8. 1 với các phần mở rộng PDO và PDO_PGSQL được cài đặt và kích hoạt và PostgreSQL 14 trở lên
  • IDE hoặc trình chỉnh sửa mã yêu thích của bạn
  • Trình soạn nhạc được cài đặt trên toàn cầu

Tôi nghĩ rằng tôi nên tiếp cận hướng dẫn này hơi khác so với những hướng dẫn trước đây của tôi và đưa ra lựa chọn chạy ứng dụng với Docker Compose hoặc trực tiếp với máy chủ web tích hợp sẵn của PHP và PostgreSQL

Lý do đằng sau điều này là việc cài đặt PHP và PostgreSQL theo yêu cầu trên máy phát triển cục bộ của bạn có thể mất nhiều thời gian hơn mức cần thiết và khiến bạn mất tập trung vào phần hướng dẫn. Trong khi đó, với Docker Compose, tất cả có thể được thực hiện trong khoảng 60 giây

Tuy nhiên, vui lòng thiết lập PHP và PostgreSQL, nếu đó là điều bạn thích. Bạn có thể tìm thấy lược đồ cơ sở dữ liệu trong kho lưu trữ GitHub đi kèm với hướng dẫn này, cùng với các hướng dẫn khác mà bạn cần trong README của kho lưu trữ. tập tin md

Nếu bạn là người mới sử dụng Docker Compose và muốn được hỗ trợ thêm một chút, thì hãy tải về cuốn sách miễn phí của tôi. Nó có tất cả những gì bạn cần biết để bắt đầu và chạy nhanh chóng

Tổng quan về ứng dụng

Trước khi bạn đi sâu vào phần hướng dẫn, hãy tìm hiểu cách thức hoạt động của ứng dụng. Ứng dụng này sẽ bao gồm ba tuyến đường

  1. Tuyến đầu tiên [mặc định] hiển thị biểu mẫu nơi người dùng có thể nhập URL dài hơn để rút ngắn. Khi gửi, nếu biểu mẫu vượt qua xác thực, thì URL sẽ được rút ngắn. Sau đó, cả URL gốc và URL rút gọn sẽ được lưu trữ trong cơ sở dữ liệu
  2. Tuyến thứ hai truy xuất một URL chưa được rút ngắn từ một URL đã rút ngắn. Nếu tìm thấy URL rút ngắn trong cơ sở dữ liệu, người dùng sẽ được chuyển hướng đến đó. Nếu không, người dùng sẽ được chuyển hướng đến trang 404 của ứng dụng
  3. Lộ trình thứ ba là trang 404 của ứng dụng

Ứng dụng này là một ứng dụng Slim Framework nhỏ bao gồm phần lớn gồm hai lớp. dịch vụ rút ngắn URL [

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
5] và dịch vụ duy trì cơ sở dữ liệu [
mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
6]. Ứng dụng chỉ tương tác trực tiếp với dịch vụ rút ngắn URL, vì dịch vụ đó chứa dịch vụ duy trì cơ sở dữ liệu, một biến thành viên, xử lý tương tác cơ sở dữ liệu

Bây giờ, chúng ta hãy xây dựng

Tạo thư mục dự án

Như [hầu như] luôn luôn, điều đầu tiên cần làm là tạo cấu trúc thư mục của dự án, khá nông và không phức tạp

Để tạo nó, hãy chạy lệnh bên dưới

mkdir -p \
    php-url-shortener/src/{templates,UrlShortener} \
    php-url-shortener/public

Nếu bạn đang sử dụng Microsoft Windows, hãy sử dụng lệnh sau để thay thế

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public

Đặt các biến môi trường cần thiết

Điều tiếp theo cần làm là đặt các biến môi trường mà ứng dụng yêu cầu để tương tác với cơ sở dữ liệu

Tải xuống. env. ví dụ, từ kho lưu trữ GitHub cho dự án này, vào thư mục cấp cao nhất của dự án và đặt tên cho nó. env. Vui lòng thay đổi các giá trị mặc định cho bất kỳ biến nào bắt đầu bằng

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
7 để phù hợp với cấu hình máy chủ PostgreSQL của bạn

Nếu bạn đang sử dụng Docker Compose, đừng thay đổi giá trị của

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
8. Nó phải được đặt thành
mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
9. Ngoài ra, vui lòng không thay đổi các biến bắt đầu bằng
CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
0

Lược đồ cơ sở dữ liệu

Đây là lược đồ cơ sở dữ liệu trong tất cả vinh quang của nó. Chỉ một bảng, có tên là

CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
1 chứa ba cột

  • Dài. Cái này chứa URL dài [gốc]
  • ngắn. Điều này chứa URL rút ngắn
  • created_at. Đây là dấu thời gian được chèn tự động về thời gian hàng được tạo

CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];

Nếu bạn đang sử dụng Docker Compose, cơ sở dữ liệu sẽ được khởi tạo cho bạn khi bạn khởi động ứng dụng. Nếu không, hãy chạy SQL ở trên bằng cách sử dụng psql [thiết bị đầu cuối tương tác của PostgreSQL] hoặc công cụ cơ sở dữ liệu mà bạn chọn [chẳng hạn như DataGrip hoặc công cụ cơ sở dữ liệu trong PhpStorm]

Thêm các phụ thuộc cần thiết

Điều tiếp theo cần làm là thêm tất cả các phụ thuộc mà dự án cần. đó là

Các phụ thuộc PHP bắt buộc DependencyDescriptionlaminas/laminas-dblaminas-db cung cấp lớp trừu tượng hóa cơ sở dữ liệu xuất sắc và triển khai trừu tượng hóa SQL. laminas/laminas-diactoroslaminas-diactoros cung cấp triển khai Thông báo HTTP PSR. Nó được đưa vào vì tôi thấy rằng các lớp phản hồi tùy chỉnh là một cách trực quan để trả về phản hồi từ các yêu cầu. laminas/laminas-inputfilterlaminas-inputfilter lọc và xác thực dữ liệu từ nhiều nguồn, bao gồm tệp, đầu vào của người dùng và API. laminas/laminas-urilaminas-uri giúp thao tác và xác thực URI [Mã định danh tài nguyên thống nhất]. php-di/slim-bridgeSlim Bridge tích hợp PHP-DI, một bộ chứa phụ thuộc [DI] tuyệt vời, với Slim. slim/psr7Thư viện này tích hợp PSR-7 vào ứng dụng. Nó không thực sự cần thiết, nhưng tôi cảm thấy nó làm cho ứng dụng dễ bảo trì và di động hơn. slim/slimĐây là cốt lõi của Slim micro frameworkslim/twig-view Gói này tích hợp công cụ tạo khuôn mẫu Twig giúp việc tạo nội dung phản hồi trở nên dễ dàng hơn. vlucas/phpdotenvPHP dotenv giúp loại bỏ các chi tiết cấu hình nhạy cảm khỏi mã [và kiểm soát phiên bản]

Để cài đặt chúng, hãy chạy lệnh bên dưới

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
0

Thêm bộ nạp tự động PSR-4

Điều tiếp theo mà bạn cần làm là thêm trình tải tự động PSR-4, mà ba lớp mà bạn sẽ viết sẽ cần. Để thêm nó, hãy thêm cấu hình bên dưới, sau thuộc tính yêu cầu trong trình soạn thảo. json

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
1

Sau đó, chạy lệnh bên dưới để cập nhật trình tải tự động của Composer

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
2

Viết mã

Bây giờ, đã đến lúc viết mã

UrlShortenerPersistenceGiao diện

Điều đầu tiên bạn sẽ làm là tạo một giao diện. Chắc chắn, nó không thực sự cần thiết. Nhưng tôi rất tin tưởng vào chương trình giao diện chứ không phải triển khai. Vì vậy, tôi hy vọng bạn sẽ hài hước với tôi về điểm này

Trong src/UrlShortener, tạo một tệp mới có tên UrlShortenerPersistenceInterface. php và trong tệp đó thêm mã bên dưới

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
3

Giao diện xác định ba chức năng

  • CREATE TABLE IF NOT EXISTS urls [
        long   TEXT NOT NULL UNIQUE,
        short  CHARACTER[17] NOT NULL,
        created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
        PRIMARY KEY [long, short],
        UNIQUE[short, long]
    ];
    
    2. truy xuất một URL dài bằng URL ngắn được cung cấp
  • CREATE TABLE IF NOT EXISTS urls [
        long   TEXT NOT NULL UNIQUE,
        short  CHARACTER[17] NOT NULL,
        created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
        PRIMARY KEY [long, short],
        UNIQUE[short, long]
    ];
    
    3. kiểm tra xem có tồn tại một URL ngắn không
  • CREATE TABLE IF NOT EXISTS urls [
        long   TEXT NOT NULL UNIQUE,
        short  CHARACTER[17] NOT NULL,
        created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
        PRIMARY KEY [long, short],
        UNIQUE[short, long]
    ];
    
    4. lưu trữ một tổ hợp URL dài và ngắn trong cơ sở dữ liệu

UrlShortenerDatabaseService

Điều tiếp theo cần làm là tạo một tệp mới khác trong src/UrlShortener có tên UrlShortenerDatabaseService. php và trong tệp đó thêm đoạn mã sau

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
7

Lớp này cung cấp triển khai cụ thể của

CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
5, sử dụng laminas-db để kết nối với phần phụ trợ cơ sở dữ liệu PostgreSQL

Vâng, có các tùy chọn khác trong PHP để tương tác với cơ sở dữ liệu, chẳng hạn như Doctrine, nhưng laminas-db là một thư viện nhỏ mà tôi đã yêu thích trong nhiều năm qua. Nếu bạn muốn biết thêm về nó, hãy xem khóa học laminas-db Pluralsight của tôi [trước đây gọi là "Zend Db"]

CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
2 cố gắng truy xuất bất kỳ URL dài nào [có trong cột có tên
CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
7] từ bảng
CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
1 có URL ngắn [có trong cột
CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
9] khớp với URL ngắn được cung cấp [
mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
00]

CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
3 xác định xem một URL ngắn có tồn tại hay không bằng cách truy xuất tổng số tất cả các hàng trong bảng
CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
1 có giá trị cột
CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
9 khớp với URL ngắn được cung cấp. Cuối cùng,
CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
4 chèn một tổ hợp URL dài và ngắn mới vào bảng
CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
1

Dịch vụ rút ngắn url

Lớp thứ ba và lớp cuối cùng là

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
5. Tạo một tệp mới trong src/UrlShortener có tên là UrlShortenerService. php và trong tệp đó thêm đoạn mã sau

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
0

Như đã đề cập trước đó, đây là lớp mà ứng dụng trực tiếp sử dụng để cung cấp chức năng của nó. Nó được khởi tạo với một đối tượng

CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
5 để nó có thể tương tác với kho dữ liệu phụ trợ. Việc triển khai
CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
2 và
CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
3 của nó chỉ ủy quyền cho các phương thức cùng tên trên đối tượng
CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
5

Tuy nhiên, việc triển khai

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
11 của nó gọi phương thức
mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
12, phương thức này rút ngắn URL gốc/dài được cung cấp trước khi chuyển URL đã rút gọn tới
CREATE TABLE IF NOT EXISTS urls [
    long   TEXT NOT NULL UNIQUE,
    short  CHARACTER[17] NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
    PRIMARY KEY [long, short],
    UNIQUE[short, long]
];
4, duy trì cả URL dài và ngắn trong cơ sở dữ liệu

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
12 sử dụng kết hợp các hàm nền, base64_encode, sha1, random_bytes và uniqid của PHP để tạo URL gồm 9 ký tự. Nó bắt đầu bằng cách tạo 32 byte ngẫu nhiên. Từ các byte ngẫu nhiên đó, nó tạo ra một mã định danh duy nhất có yếu tố trong thời gian hiện tại tính bằng micro giây để giúp đảm bảo tính duy nhất

Sau đó, SHA1 của id duy nhất được tạo, sau đó được mã hóa Base64 để tạo biểu diễn giống như URL của hàm băm. Cuối cùng, chuỗi được cắt bớt chỉ còn chín ký tự đầu tiên nằm trong phạm vi của hầu hết các URL rút ngắn hiện đại và chuỗi đó được trả về

Chắc chắn là tôi không biết liệu sẽ có va chạm hay không và nếu có thì tần suất như thế nào, nhưng điều này không có nghĩa là một triển khai siêu phức tạp

Xin chân thành cảm ơn Nomad PHP vì cốt lõi của chức năng này

Tạo tệp bootstrap

Tiếp theo, đã đến lúc tạo tệp bootstrap, nơi tất cả các yêu cầu tới ứng dụng được định tuyến. Tạo một tệp mới trong chỉ mục có tên công khai. php và trong tệp đó thêm đoạn mã sau

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
9

Mã bắt đầu bằng cách nhập tất cả các danh mục mà nó sẽ sử dụng, cùng với trình tải tự động được tạo tự động của Composer. Sau đó [như tôi thường làm trong các hướng dẫn về Twilio của mình], nó sử dụng PHP Dotenv để nhập các biến môi trường cần thiết từ. env mà bạn đã tạo và điền trước đó

Sau đó, nó khởi tạo phiên bản bộ chứa DI mới [

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
15] và đăng ký ba dịch vụ với bộ chứa

  • Đầu tiên là một phiên bản InputFilter sẽ được sử dụng để lọc và xác thực URL được gửi ở dạng tuyến đường mặc định. Để xác thực thành công, chuỗi đã gửi cần phải là một URL hợp lệ [vì trình xác thực Uri] và chưa tồn tại trong bảng
    CREATE TABLE IF NOT EXISTS urls [
        long   TEXT NOT NULL UNIQUE,
        short  CHARACTER[17] NOT NULL,
        created_at TIMESTAMPTZ NOT NULL DEFAULT NOW[],
        PRIMARY KEY [long, short],
        UNIQUE[short, long]
    ];
    
    1 [vì trình xác thực NoRecordExists]. Ngoài ra, chuỗi sẽ được cắt bớt và loại bỏ bất kỳ thẻ HTML nào
  • Dịch vụ thứ hai cung cấp một đối tượng Bộ điều hợp laminas-db sẽ được sử dụng gián tiếp bởi
    mkdir -p ^
        php-url-shortener/src/templates ^
        php-url-shortener/src/UrlShortener ^
        php-url-shortener/public
    
    5 để nó có thể kết nối với cơ sở dữ liệu
  • Dịch vụ thứ ba cung cấp một đối tượng
    mkdir -p ^
        php-url-shortener/src/templates ^
        php-url-shortener/src/UrlShortener ^
        php-url-shortener/public
    
    5. Điều này nhận một đối tượng TableGateway, được khởi tạo với đối tượng
    mkdir -p ^
        php-url-shortener/src/templates ^
        php-url-shortener/src/UrlShortener ^
        php-url-shortener/public
    
    19, được trả về từ dịch vụ vùng chứa có tên như vậy, cho phép nó tương tác với cơ sở dữ liệu để lưu trữ, kiểm tra và truy xuất cả URL dài và ngắn

Sau đó, một đối tượng Ứng dụng mỏng mới [

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
20] được khởi tạo và chuyển đối tượng bộ chứa DI để mỗi tuyến của ứng dụng có thể truy cập các dịch vụ của bộ chứa. TwigMiddleware được thêm vào đối tượng
mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
21 để mỗi tuyến đã đăng ký có thể trả về phản hồi bằng cách hiển thị các mẫu Twig

Sau đó, hai tuyến đường được xác định. Cái đầu tiên là route mặc định của ứng dụng. Nó chấp nhận cả yêu cầu GET và POST. Nếu tuyến được yêu cầu bằng yêu cầu POST, dữ liệu POST của yêu cầu sẽ được truy xuất và xác thực bằng dịch vụ

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
22. Nếu dữ liệu không xác thực được, hai biến mẫu được đặt

  1. URL được gửi trong biểu mẫu
  2. Lỗi hiển thị tại sao biểu mẫu không xác thực được

Nếu biểu mẫu vượt qua xác thực, thì

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
5 được truy xuất từ ​​vùng chứa và một nỗ lực được thực hiện để rút ngắn URL và duy trì URL đã rút ngắn, cùng với URL ban đầu, vào cơ sở dữ liệu. Nếu thành công, ba biến mẫu được đặt

  1. URL rút gọn
  2. URL ban đầu, dài hơn
  3. Một lá cờ để cho biết rằng biểu mẫu đã được gửi thành công

Tại thời điểm này hoặc nếu tuyến đường được yêu cầu bằng yêu cầu GET, src/templates/default. html. twig được hiển thị với các biến mẫu và được trả về dưới dạng phần thân của phản hồi

Sau đó, đến tuyến đường thứ hai chỉ chấp nhận các yêu cầu GET. Đường dẫn của tuyến đường phải khớp với

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
24 theo sau là chín ký tự. Đây có thể là bất kỳ sự kết hợp nào của các chữ cái viết thường hoặc viết hoa giữa A & Z và các số từ 0 đến 9; .
mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
25

Nếu tuyến đường được yêu cầu phù hợp, thì đường dẫn sau dấu gạch chéo lên phía trước được lưu trữ trong một đối số yêu cầu có tên là

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
26. Sau đó, sử dụng dịch vụ
mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
22, URL được xác thực và lọc. Nếu vượt qua xác thực,
mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
5 sẽ kiểm tra xem URL rút gọn có tồn tại trong cơ sở dữ liệu không. Nếu vậy, URL ban đầu được liên kết với nó sẽ được truy xuất và trả về. Mặt khác, phản hồi HTTP 404 được trả về, cho người dùng biết rằng không tìm thấy URL rút ngắn

Sau đó, lỗi phần mềm trung gian được thêm vào từng yêu cầu và được xử lý bởi một chức năng ẩn danh. Phần mềm trung gian này ở đó để xử lý các phản hồi 404 mà ứng dụng hai tuyến đường có thể trả về. Nó làm như vậy bằng cách truy xuất phản hồi đầu tiên từ đối tượng ứng dụng Slim và sau đó đặt phần thân của phản hồi là kết quả của việc hiển thị src/templates/404. html. cành cây mà bạn sẽ sớm thấy

Sau đó, phương thức

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
30 của
mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
20 được gọi để khởi chạy ứng dụng

Tạo các mẫu

Bạn sắp hoàn thành việc xây dựng logic của ứng dụng. Bây giờ là lúc tạo các mẫu Twig cho route mặc định và cho trang 404

Tạo mẫu lõi

Trong src/templates, tạo một tệp mới có tên base. html. cành cây. Trong tệp đó, dán đoạn mã sau

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
0

Mẫu này cung cấp nội dung chung cho cả hai mẫu tôi. e. , các phần tử đầu, nội dung và chân trang. Nếu bạn không quen thuộc với Twig, hãy lưu ý việc sử dụng mã như

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
31

Các khối này tạo thành cơ sở kế thừa mẫu. Đây là nơi một mẫu, một mẫu cơ sở, có thể được mở rộng bởi các mẫu khác. Khi họ làm như vậy, họ có thể đặt nội dung của các khối này theo cách có ý nghĩa trong ngữ cảnh đó. Bạn sẽ sớm thấy các ví dụ về điều này

Tạo mẫu của tuyến đường mặc định

Bây giờ, tạo một tệp mới khác trong src/templates, lần này được đặt tên là default. html. cành cây. Trong tệp đó, dán mã bên dưới

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
1

Đây là mẫu cho tuyến đường mặc định. Nó bắt đầu bằng cách mở rộng cơ sở. html. twig, cho phép nó đặt nội dung sẽ xuất hiện trong bất kỳ khối nào được xác định trong mẫu đó. Cụ thể, nó đặt tiêu đề của trang và tiêu đề H1 thành "PHP Url Shortener". Sau đó, nó đặt nội dung chính của trang thành một dạng nhỏ nơi người dùng có thể nhập URL để rút ngắn

Nếu một URL được rút ngắn thành công, URL được rút ngắn sẽ được hiển thị phía trên biểu mẫu cùng với URL ban đầu. Nếu biểu mẫu không xác thực thành công, thay vào đó, các lỗi xác thực biểu mẫu sẽ được hiển thị phía trên biểu mẫu

Tạo mẫu của trang 404

Cuối cùng, tạo một tệp mới thứ ba trong src/templates, lần này có tên là 404. html. cành cây. Trong tệp đó, dán mã bên dưới

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
2

Như với mẫu của tuyến đường mặc định, mẫu này bắt đầu bằng cách mở rộng cơ sở. html. cành cây. Nó đặt tiêu đề của trang thành "Không tìm thấy URL 404. " và tiêu đề H1 của trang thành "Rất tiếc. URL đó không được tìm thấy". Cuối cùng, nó đặt nội dung thành "Rất tiếc phải nói điều đó, nhưng URL đó không khả dụng. " cùng với một liên kết đến tuyến đường mặc định để người dùng có thể cố gắng rút ngắn một liên kết

Tải xuống biểu định kiểu

Bây giờ, còn một việc cuối cùng cần làm, đó là tải xuống biểu định kiểu từ kho lưu trữ GitHub đi kèm với hướng dẫn này để ứng dụng hiển thị như mong đợi. Tải xuống public/css và đặt tên là styles. css

Kiểm tra xem ứng dụng có hoạt động không

Bây giờ bạn đã hoàn tất việc kết hợp ứng dụng, đã đến lúc kiểm tra xem nó có hoạt động không

Khởi động ứng dụng bằng Docker Compose

Trước khi bạn có thể khởi động ứng dụng, hãy tải xuống kho lưu trữ zip có chứa trình soạn thảo docker. yml và tất cả các tệp hỗ trợ. Sau đó, trích xuất nội dung của nó trong thư mục cấp cao nhất của dự án

Sau đó, khởi động ứng dụng bằng cách chạy lệnh sau

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
3

Nếu không, hãy chạy lệnh sau để sử dụng máy chủ web tích hợp của PHP để chạy ứng dụng

mkdir -p ^
    php-url-shortener/src/templates ^
    php-url-shortener/src/UrlShortener ^
    php-url-shortener/public
4

Bất kể bạn đã khởi động ứng dụng như thế nào, giờ đây nó sẽ khả dụng trên máy chủ cục bộ trên cổng 8080. Mở nó trong trình duyệt bạn chọn, nơi nó sẽ trông giống như ảnh chụp màn hình bên dưới

Bây giờ, chọn một URL để rút ngắn, chẳng hạn như https. //www. youtube. com/watch?v=dQw4w9WgXcQ, nhập nó vào trường văn bản và nhấp vào "Rút ngắn URL". Sau đó, bạn sẽ thấy một xác nhận xuất hiện phía trên trường văn bản hiển thị URL mà bạn đã nhập ở bên trái và URL được rút ngắn, có thể nhấp vào ở bên phải

Nếu bạn nhập một URL đã được rút ngắn hoặc một chuỗi không phải là URL hợp lệ, bạn sẽ thấy lỗi, tương tự như trong ảnh chụp màn hình bên dưới, được hiển thị trong biểu mẫu

Bây giờ, hãy thử mở một URL rút ngắn không tồn tại, chẳng hạn như http. //máy chủ cục bộ. 8080/ztgxody2n_/. Bạn sẽ được chuyển hướng đến trang 404, nơi bạn sẽ thấy rằng không tìm thấy URL, như trong ví dụ bên dưới

Đó là cách xây dựng công cụ rút ngắn URL của riêng bạn bằng PHP và PostgreSQL

Mặc dù đây không phải là công cụ rút ngắn URL phức tạp nhất mà bạn có thể tạo, nhưng đây vẫn là một khởi đầu tốt. bạn sẽ cải thiện nó như thế nào?

Matthew Setter là Trình chỉnh sửa PHP trong nhóm Twilio Voices và là nhà phát triển PHP và Go. Anh ấy cũng là tác giả của Mezzio Essentials và Docker With Docker Compose. Khi anh ấy không viết mã PHP, anh ấy đang chỉnh sửa các bài viết PHP tuyệt vời tại Twilio. Bạn có thể tìm thấy anh ấy tại msetter[at]twilio. com, cũng như trên Twitter và GitHub

"xích" bởi timlewisnm [được sử dụng trong nền của hình ảnh chính của hướng dẫn] được cấp phép theo CC BY-SA 2. 0

Đánh giá bài viết này

1 2 3 4 5

tác giả

  • Matthew Setter

người phản biện

  • Niels Swimberghe

bài viết liên quan

Học ngôn ngữ Maasai theo cách thú vị

Ngày 20 tháng 10 năm 2022

Trong hướng dẫn này, bạn sẽ xây dựng một ứng dụng giúp bạn học ngôn ngữ Maasai một cách dễ dàng và thú vị với WhatsApp

Pub/Sub trong Laravel - Hiểu biết sâu sắc

Ngày 20 tháng 10 năm 2022

Trong hướng dẫn này, bạn sẽ tìm hiểu về Pub/Sub, một mẫu thiết kế phần mềm hướng thông báo và cách triển khai nó trong Laravel

Phát triển ứng dụng Symfony bằng Svelte và Webpack Encore để quản lý lịch sử tin nhắn Twilio của bạn

Ngày 27 tháng 9 năm 2022

Trong bài viết này, bạn sẽ học cách phát triển ứng dụng với Svelte, Webpack Encore và Symfony có thể tương tác với lịch sử tin nhắn Twilio của bạn

Xây dựng trạm thời tiết của riêng bạn với PHP, Python và Raspberry Pi - Phần II

Ngày 08 tháng 9 năm 2022

Trong phần thứ hai của loạt bài này, bạn sẽ tìm hiểu cách thêm khả năng gửi thông báo tóm tắt hàng ngày qua cả SMS và email bằng API Twilio và SendGrid cho trạm thời tiết dựa trên Raspberry Pi

Tạo một lệnh thủ công để xem các cuộc gọi Twilio

Ngày 23 tháng 8 năm 2022

Trong hướng dẫn này, bạn sẽ tìm hiểu cách tạo nguồn cấp tin tức được cá nhân hóa bằng Goutte và API lập lịch trình tin nhắn của Twilio

Chủ Đề