Сеанс PHP сохранит текст, но не опубликованное значение переменной - PullRequest
0 голосов
/ 16 января 2012

Следующий код включает аутентификацию пользователей приложения Facebook с помощью скрипта, который запускается событием формы php. Я отправляю строку через форму 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;

Текст "testtring" действительно передается вместе. Как вы можете видеть, я пытался преобразовать $ _POST ["message"] в строку, но в любом случае это не работает. Есть идеи?

Ответы [ 2 ]

1 голос
/ 16 января 2012

Вам не нужно приводить как строку, так как по умолчанию PHP будет обрабатывать ее как строку.

Единственное, о чем я могу подумать, ты уверен, что $_POST['message'] что-то держит? Эхо, чтобы убедиться, что он не пустой.

Попробуйте что-то вроде этого:

$_SESSION['str'] = (empty($_POST['message'])) ? "empty" : $_POST['message'];

Кроме того, в вашем HTML,

<input name="message" type="text" value="">

Вы не закрыли тег ввода.

0 голосов
/ 20 января 2012

Строка:

echo("<script>top.location.href='" . $dialog_url . "'</script>");

Вызывает повторное выполнение сценария сверху.С этой проблемой было две проблемы: я хранил свою информацию в обычной переменной, которая стиралась при запуске сценария, и исправление этой проблемы заключалось в использовании переменной сеанса.Другая проблема заключалась в том, что когда скрипт запускался заново и читал строку:

$string1 = (string)$_POST["message"];

На этот раз не было публикации, поэтому она стирала переменную.Я исправил это, заменив строку выше следующим:

if (пусто ($ _ SESSION ['string'])) $ _SESSION ['string'] = $ _ POST ["message"];

if (пусто ($ _ SESSION ['string'])) $ _SESSION ['string'] = $ _ POST ["message"];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...