我正在尝试通过扫描二维码将一些数据 (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
表单。
希望有人能帮忙!
编辑
一些说明:
我真正想要的是扫描二维码,它执行 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/