Hướng dẫn dùng resolve hostname trong PHP

Asked 12 years, 11 months ago

Viewed 16k times

How can I resolve an IP address to a hostname using PHP?

asked Oct 5, 2009 at 9:59

You can use the gethostbyaddr() function.

$hostname = gethostbyaddr($ipAddress);

answered Oct 5, 2009 at 10:01

GregGreg

309k53 gold badges365 silver badges328 bronze badges

Use gethostbyaddr()

$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);

echo $hostname;

You might find that this function can hang for some time when an address is not found - if this becomes a performance issue for you, check this manual comment which details a hand-coded method which supports a timeout.

Josh

10.9k11 gold badges66 silver badges105 bronze badges

answered Oct 5, 2009 at 10:01

Paul DixonPaul Dixon

290k50 gold badges309 silver badges344 bronze badges

answered Oct 5, 2009 at 10:01

You should give gethostbyaddr() a shot.

answered Oct 5, 2009 at 10:01

KB22KB22

6,7298 gold badges42 silver badges52 bronze badges

Not the answer you're looking for? Browse other questions tagged php or ask your own question.

php connect to mysql là một trong những từ khóa được search nhiều nhất về chủ đề php connect to mysql . Trong bài viết này, lamweb.vn sẽ viết bài viết  Hướng dẫn cài php connect to mysql mới nhất 2020

Mục lục

  • 1 Hướng dẫn cài php connect to mysql mới nhất 2020
    • 1.1 Bước 1 — Tạo MySQL Database
    • 1.2 Bước 2 — vạch code để gắn kết PHP với MySQL database
      • 1.2.1 MySQLi
      • 1.2.2 PDO
      • 1.2.3 Bước 3 — kiểm tra kết nối và fix lỗi phổ biến
      • 1.2.4 fix lỗi PHP MySQL Connection: access denied for người dùng
      • 1.2.5 sửa lỗi PHP MySQL Connection: connection failed. Can’t connect lớn MySQL server
      • 1.2.6 Với MySQLi:
      • 1.2.7 Với PDO:
      • 1.2.8 Lời kết

Bước 1 — Tạo MySQL Database

Bước này quan trọng trong trường hợp nếu bạn chưa có MySQL database. Tại Hostinger, MySQL database đủ nội lực được tạo dễ dàng trong phần MySQL Databases. Nếu cần, bạn có thể đọc thêm chỉ dẫn tạo MySQL database trên cPanel(tiếng Anh).

Khi bạn đang vào trong phần MySQL Databases, nhập thông tin và bấm nút Create.

QUAN TRỌNG: Lưu lại thông tin bạn vừa điền. Bạn cần nó để liên kết cơ sở dữ liệu trong php ở bước tiếp theo.

Bước 2 — vạch code để gắn kết PHP với MySQL database

Bạn đang mong muốn kết nối cơ sở dữ liệu trong php tức là ở web cần có một PHP code để thực thi việc này. Ở gợi ý này, database đủ nội lực u266072517_name và người dùng database liên quan là u266072517_user. Bạn cũng cần biết mật khẩu, trong trường hợp này mật khẩu chúng tôi đặt ở Bước 1 là buystuffpwd.

Bạn cũng cần phải điền đúng servername hoặc hostname. Ở Hostinger, MySQL hostname cũng đặt trong mục MySQL Databases. Trong gợi ý này, hostname sẽ là: mysql.hostinger.com.

Ở trường hợp khi bạn muốn kết nối mysql với php tại máy local (script quét database của website đặt cùng server với database), bạn có thể dùng tên gọi localhost để đặt cho hostname. Nếu không đúng, hoặc nếu bạn vừa mới kết nối php với mysql database từ xa (script liên kết và cơ sở dữ liệu không nằm trong cùng một server), bạn có thể phải sử dụng địa chỉ IP address của database server hoặc hostname của database. Để biết thêm thông tin chi tiết, hãy liên hệ nhà cung cấp hosting của bạn để được phân phối đúng thông tin về hostname.

cho đến nay có 2 phương thức để gắn kết tới cơ sở dữ liệu MySQL là MySQLi và PDO. Một thay đổi quan trọng là cả 2 bí quyết đều đang hỗ trợ ‘prepared statements’, giúp gia tăng cường mức độ chống SQL injection khi gắn kết mysql với php để chỉnh sửa thông tin. Function cũ ‘mysql_’ vừa mới bị deprecated (lỗi thời) và không còn được sử dụng và phát triển nữa, vì nó hoàn toàn không an toàn.

MySQLi vạch tắt của MySQL Improved, nó thêm chức năng trong giao diện của MySQL. PDO vạch tắt của cụm PHP Data Object. khác biệt chính giữa PDO và MySQLi là PDO support nhiều loại database không giống nhau (MySQL, MS SQL, Postgre DB) trong cùng một scrip, bạn chỉ cần vạch các hàm liên quan đến dữ liệu một lần. PDO là ‘object oriented’ (hướng đối tượng), gắn kết giữa web và database được tạo bởi các biến thị trườnggợi ý khi tạo một object:

  1. $my_Object = new OBJECT();

MySQLi

Sau đây là gợi ý cơ bản mẹo get database của web qua một PHP code đơn giản:

  1. $servername = “mysql.hostinger.com”;
  2. $database = “u266072517_name”;
  3. $username = “u266072517_user”;
  4. $password = “buystuffpwd”;
  5. // Create connection
  6. $conn = mysqli_connect($servername, $username, $password, $database);
  7. // check connection
  8. if(!$conn)
  9. die(“Connection failed: ” . mysqli_connect_error());
  10. echo “Connected successfully”;
  11. mysqli_close($conn);
  12. ?>

phương thức chính của script này là hàm mysqli_connect(). Đây là hàm PHP, bạn có thể tìm hiểu thêm tại đây.

Ở đầu code, chúng ta thấy có các biến khai báo và trị giá được cấp cho chúng. Thông thường, chúng ta cần bốn biến để thiết lập gắn kết cơ sở dữ liệu trong php code: $servername, $database, $username và $password. Trong code này, chúng tôi vừa mới đặt thông tin database chính xác cho những biến này, để sau này khi dùng hàm mysqli_connect() chúng tôi đủ nội lực dùng biến này để đưa cho hàm này.

kế tiếp hàm mysqli_connect() sẽ thử xây dựng gắn kết tới tới database bằng thông tin vừa mới được cấp trong code, phần tiếp theo là code sẽ thực thi nếu hàm mysqli_connect() thực hiện thành đạtgiống như bạn thấy, sau khi kết nối thành đạt, nó sẽ liên tục với hàm sau:

  1. if($conn->connect_error)
  2. die(“Connection failed: ” . $Conn->connect_error);

Function die() được thực thi tai đây, nó sẽ hủy script và cho kết quả mà ta đặt ra. Mặc định nó sẽ hiện Connection failed: và kèm theo một thông báo lỗi để ta biết lỗi do đâu.

Nếu liên kết thành đạt, phần code sau sẽ được thực thi.

  1. echo “Connected successfully”;

dạng này chỉ đơn giản hiện thông báo mà ta vừa mới định sẵn, vì trước đó chúng ta đang sử dụng hàm IF chỉ được click hoạt khi gắn kết lỗi.

Phần cuối cùng của code là:

  1. mysqli_close($conn);

Nó sẽ đóng gắn kết. Nếu k có dạng này, gắn kết sẽ tự đóng sau khi script chấm dứt. Bạn đủ sức dùng dạng này để đóng liên kết với database trước khi script chấm dứt.

Bạn cũng có thể chạy code bằng hướng dẫn truy cập script từ tên miền.

PDO

Một liên kết PDO database cần tạo ‘PDO object’ với Data Source Name (DSN), username và password. DSN định nghĩa loại database của bạn, tên database, và bất kỳ thông tin nào quan trọng không giống. DSN có thể là một biến cơ bản được sử dụng sử dụng tham số khi tạo PDO object, được hiển thị giống như code bên dưới.

PDO hỗ trợ nhiều loại database khác nhau và DSN là ngành định nghĩ nhiều gắn kết không giống nhau, thay thế dạng ‘mysql:’ với tên loại database không giống. Trên thực tiễn, script đủ sức giúp người dùng lựa chọn gắn kết nào cần được dùng và vạch code lựa chọn biến thích hợp trong DSN. Trong bài tut này, chúng tôi sẽ lựa chọn dùng MySQL. Đây là hướng dẫn get database của website dựa trên PHP và MySQL.

Khi tạo PDO object sử dụng cho database connection, bạn đủ nội lực đổi nó thành mã ‘try…catch…’ . Có nghĩa là script này sẽ thử gắn kết dùng code được định hình, nếu có chủ đề, code trong phần ‘catch’ sẽ chạy. Bạn có thể sử dụng catch block để hiển thị mã báo lỗi hoặc chay code khác nếu tiến trình thử fail. Trong gợi ý của chúng ta, một mã báo lỗi đơn giản sẽ hiện ra để báo lỗi khi có thông tin nào không chính xác.

  1. $servername = “mysql.hostinger.com”;
  2. $username = “u266072517_user”;
  3. $database = “u266072517_name”;
  4. $password = “buystuffpwd”;
  5. // Create a new connection lớn the MySQL database using PDO
  6. $conn = new mysqli($servername, $username, $password);
  7. // kiểm tra connection
  8. if($conn->connect_error)
  9. die(“Connection failed: ” . $Conn->connect_error);
  10. echo “Connected successfully”;
  11. ?>

Bước 3 — kiểm tra kết nối và fix lỗi phổ biến

Nếu code gắn kết PHP với mysql thành công và không gặp vấn đề nào không giống, bạn sẽ thấy thông báo này sau khi truy cập vào website:

Trong trường hợp kết nối bị lỗi, bạn sẽ thấy thông báo không giống. Mã lỗi có thể hơi không giống giữa MySQLi và PDO.

fix lỗi PHP MySQL Connection: access denied for người dùng

gợi ý, nếu bạn điền k đúng mật khẩu cơ sở dữ liệu, lỗi sẽ hiện như sau:

Lỗi trên MySQLi:

Lỗi trên PDO:

Vậy trong trường hợp xem lỗi này, điều trước hết cần tra cứu thông tin mật khẩu của database. Lỗi thông thường là do điền sai mật khẩu database. Một lý do không giống đủ nội lực là bạn chưa có người dùng được gán cho database. Trong control panel của Hostinger, thông tin database và mật khẩu đủ sức đặt lại trong mục MySQL Databases:

Và trong cPanel, bạn sẽ thấy thông tin giống như bên dưới, hãy chắc là bạn đã gán người dùng cho database:

sửa lỗi PHP MySQL Connection: connection failed. Can’t connect lớn MySQL server

Với MySQLi:

Can’t connect to MySQL server on ‘server’ (110) có nghĩa là script k thể tìm mẹo get database của website do server database không feedback. Lỗi này xảy ra đủ nội lực chúng ta đặt sai tên server. đủ sức do chúng ta vẫn để tên server mặc định là localhost thay vì là tên server được cấp bởi nhà cung cấp hosting.

Với PDO:

  • [HY000] có nghĩa là lỗi chung.
  • [2002] nghĩa là k thể liên kết tới MySQL server local. Phần còn lại của mã lỗi là thông tin thêm, giải thích rằng “host” không thể được tìm thấy.

bên cạnh đó, khi sửa lỗi, hãy tra cứu mã lỗi (tiếng Anh) được lưu trong file báo lỗi. Bạn có thể tìm thấy nó trong cùng thư mục script đã chạy. ví dụ, nếu chúng ta vừa mới chạy script trong thư mục public_html, bạn sẽ thấy file error_log cũng ở thư mục public_html.

xây dựng nó lên, bạn sẽ thấy lỗi khi script liên kết cơ sở dữ liệu trong php tạo ra, nó sẽ làm bạn tìm phương pháp sửa lỗi kết nối database.

Lời kết

Trong bài tut này, chúng tôi vừa mới hướng dẫn cơ bản cách kết nối php tới MySQL database bằng mẹo sử dụng MySQLi và PHP Data Objects (PDO). Bạn đủ nội lực sử dụng ebook này phối hợp với các script nâng cao không giống, nhưng hãy sử dụng bước này thành đạt vì gắn kết cơ sở dữ liệu trong php trước là bước đầu tiên trong quá trình thao tác với database.

Xem thêm :

Tổng hợp plugin tìm kiếm cho wordpress mới nhất 2020

Hướng dẫn chèn quảng cáo vào wordpress mới nhất 2020