curl.php中
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://localhost/www/test/p.php?username=feng");
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_exec ($ch);
curl_close ($ch);p.php中
session_start();
if ($_SERVER['REQUEST_METHOD']=='GET') {
    $_SESSION['username'] = $_GET['username'];
}else{
    echo $_SESSION['username'];
}但是p.php中根本获取不到curl.php发送过来的值
并报错
 Notice: Undefined index: username in D:\php\web\www\test\p.php on line 4
 请问这是什么原因????我php.ini开启了extension=php_curl.dll

解决方案 »

  1.   

    用cURL玩呢,好好看看手册.如果想得到你期待的结果,用file_get_contents().
      

  2.   

    这个curl 又没问题的,可以运行成功的,应该不是代码的问题,或是还有别的代码没贴出来
      

  3.   

    逻辑问题吧?
    敢问lz执行过程?
    先执行curl.php然后运行p.php?
    这就好比是设置了表单却没有提交一样。curl的结果在本页面处理。
      

  4.   

     以上就是我2个文件的全部代码 
        php是最新版本的 应该不会有问题啊
      

  5.   

    是的
      我是这样执行的 怎么会有逻辑错误呢?
    在curl.php中把参数传给p.php 然后在p.php中获取 这样有错误 ?
      

  6.   

    代码没有问题。
    逻辑问题。curl是用来获取目标网址的结果信息,如模拟提交表单等,然后进行处理。。
    虽然cul提交get参数到p.php了,但是你直接运行p.php不会执行你的if()代码块,因为是直接访问。
      

  7.   

    我再给你个例子
    <a href="b.php?text='haihao'"/>点击我</a>
    这样点击后的b.php可以取到text的参数值,get方式访问的,可以取到参数。但是你如果直接在浏览器中输入b.php进行访问能取到参数值么?显然不能的。
    我觉得你对curl的使用用途搞错了。
      

  8.   

    这样做:curl.php:
    <?php
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, "http://localhost/p.php?username=feng");
    curl_setopt ($ch, CURLOPT_HEADER, 0);
    if(($result = curl_exec ($ch))===false)
      {
       echo "Error:curl_error()";
      }
    curl_close ($ch);echo $result;p.php中:<?php
    session_start();
    if ($_SERVER['REQUEST_METHOD']=='GET') {
      $_SESSION['username'] = $_GET['username'];
    }else{
      $_SESSION['username'] = 'sorry';
    }
    echo $_SESSION['username'];
    ?>
      

  9.   


    直接在浏览器中输入b.php进行访问也可以取到值为什么不行呢?
    因为你先是用<a href="b.php?text='haihao'"/>点击我</a>
    传的就把text的值给传进来啦 然后保存到session当中 
    当再次访问b.php就直接读取session这样难道不行?
      

  10.   

    保存到session当然可以,但是这样取不到GET值,因为你是输入地址浏览,而不是页面跳转,所以访问方式不是get,自然if()语句块中不会执行。正确的做法是,在curl.php获取p.php的执行结果,这样是可以的。
    curl.php中读p.php的执行结果:
    <?php
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, "http://localhost/p.php?username=feng");
    curl_setopt ($ch, CURLOPT_HEADER, 0);
    if(($result = curl_exec ($ch))===false)//result 变量保存的是p.php的执行结果。也就是session的值
      {
       echo "Error:curl_error()";
      }
    curl_close ($ch);echo $result;//这里echo的就是p.php的执行结果
      

  11.   

    复制了代码走了一遍,走得通的,也是用的$_GET获取的,  echo $_GET['username'];
    正确
      

  12.   

    phmygirl 已经给你解析过这个问题了,我给你深入一下问题的关键在于 你用curl模拟了一个get 你要记得 这个模拟就等于你打开了一个浏览器.如果你需要返回结果那么需要在curl里进行处理(这个时候SESSION是存在的)。这个时候你再用浏览器打开p.php,那么相当于你重新打开了一个浏览器来操作。这个时候SESSION当然就不存在了。理解我说的话你就理解问题在哪了,多简单是不是。