V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
YAFEIML
V2EX  ›  问与答

[半吊子码农]php post 疑问

  •  1
     
  •   YAFEIML · 2014-11-12 12:47:16 +08:00 · 2907 次点击
    这是一个创建于 3668 天前的主题,其中的信息可能已经有所发展或是发生改变。
    半路出家,没有系统学过编程,都是边百度边搞,,百度搞不到就还来烦V友们了,别笑啊

    get的话很好理解,比如http://xxx.com?a=1&b=2,不管是传过来还是接受都能理解
    比如发送是
    <a href="/down.php?A=<?php $A1?>&B=<?php $B1?>">连接</a>
    接收页面的话$_GET['A'] or $_GET['B'] 就行了

    /**
    * 发送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;
    }

    post_data = array(
    'username' => 'stclair2201',
    'password' => 'handan'
    );
    send_post('http://blog.xxx.com', $post_data);

    那么这个又是怎么传递呢,我执行完这些代码,好像没有任何用处啊,怎么会影响到接受页面呢,而且也没有个按钮什么的觉得好奇怪啊
    15 条回复    2014-11-12 17:29:37 +08:00
    66beta
        1
    66beta  
       2014-11-12 12:53:11 +08:00
    你不是post到http://blog.xxx.com了么,你http://blog.xxx.com的页面里面var_dump($_POST)看看呀
    haiyang416
        2
    haiyang416  
       2014-11-12 12:54:46 +08:00
    你应该先熟悉一下 HTTP 协议,而不是纠结这几行代码。
    xz
        3
    xz  
       2014-11-12 12:56:05 +08:00 via Android
    用form表单提交数据
    接收的话用$_POST['A'] or $_POST['B']就行了
    feiyuanqiu
        4
    feiyuanqiu  
       2014-11-12 12:57:41 +08:00
    这个函数是用来向http://blog.xxx.com这个地址post数据的,你执行没有反应是因为http://blog.xxx.com这个地址根本就无法访问...
    你如果想要看到效果可以在你本地新建一个php文件:
    <?php
    print_r($_POST);exit;
    ?>
    然后把send_post的第一个参数改成这个文件的访问地址,就行了
    var_dump(send_post('http://blog.xxx.com', $post_data));

    去下载个php手册吧,遇到不认识的函数去查下手册就行了,这些是很基础的东西
    hcymk2
        5
    hcymk2  
       2014-11-12 13:08:12 +08:00
    我觉得lz先理清client和server 之后就就应该知道答案。
    stackpop
        6
    stackpop  
       2014-11-12 13:08:15 +08:00
    建议楼主先看看 HTTP 协议,了解他最基本的原理再说。
    huigeer
        7
    huigeer  
       2014-11-12 13:13:35 +08:00
    var_dump($_REQUEST);
    lyragosa
        8
    lyragosa  
       2014-11-12 13:36:00 +08:00
    打开chrome,按F12,看request和response里面
    zts1993
        9
    zts1993  
       2014-11-12 13:47:53 +08:00
    html <form method="">
    Http Get与Post

    楼主该好好学习了。。。
    elvba
        10
    elvba  
       2014-11-12 13:57:28 +08:00
    'http' =>; array(
    'method' =>; 'POST',
    'header' =>; 'Content-type:application/x-www-form-urlencoded',
    'content' =>; $postdata,
    'timeout' =>; 15 * 60 // 超时时间(单位:s)

    这里多了分号。

    post_data = array(
    'username' => 'stclair2201',
    'password' => 'handan'
    );

    少了 $ 符号。
    YAFEIML
        11
    YAFEIML  
    OP
       2014-11-12 14:39:13 +08:00
    @elvba 这些我都纠正了,其实我想说的是怎么通过按钮把这些东西提交到另一个页面
    elvba
        12
    elvba  
       2014-11-12 16:11:11 +08:00
    @YAFEIML
    嗯……我想先问一下,你会不会使用表单提交数据?
    hcymk2
        13
    hcymk2  
       2014-11-12 16:20:33 +08:00
    YAFEIML
        14
    YAFEIML  
    OP
       2014-11-12 16:59:39 +08:00
    @hcymk2 好的,谢谢
    hitsmaxft
        15
    hitsmaxft  
       2014-11-12 17:29:37 +08:00
    你所认识的 post 动作都是通过在浏览器里面通过提交表单来实现的. 本质是浏览器帮你发起一次http的post请求.

    你这段代码就是自己发起请求, 利用php的 steam 和 file_get_content 相关函数来实现.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1085 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:36 · PVG 06:36 · LAX 14:36 · JFK 17:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.