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
    Data registrazione
    17-09-2014
    Messaggi
    139

    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_ERRMODE, PDO::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 non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    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 non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    3,979

    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
  •