Trong một số biểu mẫu và ứng dụng php đăng ký, chúng tôi cần tải lên hình ảnh. Thí dụ. Đối với tải lên ảnh hồ sơ, tải lên ảnh thư viện, ảnh sản phẩm, v.v. Show
Có 2 cách chèn ảnh vào mysql
Sử dụng định dạng nhị phânKiểu này ta chèn trực tiếp ảnh vào bảng mysql dùng định dạng nhị phân Sử dụng tải lên hình ảnh trong thư mụcVới kiểu này ta upload ảnh vào 1 thư mục và lưu tên ảnh vào bảng MySql Để chèn hình ảnh vào MySQL trước tiên chúng ta phải tạo một bảng trong cơ sở dữ liệu CREATE TABLE `image` ( `id` int(11) NOT NULL, `image` varchar(55) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; mục lục. phpInsert Image in MySql using PHP Upload tải lên. phpCREATE TABLE `image` ( `id` int(11) NOT NULL, `image` LONGBLOB NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Ở đây chúng ta sử dụng 1 file chèn ảnh trong MySQL
Sử dụng định dạng nhị phânInsert Image in MySql using PHP Upload báo cáo quảng cáo này báo cáo quảng cáo này Trong hướng dẫn nhanh này, chúng tôi thiết lập một biểu mẫu HTML cơ bản để tải lên hình ảnh bằng PHP, chúng tôi cũng khám phá cách bảo mật tập lệnh PHP của mình để tập lệnh không bị lạm dụng bởi những người dùng độc hại Thiết lập biểu mẫu tải lên hình ảnhChúng tôi bắt đầu với một hình thức cơ bản Biểu mẫu chứa nút gửi và có thuộc tính CREATE TABLE `image` ( `id` int(11) NOT NULL, `image` LONGBLOB NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;5. Thuộc tính hành động trỏ đến trang mà biểu mẫu sẽ đăng tất cả nội dung của nó lên khi nhấp vào nút gửi
Biểu mẫu đăng lên một tệp PHP có tên là CREATE TABLE `image` ( `id` int(11) NOT NULL, `image` LONGBLOB NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;6. Tập tin này sẽ xử lý việc tải lên hình ảnh. Chúng tôi sẽ nhận được điều đó trong một phút Để cho phép người dùng chọn tệp, chúng tôi thêm trường nhập tệp
Đồng thời, chúng tôi cũng đã thêm thuộc tính biểu mẫu và đặt nó thành 1. Điều này là cần thiết nếu chúng tôi có trường nhập tệp trong biểu mẫu của mìnhBởi vì chúng tôi chỉ tải lên hình ảnh, chúng tôi thêm thuộc tính 2 vào phần tử đầu vào tệp và đặt nó thành 3 để yêu cầu nó chỉ chấp nhận các tệp có kiểu bắt chước bắt đầu bằng 4, như 5 hoặc 6Hãy viết trình xử lý tải lên hình ảnh PHP tiếp theo Xử lý tải lên hình ảnh PHPChúng tôi sẽ tạo một tệp mới có tên là CREATE TABLE `image` ( `id` int(11) NOT NULL, `image` LONGBLOB NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;6 trong cùng thư mục với trang chứa biểu mẫu của chúng tôi Tiếp theo, chúng tôi tạo một thư mục có tên là 8, cũng trong cùng một thư mục. Đây là nơi tập lệnh của chúng tôi sẽ lưu trữ các tệp hình ảnh đã tải lên bằng hàm 9Insert Image in MySql using PHP Upload5 Đã được thực hiện. Đây là tất cả những gì cần thiết để làm cho nó hoạt động Thật không may, không phải tất cả mọi người trên internet là một vị thánh. Tập lệnh của chúng tôi hiện cho phép mọi người tải lên bất kỳ thứ gì, đây là rủi ro bảo mật. Chúng tôi cần đảm bảo mọi người tải lên hình ảnh hợp lệ và không cố làm hại máy chủ của chúng tôi Bảo mật quá trình tải lên hình ảnhChúng tôi sẽ đảm bảo thêm ba điều này theo thứ tự
Đảm bảo tệp là một hình ảnhHãy bắt đầu bằng cách đảm bảo rằng tệp đã tải lên thực sự là một hình ảnh Sử dụng Insert Image in MySql using PHP Upload50, chúng ta có thể lấy kiểu mô phỏng hình ảnh, hàm trả về Insert Image in MySql using PHP Upload51 khi tệp không phải là hình ảnh Insert Image in MySql using PHP Upload8 Tiếp theo, chúng tôi cần ngăn người dùng tải lên các tệp rất lớn Giới hạn kích thước tệpTrong ví dụ bên dưới, chúng tôi giới hạn kích thước tệp hình ảnh ở mức 5 MB, tất nhiên bạn có thể chọn giới hạn của riêng mình, nhưng ít nhất nên giới hạn nó ở một điểm nhất định để ngăn người dùng tải lên hàng gigabyte dữ liệu trong nỗ lực tấn công DoS Trong thư mục của tập lệnh CREATE TABLE `image` ( `id` int(11) NOT NULL, `image` LONGBLOB NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;6, chúng tôi tạo một tệp Insert Image in MySql using PHP Upload53 và đặt nội dung của nó thành như sau 0 Ngăn yêu cầu vượt quá 5MB, lưu ý rằng yêu cầu này bao gồm các trường khác trong biểu mẫu Bây giờ, hãy đảm bảo rằng người dùng không thể tải lên tệp 0 byte. Chúng tôi sử dụng Insert Image in MySql using PHP Upload55 để đọc kích thước tệp thực tế thay vì dựa vào Insert Image in MySql using PHP Upload56 được báo cáo bởi Insert Image in MySql using PHP Upload57 vì người dùng có thể sửa đổi 4 Bây giờ hãy đảm bảo tên tệp của hình ảnh hợp lệ Bảo vệ chống lại tên tệp độc hạiCác tác nhân độc hại có thể thử tải lên một hình ảnh có tên là Insert Image in MySql using PHP Upload58, tập lệnh PHP của chúng tôi hiện sẽ lưu trữ “hình ảnh” này trong Insert Image in MySql using PHP Upload59 có thể ghi đè lên tệp Insert Image in MySql using PHP Upload80 của chính chúng tôi Chúng tôi có thể cố gắng làm sạch tên tệp hình ảnh, nhưng cách tiếp cận an toàn hơn là tạo tên tệp của riêng chúng tôi Chúng tôi sẽ tạo một số Insert Image in MySql using PHP Upload81 và sử dụng chúng làm tên cho hình ảnh của chúng tôi 9 Bước cuối cùng của chúng tôi là ngăn không cho mã được thực thi trong thư mục Insert Image in MySql using PHP Upload82 của chúng tôi Ngăn chặn thực thi mã trong thư mục hình ảnhTrong thư mục Insert Image in MySql using PHP Upload82 của chúng tôi, chúng tôi tạo một tệp Insert Image in MySql using PHP Upload53 và đặt nội dung của nó thành như sau để ngăn mọi tệp PHP đã tải lên chạy Điều này đảm bảo rằng mã PHP trong thư mục này sẽ không thực thi. Vì vậy, nếu ai đó vẫn quản lý để tải lên tệp PHP, chẳng hạn như tệp PHP được ngụy trang dưới dạng hình ảnh, tệp đó vẫn không chạy CREATE TABLE `image` ( `id` int(11) NOT NULL, `image` LONGBLOB NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;3 Quy trình tải tệp lên của chúng tôi hiện đã được bảo mật. 🎉 Sự kết luậnChúng tôi đã viết một biểu mẫu cơ bản với phần tử nhập tệp, để xử lý việc tải lên, chúng tôi đã tạo một tệp PHP để di chuyển hình ảnh đã tải lên vào một thư mục trên máy chủ. Để đảm bảo quá trình tải lên, chúng tôi đảm bảo rằng tên tệp hợp lệ, kích thước tệp không quá cao và tệp được tải lên thực sự là một hình ảnh Nếu bạn cũng đang muốn thêm chức năng chỉnh sửa hình ảnh vào trường tải tệp lên, bạn có thể sử dụng phần tử Insert Image in MySql using PHP Upload85. Thành phần web do Pintura hỗ trợ này sẽ tự động mở trình chỉnh sửa hình ảnh mạnh mẽ khi hình ảnh được thêm vào trường và cho phép người dùng của bạn chỉnh sửa hình ảnh trước khi tải lên Làm cách nào để tạo một hình ảnh trong PHP?Hàm imagecreate() là một hàm có sẵn trong PHP dùng để tạo một hình ảnh mới. Hàm này trả về hình ảnh trống có kích thước đã cho. Nói chung, hàm imagecreatetruecolor() được sử dụng thay cho hàm imagecreate() vì hàm imagecreatetruecolor() tạo ra hình ảnh chất lượng cao.
Làm cách nào để tải lên hình ảnh trong PHP MySQL?Nhận phần mở rộng tệp bằng hàm pathinfo() trong PHP và xác thực định dạng tệp để kiểm tra xem người dùng có chọn tệp hình ảnh hay không. Tải hình ảnh lên máy chủ bằng hàm move_uploaded_file() trong PHP. Chèn tên tệp hình ảnh vào cơ sở dữ liệu MySQL bằng PHP . Trạng thái tải lên sẽ được hiển thị cho người dùng.
Làm cách nào tôi có thể tải lên hình ảnh từ một URL trong PHP?Nếu url phù hợp thì bằng cách sử dụng hàm file_get_contents() đọc tệp hình ảnh thành một chuỗi. Và cuối cùng bằng cách sử dụng hàm file_get_contents(), chúng ta đã ghi chuỗi hình ảnh vào một tệp . Vì vậy, theo cách này, chúng tôi đã tải lên hình ảnh từ URL bằng cách sử dụng PHP với Ajax. |