我正在尝试JSON通过扫描二维码将一些数据 ( ) 传递到另一个页面。数据发送到的页面包含一个HTML表单。我想使用该表单作为在将数据发送到数据库之前更正数据的最后机会。
我在这里找到了一种使用 cURL 传递数据的方法:( /sf/answers/1095052591/ )
二维码库: 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;
}
Run Code Online (Sandbox Code Playgroud)
QRcode::png(passData(), $tempDir.'007_4.png', QR_ECLEVEL_L, 4);
echo '<img src="'.$tempDir.'007_4.png" />';
Run Code Online (Sandbox Code Playgroud)
<?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>
Run Code Online (Sandbox Code Playgroud)
我可以将数据传递给 check.php,但它返回纯文本而不是可用的表单HTML。
希望有人可以帮忙!
编辑
一些澄清:
我真正想要的是扫描二维码,它执行 passData() 函数。然后“二维码扫描仪应用程序”需要打开一个浏览器,该浏览器显示check.php表单和传递的数据作为values字段input。
现在,我只得到(纯文本)的响应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。二维码本身不会呈现任何内容。
您的代码所做的是check.php在生成 QR 码时获取页面,然后将输出存储为原始数据。它不是一个网页,它是一个字符串,就像您在问题中看到的那样。您可以传递类似于小书签的 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;
}
Run Code Online (Sandbox Code Playgroud)
更好的方法是让您的 QR 码生成一个类似以下的 URL:并在您的计算机上http://your-site.com/check.php?name=John&surname=Doe托管。check.php您可以使用这些$_GET数据填充您的表单,然后使用 javascript 自动发布它,如Jah提到的那样。
| 归档时间: |
|
| 查看次数: |
25730 次 |
| 最近记录: |