2017-02-20 4 views
0

私のサイトのメッセージングシステムを構築しています。私は、このPHPリンク外部PHPファイルはPHPリンクから変数を取得できません

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

リンクをクリックすると、それはあなたが(この接続は$hashによってバインドされます)に接続したユーザーにメッセージを送ることができるページが表示されますがあります

ページ内の

メッセージを送信するため、私は中$hashを隠し、隠されたinput value="$hash"、それは次のようscripts(彼らは何の問題や仕事の罰金を持っていない)

$hashでデータベースに rowにメッセージを送信
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スクリプトは、データベースにメッセージをsednする

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スクリプト作業FONEを送信します。

問題は、これは私が現在のメッセージ

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リクエストを取得するために

(動作しない)PHPスクリプトを使用していますscriptあるデータベース

からメッセージを取得していない

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

しかし、ゲットは動作していません。私は何か理由を考えて、それは$hashを取得していないと思う。どうかこの解決法があるのか​​、私は何か不可能にしようとしています。

ご協力いただければ幸いです。さらに詳しい情報が必要な場合はお尋ねください。おかげで事前

答えて

0

回答は$hash$_SESSION['hash'] = $hash)についてPHP SESSIONを作成するために、すべてのsession_start()とサイト上でこのsessionを使用していました。

0

にたぶん$hash = (int)$_GET['hash'];$hash = (int)$_POST['hash'];
だろうそして、あなたはより多くちょうど1 $ _GETを持っている...

+0

動作しませんでした。それは何も得られません。 divはただ空です。 –

0

あなたのAjaxリクエストであなたがPOSTを使用しているので、あなたはPOSTようにハッシュを取得する必要がありますよく:if (isset($_POST['hash']) && !empty($_POST['hash'])) { $hash = (int)$_POST['hash'];

+0

Amarachiもうまくいきませんでした。データベースから 'data'を'取得 'しません –

+0

error_reportingやmysqlデバッグが有効になっていますか? –

+0

既に問題を解決しました。それをアスカーとして掲示。ありがとうございます。@amarachi –

0

PHPで''を使用すると、実際に書いている文字列が示されます。
あなたは、文字列でPHPの変数を使用したい場合は、""を使用するので、この詳細は<a href='user_msg.php?hash=$hash'>$name</a>

<a href="user_msg.php?hash=$hash">$name</a>にチェックを変更してみてください。そして、 http://php.net/manual/en/language.types.string.php

、どのようにあなたのハッシュを非表示にします入力?
ご利用いただけます<input value="$_GET['hash']" ... />

送信するスクリプトには、どうすれば入力できますか? SQLがエラーを戻すかどうかを調べるステートメントを追加してみてください。

これが役に立ちます。質問へ

+0

問題は既に解決されています。 'php'のリンクを「エコー」します。それは' '' 'で、' '' 'ではないからです。 –

+0

さて、解決策は何ですか? – Condorcho

+0

答えとして投稿してください。あなたの貢献とサポートに感謝します。 –

関連する問題