php - 通过扫描二维码使用 cURL 发送 POST 数据

标签 php curl qr-code

我正在尝试通过扫描二维码将一些数据 (JSON) 传递到另一个页面。 数据发送到的页面包含一个 HTML 表单。我想使用该表单作为在将数据发送到数据库之前更正数据的最后机会。

我在 S.O. 找到了这里。使用 cURL 传递数据的方法:( https://stackoverflow.com/a/15643608/2131419 )

二维码库: http://phpqrcode.sourceforge.net

我使用二维码执行此功能:

function passData () {
    $url = 'check.php';
    $data = array('name' => 'John', 'surname' => 'Doe');
    $ch = curl_init( $url );

    # Setup request to send json via POST.
    $payload = json_encode($data);
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $payload );
    curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));

    # Return response instead of printing.
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

    # Send request.
    $result = curl_exec($ch);
    curl_exec($ch);
    curl_close($ch);

    # Print response.
    return $result;
}

创建二维码:

QRcode::png(passData(), $tempDir.'007_4.png', QR_ECLEVEL_L, 4);
echo '<img src="'.$tempDir.'007_4.png" />';

检查.php

<?php $data = json_decode(file_get_contents("php://input"), true); ?>

<form method="post" action="handle.php">
    <input type="text" name="name" value="<?php echo $data['name'];?>" /><br />
    <input type="text" name="surname" value="<?php echo $data['surname'];?>" /><br />
    <input type="submit" />
</form>

问题:

我可以将数据传递给 check.php,但它返回纯文本而不是可用的 HTML 表单。

enter image description here

希望有人能帮忙!

编辑

一些说明:

我真正想要的是扫描二维码,它执行 passData() 函数。然后,“QR 码扫描仪应用程序”需要打开一个浏览器,该浏览器会显示 check.php,其形式为AND 传递的数据作为 输入字段的>。

现在,我只得到 check.php 的响应(纯文本)。 当我传递 URL 而不是 passData() 函数时,例如:
QRcode::png("http://www.google.com", $tempDir.'007_4.png', QR_ECLEVEL_L, 4);

应用程序询问我是否想去 http://www.google.com .

最佳答案

QR 码无法执行代码。可以放入 QR 码中的唯一可执行数据类型是 URL。这就是为什么使用 google.com 作为 URL 会打开网络浏览器访问该 URL。二维码本身不会呈现任何内容。

您的代码所做的是在生成 QR 码时获取 check.php 页面,然后将输出存储为原始数据。它不是一个网页,它是一个字符串,就像您在问题中看到的那样。您可以传递类似于小书签的 JavaScript URL,但其执行取决于所使用的 QR 码阅读器。

小书签示例

<?php

function passData() {
    // javascript code in a heredoc, you may need to url encode it
    return <<<JS
        javascript:(function() {
          //Statements returning a non-undefined type, e.g. assignments
        })();
JS;
}

更好的方法是让您的 QR 码生成一个 URL,例如:http://your-site.com/check.php?name=John&surname=Doe 并主机 check.php 在您的计算机上。您可以使用 $_GET 数据填充表单,然后使用 javascript 将其自动发布为 Jah提到过。

关于php - 通过扫描二维码使用 cURL 发送 POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33671126/

相关文章:

php - 删除一行 SQL PHP 后的组织表

c++ - 对 libcurl 函数的 undefined reference

android - Switch - case 表达式必须是常量表达式,我不能做 if-else 语句

PHP preg_replace : remove punctuation from beginning and end of string

java - 如何改变jsp中的url模式

curl - Docker容器:容器之间的 curl 不起作用

php - 在 Windows 上安装 codeigniter sparks 管理器

ios - 我们可以将条形码扫描仪用作QRcode扫描仪吗?

barcode - 二维条码与一维条码 - 速度、准确性、尺寸

php - 将数字转换为字符串