我是一个使用php的菜鸟。我已经使用了超过1年的PHP脚本来与arduino通信。
Arduino将数据发送到我的php脚本,它会回复arduino可以读取的文本,以确定数据是否已正确保存。还有一种方法可以获得arduino从我的mysql数据库启动时所需的一些设置。
我一直在回答我的arduino的答案是" DIE"功能
我有这个php文件(伪代码):
function.php (多个功能)
function response($str) {
die('<' . $str . '>'); //< and > is to let arduino knows exactly the answer
}
function get_settings() {
$response = "";
// ...... so response is completed
return $response;
}
index.php (此文件包含&#34; require_once&#34; function.php
和gate.php
以及其他功能。它是主文件)
gate.php (从arduino接收数据并需要发送答案的脚本文件)
//it gets data from $_GET and saves it into a mysql database
//After that:
if ($result) {
response('OK');
} else {
response('BAD_VALUES');
}
//And with other params in the $_GET, it does:
if ($_GET['k'] === ARDUINO_KEY) {
response(get_settings());
} else {
response('BAD KEY');
}
本周以来的问题是:
1.如果我想得到回复(&#39; OK&#39;);&#34;来自gate.php
我不会得到任何东西,在Chrome中我也看不到任何东西
2.如果我想得到&#34;响应(get_settings());&#34;来自gate.php我得到了信息,Chrome正在显示它。
3.如果我将此行&#34;响应(get_settings());&#34;,更改为&#34;响应(&#39;确定&#39;);&#34;或者#34;响应(&#34; OK&#34;);&#34;我不能得到任何东西,在Chrome中我也看不到任何东西
您如何看待这个?为什么返回字符串的函数有效,而字符串则无效。为什么它已经工作了几个月而且突然没有?
我已在我的&#34; freehosting计划&#34;中检查过它。和usbWebserver。
非常感谢你的帮助。
答案 0 :(得分:1)
关于die()
及其等价exit()
括号中的字符串,PHP手册指出:
如果
status
(即在您的情况下是字符串)是一个整数,那么该值将用作退出状态 而不是印刷。退出状态应该在0到254的范围内 退出状态255由PHP保留,不得使用。状态0 用于成功终止程序。
和
没有返回任何值。
因此,您只需使用echo
获取可见输出,然后使用die()
答案 1 :(得分:0)
我做了这个检查:
die('<' . $str . '>'); ----> doesn't work
die('#' . $str . '>'); ----> works !!!
die('#' . $str . '<'); ----> works !!!
die('>' . $str . '<'); ----> works !!!
所以它不喜欢'&lt;'在开始。
为什么?而且,为什么这周发生了?
注意:我可以更改这些外部字符,但我想了解问题的真正原因
嗨,有人知道???