【问题标题】:External PHP file not get variable from PHP link外部 PHP 文件未从 PHP 链接获取变量
【发布时间】:2017-07-09 14:57:34
【问题描述】:

为我的网站构建一个消息传递系统,我已经卡了好几天了。我有这个PHP 链接

<a href='user_msg.php?hash=$hash'>$name</a>

当您点击链接时,它会将您带到一个页面,您可以在该页面向您已连接的用户发送消息(此连接由$hash 绑定)

在发送消息的页面中,我隐藏了$hash 并隐藏了input value="$hash",它使用$hash 将消息发送到数据库中的row,并带有以下scripts(他们没有问题并且工作正常)

  var msg_area = $('.msg_area');
    msg_area.scrollTop(msg_area.prop("scrollHeight"));
        $('#send_rep').submit(function (e) {
            e.preventDefault();
            var $form = $(this), url = $form.attr('action');
            var posting = $.post(url, {rep_msg: $('#rep_msg').val(), hash: $('#hash').val()});
            posting.done(function (data) {
                alert('success');
            });
        });

要发送的 PHP 脚本

require_once ("db.php");
$db = new MyDB();
session_start();

if (isset($_POST['rep_msg']) && !empty($_POST['rep_msg']) || isset($_POST['hash']) && !empty($_POST['hash']))
{
$hash = (int)$_GET['hash'];
$my_id = $_SESSION['log_id'];
$rep_msg = $_POST['rep_msg'];
$hash = $_POST['hash'];


    $rsql = <<<EOF
INSERT INTO messager (message, group_hash, from_id) VALUES('$rep_msg', '$hash', '$my_id');
EOF;
    $rret = $db->exec($rsql);

    $ursql = <<<EOF
SELECT * FROM User WHERE ID = '$my_id';
EOF;


    $urret = $db->query($ursql);

    while ($urrow = $urret->fetchArray(SQLITE3_ASSOC)) {
        $from_fname = $urrow['fname'];
        $from_img = $urrow['image'];

        header('Location: user_msg.php?hash=' . $hash);
    }
}

上述Ajax Requestphp 脚本可以将消息发送到数据库。

问题不是从数据库中获取消息

这是我当前使用的script(不工作)

获取消息的 PHP 脚本

require_once ("db.php");
$db = new MyDB();
session_start();

if (isset($_GET['hash']) && !empty($_GET['hash']))
{
$hash = (int)$_GET['hash'];
$us_id = $_SESSION['log_id'];

$mesql =<<<EOF
SELECT from_id, message FROM messager WHERE group_hash = '$hash';
EOF;
$meret = $db->query($mesql);
while ($merow = $meret->fetchArray(SQLITE3_ASSOC))
{
    $from_id = $merow['from_id'];
    $messages = $merow['message'];


    $usql =<<<EOF
SELECT * FROM User WHERE ID = '$from_id';
EOF;
    $uret = $db->query($usql);

    while ($urow = $uret->fetchArray(SQLITE3_ASSOC)) {
        $from_fname = $urow['fname'];
        $from_img = $urow['image'];


        if ($from_id != $_SESSION['log_id']) {

            echo "
<div class='from_bubble'><div class='from_img'><img src='$from_img'></div><div class='from_txt'><p>$messages</p></div></div>";
        } else {
            echo "
<div class='rep_bubble'><div class='rep_img'><img src='$from_img'></div><div class='rep_txt'><p>$messages</p></div></div>";
        }
    }
    echo "<input style='display: none' type='text' class='hash' name='hash' value='$hash' id='hash'>";
}
} 

Ajax 请求

setInterval(function() {
    $('.msg_area').load("get_msg.php");
}, 2000);

但是 get 不起作用。我怀疑出于某种原因,它没有得到$hash。请问有没有解决方案,或者我正在尝试一些不可能的事情。

任何帮助将不胜感激。如果需要更多信息,请询问。提前致谢

【问题讨论】:

    标签: javascript php jquery ajax hash


    【解决方案1】:

    也许$hash = (int)$_GET['hash']; 会是$hash = (int)$_POST['hash'];
    而且你有不止一个 $_GET...

    【讨论】:

    • 没用。它什么也得不到。 div 是空的。
    【解决方案2】:

    在您的 ajax 请求中,您使用的是 POST,因此您还需要使用 POST 获取哈希:if (isset($_POST['hash']) && !empty($_POST['hash'])) { $hash = (int)$_POST['hash'];

    【讨论】:

    • Amarachi 效果不佳。它不是来自databaseget 任何data
    • 你是否启用了error_reporting或任何mysql调试?
    • 已经解决了问题。将其发布为一个回答。谢谢@amarachi
    【解决方案3】:

    在 PHP 中使用 '' 表示您正在编写的实际字符串。
    如果你想在字符串中使用 PHP 变量,你应该使用"",所以尝试将&lt;a href='user_msg.php?hash=$hash'&gt;$name&lt;/a&gt; 更改为&lt;a href="user_msg.php?hash=$hash"&gt;$name&lt;/a&gt;

    查看更多信息: http://php.net/manual/en/language.types.string.php

    那么,如何在输入中隐藏哈希?
    你可以使用&lt;input value="$_GET['hash']" ... /&gt;

    在要发送的脚本中,是否输入了if?尝试添加语句,看看 SQL 是否返回任何错误。

    希望这会有所帮助。

    【讨论】:

    • 问题已经解决了。我echophp 中的链接,这就是为什么它是' ' 而不是" "
    • 好的,解决办法是什么?
    • 将其发布为答案。非常感谢您的贡献和支持。
    【解决方案4】:

    问题的答案是为$hash($_SESSION['hash'] = $hash) 创建一个PHP SESSION,并通过session_start() 在整个网站上使用这个session

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      相关资源
      最近更新 更多