• User Attivo

    entrata in chat utente loggato

    ciao e buona vigiglia di capodanno 😀 alla fine sono riuscito a creare una chat con le emoction socialchat.png ma non riesco a capire come inserire la sessione in modo che l'utente una volta che ha fatto l'accesso possa entrare in chat con il nome registrato ho inserito 2 chat una entrata da guest e l'altra in teoria entrata utente loggato chiedo gentilmente aiuto grazie posto lo script completo

    <div class="container">
    <div class="card">
      <div class="card-body">
        Piacere di vederti in chat <?php echo $_SESSION['name']; ?>
      </div>
    </div>
    </div>
    <div class="container">
          <div class="panel panel-default" style="height: 400px;">
    					<div style="height:10px;"></div>
    					<span style="margin-left:10px;">Benvenuto/a in stanza</span><br>
    					<span style="font-size:10px; margin-left:10px;"><i>Note: Si prega di moderare il linguaggio pena cancellazione account!</i></span>
    					<div style="height:10px;"></div>
    					<div id="msg" style="margin-left:10px; max-height:400px; overflow-y:scroll;">
    					
    					<?php 
    					$conn = mysqli_connect('localhost','root','','ajaxdb');
    					
    					if(!$conn)
    					{
    						die(mysqli_error());
    					}
    					
    					if(isset($_POST['submit']))
    					    
    					{
    						$name = trim($_POST['name']);
    						$msg = trim($_POST['msg']);
    						
    						$sql = "INSERT INTO chat (name,msg) VALUES ('$name','$msg')";
    						$rs = mysqli_query($conn, $sql);
    						$affectedRows = mysqli_affected_rows($conn);
    						
    						if($affectedRows == 1)
    						{
    							$successMsg = "Record has been saved successfully";
    						}
    					}
    					?>
    					
    					<?php
    					/*
    					  blocco dei parametri di connessione
    					*/
    					// nome di host
    					$host = "localhost";
    					// nome del database
    					$db = "ajaxdb";
    					// username dell'utente in connessione
    					$user = "root";
    					// password dell'utente
    					$password = "";
    					
    					/*
    					  blocco try/catch di gestione delle eccezioni
    					*/
    					try {
    					  // stringa di connessione al DBMS
    					  $connessione = new PDO("mysql:host=$host;dbname=$db", $user, $password);
    					  // imposto dell'attributo necessario per ottenere il report degli errori
    					  $connessione->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    					  // selezione e visualizzazione dei dati estratti
    					  foreach ($connessione->query("SELECT * FROM chat") as $row)
    					  {
    						echo $row['name'] ." ". $row['msg'] ." ". $row['date'] . "<br />";
    					  }
    					  // chiusura della connessione
    					  $connessione = null;
    					}
    					catch(PDOException $e)
    					{
    					  // notifica in caso di errore nel tentativo di connessione
    					  echo $e->getMessage();
    					}
    					?>
    					
    					</div>
    				</div>
    		  <form method="post" action="chat.php">
                <p class="lead emoji-picker-container">
                 <input type="text" name="msg" class="form-control" placeholder="Di la tua" data-emojiable="true">
                </p>
    			 Nome:  <input type="text" name="name" placeholder="name"> 
                  <input type="submit" name="submit" value="invia">
            </form>
    			</div>
    		  </div>
    		 <div class="container">
    	    <div class="card">
      <h5 class="card-header">------------------</h5>
      <div class="card-body">
        <h5 class="card-title">-----------------</h5>
        <p class="card-text">------------------------------------------------------------------------------------</p>
      </div>
    </div>
    
        <script>
          $(function() {
            // Initializes and creates emoji set from sprite sheet
            window.emojiPicker = new EmojiPicker({
              emojiable_selector: '[data-emojiable=true]',
              assetsPath: 'lib/img/',
              popupButtonClasses: 'fa fa-smile-o'
            });
            // Finds all elements with `emojiable_selector` and converts them to rich emoji input fields
            // You may want to delay this step if you have dynamically created input fields that appear later in the loading process
            // It can be called as many times as necessary; previously converted input fields will not be converted again
            window.emojiPicker.discover();
          });
        </script>
    	</div>
      </div>
    

    mirkomassarutto 1 Risposta
  • User Attivo

    @imperor con "select * from chat" stai selezionando tutti i messaggi.. dovrebbero essere filtrati in base al parametro dell'utente... ossia in questo caso la session("name")

    Comunque è necessario comprendere la logica con cui utilizzi la chat.. è una chat one-to-one ? o one-to-more

    Diciamo, da quello che immagino sia one-to-one

    Database:
    id (identificativo univoco)
    sender (identificativo di colui che scrive)
    receiver (identificativo del destinatario del messaggio)

    select * from chat where sender = 'MyUserSession' or receiver= 'MyUserSession'

    Ovvio che come identificativo non prenderei il nome.. puoi usare la sessione server o generare un identificativo univoco.. magari poi settarlo in una sessione client..

    p.s.: forse è il caso di aggiornare winzoz :1:


    I 2 Risposte
  • User Attivo

    @mirkomassarutto grazie per la risposta si non hai torto 😀


  • User Attivo

    @mirkomassarutto si infatti questa è la tabbella ```
    CREATE TABLE chat (
    id int(11) NOT NULL,
    msg varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
    name varchar(40) CHARACTER SET utf8 NOT NULL,
    date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


  • User Attivo

    Perdonami ma nella tabella così fatta tutti vedono i messaggi di tutti...
    Quello che ti serve è quindi una variabile sessione che lo tenga loggato..


    I 1 Risposta
  • User Attivo

    @mirkomassarutto prima usavo il mirc era molto più facile personalizzarlo specialmente con il vincula ormai fuori uso..


  • User Attivo

    Non so... io le ho sempre fatte da solo.. la prima in flash.. direi nel 2000 ed era fatta per permettere a più operatori di gestire le richieste di un e-commerce.
    L'ultima l'ho fatta per un evento online di un noto "paninaro" ed in quel caso gestiva sia la chat pubblica (uno stream in cui scrivevano tutti) ed una dedicata al colloquio diretto con i moderatori..