以下代码涉及使用由php表单事件触发的脚本对Facebook应用程序用户进行身份验证。我通过HTML表单发布一个字符串,其中包含以下代码:
<html>
<body>
<form name="form" enctype="multipart/form-data" action="test.php" method="post">
<input name="message" type="text" value=""><br/><br/>
<input type="submit" value="Upload"/><br/>
</form>
</body>
</html>
test.php的代码是:
<?php session_start(); ?>
<html>
<head xmlns:worldcentric="https://apps.facebook.com/testapp/ns#">
<title>Test App</title>
</head>
<body>
<?php
$app_id = "191622610935428";
$my_url = "http://www.thepropagator.com/facebook/testapp/test1.php";
$string1 = (string)$_POST["message"];
$_SESSION['str'] = $string1;
// $string2 = "teststring";
// $_SESSION['str'] = $string2;
$code = $_REQUEST["code"];
if(empty($code)) {
$dialog_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&scope=email,publish_actions";
echo("<script>top.location.href='" . $dialog_url . "'</script>");
}
$string3 = $_SESSION['str'];
echo $string3;
?>
</body>
</html>
对于上面的代码,我试图存储在
中的信息$_SESSION['str']
没有被保留。但是,当我更换行
$string1 = (string)$_POST["message"];
$_SESSION['str'] = $string1;
用注释掉的行:
$string2 = "teststring";
$_SESSION['str'] = $string2;
文本“teststring”确实传递了。正如您所看到的,我尝试将$ _POST [“message”]转换为字符串,但它无论如何都无法正常工作。有什么想法吗?
答案 0 :(得分:1)
您不需要强制转换为字符串,因为默认情况下PHP会将其视为字符串。
我唯一能想到的是,你确定$_POST['message']
拥有什么东西吗?回应它以确保它不是空的。
尝试这样的事情:
$_SESSION['str'] = (empty($_POST['message'])) ? "empty" : $_POST['message'];
此外,在您的HTML中,
<input name="message" type="text" value="">
您尚未关闭输入标记。
答案 1 :(得分:0)
该行:
echo("<script>top.location.href='" . $dialog_url . "'</script>");
导致脚本从顶部重新执行。这个问题存在两个问题,即我将我的信息存储在一个常规变量中,当脚本重新开始时,该变量被删除,修复程序是使用会话变量。另一个问题是当脚本重新开始并阅读该行时:
$string1 = (string)$_POST["message"];
这次没有发布,所以它正在删除变量。我通过用以下内容替换上面的行来解决这个问题:
if(empty($ _ SESSION ['string'])) $ _SESSION [ '字串'] = $ _ POST [ “消息”];
if(empty($ _ SESSION ['string'])) $ _SESSION [ '字串'] = $ _ POST [ “消息”];