Visualizzazione risultati 1 fino 3 di 3
Like Tree3Likes
  • 1 Post By mzanella
  • 2 Post By GraphOGLRisorse

Discussione: visualizzare profilo utente in chat

  1. #1
    fcfclean non è connesso Utente giovane
    Data registrazione
    17-09-2014
    Messaggi
    97

    Predefinito visualizzare profilo utente in chat

    buongiorno sono riuscito ad assemblare un sito web dove l'utente può registrarsi e modificare il suo profilo con upload foto profilo ma non riesco a far visualizzare il profilo utente cioè se l'utente clicca sul nome in chat non stampa nulla ecco ciò che ho fatto il sito usa le sessioni chiedo aiuto grazie

    pagina chat:
    -----------------------
    Codice PHP:
    <?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_ERRMODEPDO::ERRMODE_EXCEPTION);
                          
    // selezione e visualizzazione dei dati estratti
                          
    foreach ($connessione->query("SELECT * FROM chat") as $row)
                          {
                            echo 
    $row['name'] ." "$row['msg'] ."<br />";
                            echo 
    '<td><a href="profilo.php?id=' $row['id'] . '">Profilo</a></td>';
                          }
                          
    // chiusura della connessione
                          
    $connessione null;
                        }
                        catch(
    PDOException $e)
                        {
                          
    // notifica in caso di errore nel tentativo di connessione
                          
    echo $e->getMessage();
                        }
                        
    ?>
    ---------------------
    pagina profilo.php
    Codice PHP:
     <?php
                                        
    include 'db.php';
                                        
    $id $_GET['id'];
                                        
    $query=mysqli_query($con,"SELECT * FROM users where id='$id'")or die(mysqli_error());
                                        
    $row=mysqli_fetch_array($query);
                                          
    ?>
                                    <img id="myImg" src="uploads/unnamed.jpg" width="200" height="200">
                                </div>
                            </div>
                        </div>
                        <div class="col-md-6">
                            <div class="profile-head">
                                        <h5>
                                        dddddddddddddddddddddddd
                                        </h5>
                                        
                                        <p class="proile-rating"></p>
                                        <div class="container">
                                      <div class="row">
                                         <div class="card-header"><p></p>  
                                        <li><strong> Nome: </strong><?php echo $row['name']; ?></li>
                                        <li><strong> Anni: </strong><?php echo $row['age']; ?></li>
                                        <li><strong> Genere: </strong><?php echo $row['gender']; ?></li>
                                        <li><strong> Stato: </strong><?php echo $row['status']; ?></li>
                                        <li><strong> Data registrazione: </strong><?php echo $row['create_datetime']; ?></li></div>
                                        <div class="card" style="width: 14rem;">
    ---------------------
    questa è la pagina login.php che controlla le sessioni

    Codice PHP:
    <?php
        
    require('db.php');
        
    session_start();
        
    // When form submitted, check and create user session.
        
    if (isset($_POST['name'])) {
            
    $name stripslashes($_REQUEST['name']); 
              
    // removes backslashes
            
    $username mysqli_real_escape_string($con$username);
            
    $password stripslashes($_REQUEST['password']);
            
    $password mysqli_real_escape_string($con$password);
            
    // Check user is exist in the database
            
    $query    "SELECT * FROM `users` WHERE name='$name'
                         AND password='" 
    md5($password) . "'";
            
    $result mysqli_query($con$query) or die(mysql_error());
            
    $rows mysqli_num_rows($result);
            if (
    $rows == 1) {
                
    $_SESSION['name'] = $name;
                 
    $_SESSION['id'] = $id;
                
    // Redirect to user dashboard page
                
    header("Location: dashboard.php?id=$id);
            } else {
                echo 
    "<div class='form'>
                      <h3>Incorrect Username/password.</h3><br/>
                      <p class='link'>Click here to <a href='login.php'>Login</a> again.</p>
                      </div>"
    ;
            }
        } else {
    ?>
        <form class="form" method="post" name="login">
            <h4 class="login-title">Accesso utenti registrati</h4>
            <input type="text" class="login-input" name="name" placeholder="name" autofocus="true"/>
            <input type="password" class="login-input" name="password" placeholder="Password"/>
            <input type="submit" value="Login" name="submit" class="login-button"/>
            <p class="link">non sei registrato? <a href="registration.php">Registrati su socialchat</a></p>
      </form>
    <?php
        
    }
    ?>
    Ultima modifica di alemoppo : 17-01-2021 alle ore 20.22.36 Motivo: +tag [php]

  2. #2
    mzanella è connesso ora AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,844

    Predefinito

    Stai usando PDO in una pagina, e mysqli nelle altre due: non è un errore, ma molto strano. È preferibile scegliere una delle due API ed essere consistente con quella.

    Stai utilizzando md5 per salvare le password nel database: come indicato nella documentazione, non è uno strumento sufficientemente sicuro. Teoricamente questo ti crea problemi col GDPR. Utilizza il password hashing di PHP.

    In questo frammento:
    Codice:
    echo '<td><a href="profilo.php?id=' . $row['id'] . '">Profilo</a></td>';
    stai utilizzando i valori della colonna id della tabella chat per generare gli URL alle pagine dei profili. Questo non sembra corretto: basandosi sul nome, la colonna id dovrebbe essere un identificatore dei singoli messaggi, non degli utenti che li hanno scritti. Dovresti avere una colonna user_id nella tabella chat (che, a proposito, avrebbe più senso se si chiamasse chat_message) da poter usare per questo scopo.

    In questo frammento:
    Codice PHP:
    foreach ($connessione->query("SELECT * FROM chat") as $row
    stai richiedendo simultaneamente tutti i record nella tabella chat. Non è un errore, ma il consumo di memoria aumenterà in proporzione al numero di messaggi inviati nello storico della chat. Prima o poi diventeranno così tanti che la pagina sarà, inizialmente, pesante da caricare e, successivamente, troppo costosa da elaborare producendo un errore out of memory. Utilizza una paginazione per risolvere il problema.

    Infine, presta attenzione ad alcune piccole imprecisioni nel codice:
    Codice:
    // Stai mescolando tag che vanno al di fuori delle tabelle con <td>
    echo $row['name'] ." ". $row['msg'] ."<br />";
    echo '<td><a href="profilo.php?id=' . $row['id'] . '">Profilo</a></td>'
    
    // Non stai realmente mostrando la foto del profilo
    <img id="myImg" src="uploads/unnamed.jpg" width="200" height="200">
    
    // "proile" invece di "profile"
    <p class="proile-rating"></p>
    fcfclean likes this.

    I suggerimenti che do più spesso:


  3. #3
    GraphOGLRisorse è connesso ora AlterGuru
    Data registrazione
    14-02-2015
    Messaggi
    1,749

    Predefinito

    Salve,
    quando mette i codici nel forum, rende meglio se usa i tag: [code][/code ](codice generico), [html][/html ] e [php][/php ].

    Qui non si tratta di poche riche di codice, quindi se può fare la cortesia di modifcare il messaggio(non aggiurne uno modificato) e aggiungere questo prima dell'inizio del codice [php] e questo dopo la fine [/php ], agevola chi s'interessa a rispoderle oltre che chiunque legga il codice.

    PS. Lo spazio che sta prima di ] nelle chiusure dei tag va tolto.

    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 17-01-2021 alle ore 15.36.25
    fcfclean and mzanella like this.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •