Autor Zpráva
Arady
Profil
Dobrý den,
potřeboval bych se s Vámi poradit. Mám zde určitý JavaScript kód, který po kliknutí na <span> otevře okénko chatu, nadále JS zajišťuje odeslání ID konverzace do php souboru, aby vypsal obsah z Databáze přimo do toho okna. Celý chat a všechno okolo krásně funguje, ale jen v případě jednoho chatu. Když otevřu další chatové okénko, tak se mi tam vypíše to samé co je v tom předchozím. Jinak řečeno php soubor vypíše jednu věc do všech otevřených oken. Od Vás bych potřeboval poradit, jak to udělat tak, aby do každého okénka posílal jiné data. Už si nevím rady a tady jste mi všichni pomohli :)

JavaScript:
$(document).ready(function(){
     
  var arr = []; 
  
 $(document).on('click', '.msg_head', function() { 
  var chatbox = $(this).parents().attr("rel") ;
  $('[rel="'+chatbox+'"] .msg_wrap').slideToggle('slow');
  return false;
 });
 
 
 $(document).on('click', '.close1', function() { 
  var chatbox = $(this).parents().parents().attr("rel") ;
  $('[rel="'+chatbox+'"]').hide();
  arr.splice($.inArray(chatbox, arr), 1);
  displayChatBox();
  return false;
 });
 
 $(document).on('click', '#konverzace-slap', function() {
     
  var konv_id = $(this).attr("class");
  var konv_nazev = $(this).children().text() ;

  if ($.inArray(konv_id, arr) != -1)
  {
      arr.splice($.inArray(konv_id, arr), 1);
     }
  arr.unshift(konv_id);
  chatPopup =  '<div class="msg_box" style="right:270px" rel="'+ konv_id+'">'+
     '<div class="msg_head">'+konv_nazev +
     '<div class="close1">x</div> </div>'+
     '<div class="msg_wrap"> <div class="msg_body"> <div class="msg_push"></div> </div>'+
     '<div class="msg_footer"><textarea class="'+ konv_id +'" rows="3" id="msg_input"></textarea></div>  </div>  </div>' ;     
     $("body").append(  chatPopup  );  
  displayChatBox();  
 });
/* $(document).on('keypress', 'textarea' , function(e) {       
        if (e.keyCode == 13 ) {   
            var msg = $(this).val();  
            var konv_id = $(this).attr("class");
   $(this).val('');
   if(msg.trim().length != 0){    
  $.ajax({
           type: "POST",
           url: "includes/add_msg_konv.php",
           data:{konv_id:konv_id, msg:msg},  
            dataType:"text"
        });
   $('.msg_body').scrollTop($('.msg_body')[0].scrollHeight);
   }
        }
    });
 */
 function displayChatBox(){ 
     i = 100 ; 
  j = 260;  

  $.each( arr, function( index, value ) {  
     if(index < 4){
          $('[rel="'+value+'"]').css("right",i);
    $('[rel="'+value+'"]').show();
       i = i+j;    
     }
     else{
    $('[rel="'+value+'"]').hide();
     }
        });  
 }  
 
});

PHP kód:
if($_POST)
{

    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
        die();
    } 
    
    if(isset($_POST["message"]) &&  strlen($_POST["message"])>0)
    {

        $message = replace_smile($_POST["message"]);

        $cas = time();
        if(mysql_query("INSERT INTO konverzace_zpravy(`messag_konvid`,`messag_user`,`messag_obsah`,`messag_time`) VALUES('".$_POST['konv_id']."','".$user_data['userid']."', '".$_POST['message']."','$cas')"))
        {
                
        echo '<div class="msg-right">'.$message.'</div>';
        }
        
    }
    elseif($_POST["fetch"]==1)
    {
        $results = mysql_query("SELECT * FROM ( SELECT * FROM konverzace_zpravy WHERE messag_konvid = '".$_POST['konv_id']."' ORDER BY messag_time DESC LIMIT 10) konverzace_zpravy order by konverzace_zpravy.messag_id ASC");
        while($row = mysql_fetch_array($results))
        {
            $uziv_chats = $row['messag_user'];
    $obsah_chats = replace_smile($row['messag_obsah']);
    $time_chats = $row['messag_time'];
            
                    if($uziv_chats == $user_data['userid']) {echo '<div class="msg-right">'.$obsah_chats.'</div>';} else {echo '<div class="msg-left">'.$obsah_chats.'</div>';}
        }
    }
    else
    {
        header('HTTP/1.1 500 Are you kiddin me?');
        exit();
    }
}
Keeehi
Profil
Jediný ajax máš v zakomentované části kódu. Vytvoř prosím tě reálnou živou ukázku, kde bude ten problém vidět a bude možné si to vyzkoušet.

Doufám, že toto je jen prototyp a bezpečnostní díry v konečném produktu nebudou. Vidím minimálně SQL injection a persistentní XSS. A nepochybuji, že tam budou další jako třeba CSRF.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: