首页 > 编程知识 正文

php地址请求(php获取地址)

时间:2023-11-30 13:13:45 阅读:310777 作者:IYTT

本文目录一览:

  • 1、php如何获取请求接口资源的请求者的IP地址
  • 2、如何用php向服务器发送post请求
  • 3、thinkphp5地址路由请求响应错误
  • 4、php请求url并接收返回值
  • 5、php怎么响应客户端发送http请求

php如何获取请求接口资源的请求者的IP地址

/**

    * 获取客户端IP地址

    * @param integer $type

    * @return mixed

    */

   function getclientip() {

       static $realip = NULL;

        

       if($realip !== NULL){

           return $realip;

       }

       if(isset($_SERVER)){

           if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ //但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。

               $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);

               /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */

               foreach ($arr AS $ip){

                   $ip = trim($ip);

                   if ($ip != 'unknown'){

                       $realip = $ip;

                       break;

                   }

               }

           }elseif(isset($_SERVER['HTTP_CLIENT_IP'])){//HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是"超级匿名代理",则返回none值。同样,REMOTE_ADDR也会被替换为这个代理服务器的IP。

               $realip = $_SERVER['HTTP_CLIENT_IP'];

           }else{

               if (isset($_SERVER['REMOTE_ADDR'])){ //正在浏览当前页面用户的 IP 地址

                   $realip = $_SERVER['REMOTE_ADDR'];

               }else{

                   $realip = '0.0.0.0';

               }

           }

       }else{

           //getenv环境变量的值

           if (getenv('HTTP_X_FORWARDED_FOR')){//但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址

               $realip = getenv('HTTP_X_FORWARDED_FOR');

           }elseif (getenv('HTTP_CLIENT_IP')){ //获取客户端IP

               $realip = getenv('HTTP_CLIENT_IP');

           }else{

               $realip = getenv('REMOTE_ADDR');  //正在浏览当前页面用户的 IP 地址

           }

       }

       preg_match("/[d.]{7,15}/", $realip, $onlineip);

       $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';

       return $realip;

   }

如何用php向服务器发送post请求

用PHP向服务器发送HTTP的POST请求,代码如下:

?php

/**    

 * 发送post请求    

 * @param string $url 请求地址    

 * @param array $post_data post键值对数据    

 * @return string    

 */    

function send_post($url, $post_data) {    

      $postdata = http_build_query($post_data);    

      $options = array(    

            'http' = array(    

                'method' = 'POST',    

                'header' = 'Content-type:application/x-www-form-urlencoded',    

                'content' = $postdata,    

                'timeout' = 15 * 60 // 超时时间(单位:s)    

            )    

        );    

        $context = stream_context_create($options);    

        $result = file_get_contents($url, false, $context);             

        return $result;    

}

使用的时候直接调用上面定义的send_post方法:

$post_data = array(

    'username' = 'username',

    'password' = 'password'

);

send_post('网址', $post_data);

thinkphp5地址路由请求响应错误

点击4个不同的路由地址,可以查看当前的路由情况。

路由到read操作

路由到archive操作

项目配置文件中的路由定义如下:

//启用路由功能

'URL_ROUTER_ON'=true,

//路由定义

'URL_ROUTE_RULES'= array(

'blog/:yeard/:monthd'='Blog/archive', //规则路由

'blog/:idd'='Blog/read', //规则路由

'blog/:cate'='Blog/category', //规则路由

'/(d+)/' = 'Blog/view?id=:1',//正则路由

),

在模板文件中,我们使用了U函数动态生成路由地址:

路由1:blog/curd

路由2:blog/5

路由3:blog/2012/09

路由4:100

php请求url并接收返回值

方法1: 用file_get_contents 以get方式获取内容

[php] view plaincopyprint?

?php  

$url='';  

$html = file_get_contents($url);  

echo $html;  

?  

方法2: 用fopen打开url, 以get方式获取内容

[php] view plaincopyprint?

?php  

$fp = fopen($url, 'r');  

//返回请求流信息(数组:请求状态,阻塞,返回值是否为空,返回值http头等)  

[php] view plaincopyprint?

stream_get_meta_data($fp);  

[php] view plaincopyprint?

while(!feof($fp)) {  

$result .= fgets($fp, 1024);  

}  

echo "url body: $result";  

fclose($fp);  

?

php怎么响应客户端发送http请求

使用$_POST['参数名']处理post方法提交的参数,$_GET['参数名']处理get方法参数.

eg:

如果url 为: index.html?name=123pwd=123

?php

$name = $_GET['name'];

$pwd = $_GET['pwd'];

do something;

?

如果url 为: index.html

name=123pwd=123

?php

$name = $_POST['name'];

$pwd = $_POST['pwd'];

do something;

?

如果只是处理如何要跳转到其他页面,可以用header("Location: 文件名");

如果是网页和php混合,在需要使用?php php语句;?处理就行;使用echo可以输出一些值到网页中.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。