Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - Blueimp ajax chat sessioni e/o cookie
Forum - PHP - Blueimp ajax chat sessioni e/o cookie

Avatar
cassin.simone (Member)
Guru


Messaggi: 1051
Iscritto: 03/06/2009

Segnala al moderatore
Postato alle 22:02
Lunedì, 19/04/2010
Salve a tutti, ho appena installato la famosa chat che sto integrando con joomla. Inseriti però i dati dell'utente joomla nel db della chat ho provato varie volte ma non sono riuscito ad impostare un cookie e una sessione che funzionino...
Naturalmente mi aspetto che nel cookie ci sia qualcosa che si colleghi alla sessione ma nella sessione...cosa c'è?
Grazie mille in anticipo...mi manca solo questo pezzo del puzzle...:k:

Ultima modifica effettuata da cassin.simone il 20/04/2010 alle 13:33


Hey, sono anche su Twitter! www.twitter.com/simonecassin
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6110
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 5:24
Martedì, 20/04/2010
Non ho capito. Spiegati meglio.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
cassin.simone (Member)
Guru


Messaggi: 1051
Iscritto: 03/06/2009

Segnala al moderatore
Postato alle 13:34
Martedì, 20/04/2010
Testo quotato

Postato originariamente da pierotofy:

Non ho capito. Spiegati meglio.



Va bene. Scusami ma ieri sera ero di fretta perchè dovevo andare a letto (causa: forze maggiori hem hem :rotfl:).
In pratica, come tu ben saprai, la chat blueimp che è per altro installata su pierotofy.it ha una tabella nel db chiamata "ajax_chat_online" dove vengono memorizzati gli users online. In effetti inserendo una riga in quella tabella l'utente con id e username da me scelti viene segnalato come online. Il mio problema è come associare a quell'utente la sessione e/o il cookie della chat blueimp.
Magari sono sulla strada sbagliata :-|
Potresti (se sono sulla falsa strada) spiegarmi come tu l'hai integrata?
Grazie mille :hail: ;)

Ultima modifica effettuata da cassin.simone il 20/04/2010 alle 13:34


Hey, sono anche su Twitter! www.twitter.com/simonecassin
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6110
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:42
Martedì, 20/04/2010
Ho modificato uno dei files della chat per leggere gli users dalla tabella degli utenti di pierotofy.it anziche' dalla tabella predefinita. Non mi ricordo esattamente quale pero'.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
cassin.simone (Member)
Guru


Messaggi: 1051
Iscritto: 03/06/2009

Segnala al moderatore
Postato alle 18:29
Martedì, 20/04/2010
Testo quotato

Postato originariamente da pierotofy:

Ho modificato uno dei files della chat per leggere gli users dalla tabella degli utenti di pierotofy.it anziche' dalla tabella predefinita. Non mi ricordo esattamente quale pero'.


:-|
Piero ma...gli utenti vengono memorizzati in lib/data/users.php...non capisco come tu abbia fatto O.o
Dal file users.php predefinito il code è questo (ho tolto le mie pass :))
Codice sorgente - presumibilmente PHP

  1. <?php
  2. /*
  3.  * @package AJAX_Chat
  4.  * @author Sebastian Tschan
  5.  * @copyright (c) Sebastian Tschan
  6.  * @license GNU Affero General Public License
  7.  * @link https://blueimp.net/ajax/
  8.  */
  9.  
  10. // List containing the registered chat users:
  11. $users = array();
  12.  
  13. // Default guest user (don't delete this one):
  14. $users[0] = array();
  15. $users[0]['userRole'] = AJAX_CHAT_GUEST;
  16. $users[0]['userName'] = null;
  17. $users[0]['password'] = null;
  18. $users[0]['channels'] = array(0);
  19.  
  20. // Sample admin user:
  21. $users[1] = array();
  22. $users[1]['userRole'] = AJAX_CHAT_ADMIN;
  23. $users[1]['userName'] = '***';
  24. $users[1]['password'] = '***';
  25. $users[1]['channels'] = array(0,1);
  26.  
  27. // Sample moderator user:
  28. $users[2] = array();
  29. $users[2]['userRole'] = AJAX_CHAT_MODERATOR;
  30. $users[2]['userName'] = '***';
  31. $users[2]['password'] = '***';
  32. $users[2]['channels'] = array(0,1);
  33.  
  34. // Sample registered user:
  35. $users[3] = array();
  36. $users[3]['userRole'] = AJAX_CHAT_USER;
  37. $users[3]['userName'] = '***';
  38. $users[3]['password'] = '***';
  39. $users[3]['channels'] = array(0,1);
  40. ?>


E' un ottima idea quella di modificare questo file...ma mi chiedo come...:-|
Grazie ancora ;)

Edit: un secondo...sto provando...forse ho capito come fare :) Se funziona posto tutto :)

Ultima modifica effettuata da cassin.simone il 20/04/2010 alle 18:31


Hey, sono anche su Twitter! www.twitter.com/simonecassin
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6110
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 20:49
Martedì, 20/04/2010
In lib/class/CustomAJAXChat.php c'e' una funzione getValidLoginUserData(). Ho modificato quella per autenticare l'utente.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
cassin.simone (Member)
Guru


Messaggi: 1051
Iscritto: 03/06/2009

Segnala al moderatore
Postato alle 12:56
Mercoledì, 21/04/2010
Testo quotato

Postato originariamente da pierotofy:

In lib/class/CustomAJAXChat.php c'e' una funzione getValidLoginUserData(). Ho modificato quella per autenticare l'utente.



Ok piero...sto provando. Ho modificato la funzione da te indicata così:
Codice sorgente - presumibilmente Php

  1. function getValidLoginUserData() {
  2.         $host="localhost";
  3.         $username="simonecassin";
  4.         $password="";
  5.         $db="my_simonecassin";
  6.         mysql_connect($host, $username, $password);
  7.         mysql_select_db($db);
  8.         $getall=mysql_query("SELECT username, id FROM site_users ORDER BY id") or die ("Errore nella query");
  9.         while ($user=mysql_fetch_array($getall)){
  10.                 if ($_COOKIE['webchat_username']==$user['username']){
  11.                         $userData=array();
  12.                         $userData['userID']=$user['id'];
  13.                         $userData['userName']=$user['username'];
  14.                         $userData['userRole']='AJAX_CHAT_USER';
  15.                         return $userData;
  16.                 }
  17.         }
  18.         return null;
  19. }


In teoria, siccome il cookie webchat_username è vivo e vegeto dovrebbe funzionare ma quando tento il login cliccando su "Entra" non mi logga...:-|
Ah...stavo dimenticando che ho modificato anche il file di template "loggedOut.html" così (prendendo spunto dal tuo sito):
Codice sorgente - presumibilmente Php

  1. <?xml version="1.0" encoding="[CONTENT_ENCODING/]"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="[LANG_CODE/]" lang="[LANG_CODE/]" dir="[BASE_DIRECTION/]">
  4.  
  5. <head>
  6.         <meta http-equiv="Content-Type" content="[CONTENT_TYPE/]" />
  7.         <title>[LANG]title[/LANG]</title>
  8.         <style type="text/css">
  9.                 body {
  10.                         padding:0;
  11.                         margin:0;
  12.                 }
  13.         </style>
  14.         [STYLE_SHEETS/]
  15.         <!--[if lt IE 7]>
  16.                 <link rel="stylesheet" type="text/css" href="css/ie5-6.css"/>
  17.         <![endif]-->
  18.         <script src="js/chat.js" type="text/javascript" charset="UTF-8"></script>
  19.         <script src="js/lang/[LANG_CODE/].js" type="text/javascript" charset="UTF-8"></script>
  20.         <script src="js/config.js" type="text/javascript" charset="UTF-8"></script>
  21.         <script type="text/javascript">
  22.                 // <![CDATA[
  23.                         function initializeLoginPage() {
  24.                                 document.getElementById('userNameField').focus();
  25.                                 if(!ajaxChat.isCookieEnabled()) {
  26.                                         var node = document.createElement('div');
  27.                                         var text = document.createTextNode(ajaxChatLang['errorCookiesRequired']);
  28.                                         node.appendChild(text);
  29.                                         document.getElementById('errorContainer').appendChild(node);
  30.                                 }
  31.                         }
  32.                        
  33.                         ajaxChatConfig.sessionName = '[SESSION_NAME/]';
  34.                         ajaxChatConfig.cookieExpiration = parseInt('[COOKIE_EXPIRATION/]');
  35.                         ajaxChatConfig.cookiePath = '[COOKIE_PATH/]';
  36.                         ajaxChatConfig.cookieDomain = '[COOKIE_DOMAIN/]';
  37.                         ajaxChatConfig.cookieSecure = '[COOKIE_SECURE/]';
  38.  
  39.                         ajaxChat.init(ajaxChatConfig, ajaxChatLang, true, true, false);
  40.                 // ]]>
  41.         </script>
  42. </head>
  43.  
  44. <body onload="initializeLoginPage();">
  45.         <div id="loginContent">
  46.                 <div id="loginHeadlineContainer">
  47.                         <h1>[LANG]title[/LANG]</h1>
  48.                 </div>
  49.                 <form id="loginForm" action="[LOGIN_URL/]" method="post" enctype="application/x-www-form-urlencoded">
  50.                         <div id="loginFormContainer">
  51.                                 <input type="hidden" name="login" id="loginField" value="login"/>
  52.                                 <input type="hidden" name="redirect" id="redirectField" value=""/>
  53.                                 <div><input type="submit" name="submit" id="loginButton" value="Entra"/></div>
  54.                         </div>
  55.                 </form>
  56.                 <div id="errorContainer">[ERROR_MESSAGES/]<noscript><div>[LANG]requiresJavaScript[/LANG]</div></noscript></div>
  57.                 <!--
  58.                         Please retain the full copyright notice below including the link to blueimp.net.
  59.                         This not only gives respect to the amount of time given freely by the developer
  60.                         but also helps build interest, traffic and use of AJAX Chat.
  61.                        
  62.                         Thanks,
  63.                         Sebastian Tschan
  64.                 //-->
  65.                 <div id="copyright"><a href="https://blueimp.net/ajax/">AJAX Chat</a> © <a href="https://blueimp.net">blueimp.net</a></div>
  66.         </div>
  67. </body>
  68.  
  69. </html>


Perdona la mia ignoranza :hail: :)

Ultima modifica effettuata da cassin.simone il 21/04/2010 alle 13:36


Hey, sono anche su Twitter! www.twitter.com/simonecassin
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6110
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 15:25
Mercoledì, 21/04/2010
Qui:

Codice sorgente - presumibilmente Php

  1. function getValidLoginUserData() {
  2.     $host="localhost";
  3.     $username="simonecassin";
  4.     $password="";
  5.     $db="my_simonecassin";
  6.     mysql_connect($host, $username, $password);
  7.     mysql_select_db($db);
  8.     $getall=mysql_query("SELECT username, id FROM site_users ORDER BY id") or die ("Errore nella query");
  9.     while ($user=mysql_fetch_array($getall)){
  10.         if ($_COOKIE['webchat_username']==$user['username']){
  11.             $userData=array();
  12.             $userData['userID']=$user['id'];
  13.             $userData['userName']=$user['username'];
  14.             $userData['userRole']='AJAX_CHAT_USER';
  15.             return $userData;
  16.         }
  17.     }
  18.     return NULL;
  19. }



E' sbagliato; la funzione deve ritornare solamente un utente. Ad esempio per pierotofy.it io ho un'istanza $currentUser che punta all'utente loggato al momento. Quindi devi modificare la funzione cosi' che:
- Se l'utente non e' loggato sul tuo sito, ritorna NULL.
- Se l'utente e' loggato sul tuo sito, ritorna l'hash table ($userData) con userID, userName e userRole.

Codice sorgente - presumibilmente Php

  1. function getValidLoginUserData() {
  2.     global $currentUser;
  3.    
  4.     if ($currentUser->isLogged()){
  5.             $userData=array();
  6.             $userData['userID']=$currentUser->id;
  7.             $userData['userName']=$currentUser->username;
  8.             $userData['userRole']='AJAX_CHAT_USER';
  9.             return $userData;
  10.     }else return NULL;
  11. }



Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
cassin.simone (Member)
Guru


Messaggi: 1051
Iscritto: 03/06/2009

Segnala al moderatore
Postato alle 18:47
Mercoledì, 21/04/2010
Bene...ancora non funziona però penso ci siamo vicini...
Codice sorgente - presumibilmente Php

  1. function getValidLoginUserData() {
  2.         define( '_JEXEC', 1 );
  3.         define('JPATH_BASE', ".." );
  4.         define( 'DS', DIRECTORY_SEPARATOR );
  5.  
  6.         require_once (JPATH_BASE.DS.'includes'.DS.'defines.php');
  7.         require_once (JPATH_BASE.DS.'includes'.DS.'framework.php');
  8.         require('../libraries/joomla/factory.php');
  9.         $mainframe =& JFactory::getApplication('site');
  10.         $mainframe->initialise();
  11.         $my =& JFactory::getUser();
  12.                 if ($my->id>0){
  13.             $userData=array();
  14.             $userData['userID']=$my->id;
  15.             $userData['userName']=$my->username;
  16.             $userData['userRole']='AJAX_CHAT_USER';
  17.             return $userData;
  18.                 }else return NULL;
  19.         }



E fin qua tutto ok...
Il problema è che quando premo sul fatidico pulsante "Entra" non mi logga ancora :-|
Non so' se tu conosca joomla e JFactory...se è così fai un fischio che passo la palla al forum di joomla :rotfl:


Hey, sono anche su Twitter! www.twitter.com/simonecassin
PM Quote