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

Hướng dẫn dùng php serve trong PHP

Tìm hiểu về Webserver, PHPPHP – Hypertext Preprocessor là một ngôn ngữ lập trình kịch bản được chạy ở phía server nhằm sinh ra mã html trên client. PHP đã có ...

Hướng dẫn dùng php definition trong PHP

Define - Defined và Const là gì trong PHP - Tìm hiểu về hằng số trong PHP, giống và khác nhau giữa Define - defined và const trong php. Bài viết này sẽ làm rõ các vấn ...

Hướng dẫn php oci

Đã đăng vào thg 3 23, 2019 11:40 SA 3 phút đọc Chào các bạn, hôm nay mình muốn hướng dẫn các bạn cách thêm Oracle driver vào PHP module, với mục đích là PHP có ...

Hướng dẫn dùng $substr trong PHP

Hàm substr[] sẽ trích xuất một phần của chuỗi, phần chuỗi được trích xuất sẽ tùy thuộc vào tham số truyền vào.Bài viết này được đăng tại ...

Hướng dẫn postgresql execute php script

SUMMARY: This article reviews the steps necessary for connecting to a PostgreSQL database using PHP.1. Installing PHP2. Connecting to the PostgreSQL from PHP a. PHP ...

Hướng dẫn dùng gz man trong PHP

Tôi muốn gzip nén một tệp trên máy chủ của mình bằng PHP. Có ai có một ví dụ sẽ nhập một tệp và xuất một tệp nén không?phpcompressiongzip 57 hữu ích 0 ...

Hướng dẫn dùng php var trong PHP

Bài này sẽ giới thiệu biến [variable] và hằng [constant] trong PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với ...

Hướng dẫn dùng fflush stdout trong PHP

Hàm fflush[] trong C Hàm fflush[] trong C được sử dụng để đẩy hết những ký tự có trong buffer ra stream. Sau khi gọi hàm fflush[] thì buffer sẽ trống, đảm ...

Hướng dẫn dùng php conversion trong PHP

Home » CodeLỗi “Array to string conversion trong PHP” xảy ra khi bạn cố gắng echo/ print một mảng giống như một chuỗi. Vì câu lệnh echo và print được sử dụng ...

Hướng dẫn dùng assert meaning trong PHP

Trong bài đầu tiên của series này, chúng ta đã đi qua cách cài đặt và cấu hình PHPUnit cho 1 project PHP, một số conventions khi thực hiện Unit test trong PHP và trải ...

Hướng dẫn dùng c sleep trong PHP

Có những lúc trong công việc lập trình ta cần mã tạm dừng theo một thời gian định trước thì trong php có hỗ trợ hàm sleep để các bạn làm điều này. Mục ...

Hướng dẫn dùng decimal integer trong PHP

Trong hướng dẫn này, bạn sẽ tìm hiểu về các kiểu dữ liệu có sẵn trong PHP như Int, String, Float, Number, Double, Boolean, Array, Object…Các kiểu dữ liệu trong ...

Hướng dẫn what is php pdo

Nếu bạn là một PHP Developer, chắc hẳn bạn đã rất quen thuộc với việc truy xuất Database [Cơ sở dữ liệu] bằng các extensions MySQL và MySQLi. Từ PHP 5.1 ta có ...

Hướng dẫn dùng rfc 7159 trong PHP

Định Nghĩa.Cú pháp.Cú pháp:Trong đó:Giá trị trả về.Sự thay đổi trên các phiên bản. Ví dụ.Ví dụ 1 dùng hàm json_decode[] bình thương.code: Kết quả:Ví dụ 2 ...

Hướng dẫn dùng php webserver trong PHP

Tìm hiểu về Webserver, PHPPHP – Hypertext Preprocessor là một ngôn ngữ lập trình kịch bản được chạy ở phía server nhằm sinh ra mã html trên client. PHP đã có ...

answer

114

Từ CLI

PHP = 5.3.0

$localIP = getHostByName[getHostName[]];

114 hữu ích 5 bình luận chia sẻ

answer

62

62 hữu ích 4 bình luận chia sẻ

answer

32

Đây là một bài viết cũ, nhưng hãy lấy nó với cái này:

function getLocalIp[]
{ return gethostbyname[trim[`hostname`]]; }

Ví dụ:

die[ getLocalIp[] ];

Tìm thấy nó trên một trang web khác, không gỡ bỏ lệnh trim vì nếu không bạn sẽ nhận được tên máy tính.

BACKTICKS [Dấu ngoặc kép]: Nó hoạt động vì PHP sẽ cố gắng chạy bất cứ thứ gì nằm giữa các "dấu ngoặc kép" [dấu ngoặc kép] đó như một lệnh shell và trả về kết quả đầu ra.

gethostbyname[trim[`hostname`]];

Rất giống [nhưng hiệu quả hơn nhiều] so với làm:

$exec = exec["hostname"]; //the "hostname" is a valid command in both windows and linux
$hostname = trim[$exec]; //remove any spaces before and after
$ip = gethostbyname[$hostname]; //resolves the hostname using local hosts resolver or DNS

32 hữu ích 4 bình luận chia sẻ

answer

24

hãy thử điều này [nếu máy chủ của bạn là Linux]:

$command="/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'";
$localIP = exec [$command];
echo $localIP;

24 hữu ích 4 bình luận chia sẻ

answer

24

Một cách đáng tin cậy để lấy địa chỉ IP bên ngoài của máy cục bộ là truy vấn bảng định tuyến, mặc dù chúng ta không có cách nào trực tiếp để thực hiện điều đó trong PHP.

Tuy nhiên, chúng tôi có thể yêu cầu hệ thống làm điều đó cho chúng tôi bằng cách liên kết ổ cắm UDP với một địa chỉ công cộng và lấy địa chỉ của nó:

$sock = socket_create[AF_INET, SOCK_DGRAM, SOL_UDP];
socket_connect[$sock, "8.8.8.8", 53];
socket_getsockname[$sock, $name]; // $name passed by reference

// This is the local machine's external IP address
$localAddr = $name;

socket_connect sẽ không gây ra bất kỳ lưu lượng mạng nào vì đó là ổ cắm UDP.

24 hữu ích 4 bình luận chia sẻ

answer

16

Phụ thuộc vào ý bạn muốn nói đến từ địa phương:

Nếu địa chỉ của bạn là địa chỉ của máy chủ / hệ thống thực thi mã PHP, thì vẫn còn hai cách để thảo luận. Nếu PHP đang được chạy thông qua một máy chủ web, thì bạn có thể lấy địa chỉ máy chủ bằng cách đọc $_SERVER['SERVER_ADDR']. Nếu PHP đang được chạy thông qua một giao diện dòng lệnh, thì bạn có thể phải thực thi trình bao ipconfig[Windows] / ifconfig[* nix] và gửi địa chỉ ra.

Nếu địa chỉ của bạn là địa chỉ từ xa của khách truy cập trang web, nhưng không phải là địa chỉ IP bên ngoài của họ [vì bạn đã nói cụ thể là 192. *], thì bạn đã không gặp may. Toàn bộ điểm của định tuyến NAT là ẩn địa chỉ đó. Bạn không thể xác định địa chỉ cục bộ của từng máy tính sau địa chỉ IP, nhưng có một số thủ thuật [tác nhân người dùng, có thể là địa chỉ mac] có thể giúp phân biệt nếu có nhiều máy tính truy cập từ cùng một IP.

16 hữu ích 2 bình luận chia sẻ

answer

10

tên máy chủ [1] có thể cho biết địa chỉ IP: hostname --ip-addresshoặc như người ta nói, tốt hơn là sử dụnghostname --all-ip-addresses

10 hữu ích 0 bình luận chia sẻ

answer

6

Bạn có thể thử điều này với tư cách là người dùng thông thường trong CLI trên máy chủ Linux:

function get_local_ipv4[] {
  $out = split[PHP_EOL,shell_exec["/sbin/ifconfig"]];
  $local_addrs = array[];
  $ifname = 'unknown';
  foreach[$out as $str] {
    $matches = array[];
    if[preg_match['/^[[a-z0-9]+][:\d{1,2}]?[\s]+Link/',$str,$matches]] {
      $ifname = $matches[1];
      if[strlen[$matches[2]]>0] {
        $ifname .= $matches[2];
      }
    } elseif[preg_match['/inet addr:[[?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d][?:[.][?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d]]{3}]\s/',$str,$matches]] {
      $local_addrs[$ifname] = $matches[1];
    }
  }
  return $local_addrs;
}

$addrs = get_local_ipv4[];
var_export[$addrs];

Đầu ra:

array [
  'eth0' => '192.168.1.1',
  'eth0:0' => '192.168.2.1',
  'lo' => '127.0.0.1',
  'vboxnet0' => '192.168.56.1',
]

6 hữu ích 2 bình luận chia sẻ

answer

5

$localIP = gethostbyname[trim[exec["hostname"]]];

Tôi đã thử trong máy tính Windows và nó đã hoạt động và cũng nghĩ rằng Sẽ hoạt động trên Linux.

5 hữu ích 0 bình luận chia sẻ

answer

4

Nó rất đơn giản và những câu trả lời ở trên là những thứ phức tạp. Đơn giản là bạn có thể lấy cả địa chỉ ip cục bộ và địa chỉ IP công cộng bằng cách sử dụng phương pháp này.

   

4 hữu ích 0 bình luận chia sẻ

answer

2

Nó là một trong những dễ dàng. Bạn có thể lấy tên máy chủ bằng mã đơn giản này.

$ip = getHostByName[getHostName[]];

Hoặc bạn cũng có thể sử dụng $_SERVER['HTTP_HOST']để lấy tên máy chủ.

2 hữu ích 0 bình luận chia sẻ

answer

1

Tôi đã tìm câu hỏi này cho một php phía máy chủ [chạy từ thiết bị đầu cuối Linux]

Tôi đã phát nổ 'ifconfig' và cắt nó xuống địa chỉ IP.

Nó đây:

$interface_to_detect = 'wlan0';
echo explode[' ',explode[':',explode['inet addr',explode[$interface_to_detect,trim[`ifconfig`]][1]][1]][1]][0];

Và tất nhiên thay đổi 'wlan0' thành thiết bị mạng mong muốn của bạn.

Đầu ra của tôi là:

192.168.1.5

1 hữu ích 0 bình luận chia sẻ

answer

0

Nếu bạn đang ở trong môi trường nhà phát triển trên OS X, được kết nối qua Wifi:

echo exec["/sbin/ifconfig en1 | grep 'inet ' | cut -d ' ' -f2"];

0 hữu ích 0 bình luận chia sẻ

answer

0

$_SERVER['SERVER_NAME']

Nó đã làm việc cho tôi.

0 hữu ích 0 bình luận chia sẻ

answer

0

Trong cửa sổ

$exec = 'ipconfig | findstr /R /C:"IPv4.*"';
exec[$exec, $output];
preg_match['/\d+\.\d+\.\d+\.\d+/', $output[0], $matches];
print_r[$matches[0]];

0 hữu ích 0 bình luận chia sẻ

answer

-4

$_SERVER['REMOTE_ADDR']
  • PHP_SELF Trả về tên tệp của tập lệnh hiện tại với đường dẫn liên quan đến gốc

  • SERVER_PROTOCOL Trả về tên và bản sửa đổi của giao thức do trang yêu cầu

  • REQUEST_METHOD Trả về phương thức yêu cầu được sử dụng để truy cập trang

  • DOCUMENT_ROOT Trả về thư mục gốc mà tập lệnh hiện tại đang thực thi

-4 hữu ích 1 bình luận chia sẻ

answer

-6

Thử cái này

$localIP = gethostbyname[trim['hostname']];

-6 hữu ích 0 bình luận chia sẻ

Bài Viết Liên Quan

Chủ Đề