Visualizzazione dei risultati da 1 a 7 su 7

Discussione: questioni di sessioni php

  1. #1

    questioni di sessioni php

    salve, vorrei che dopo che un utente si logga nel form, automaticamente dopo si veda il nome utente nella homepage

    codice HTML:
    <?php
    session_start();
    echo $uname;
    ?>
    
    <!DOCTYPE html>
    <html>
        <head>
            <title></title>
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <meta charset="utf-8">
             <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
            <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/3.14.1/math.min.js"></script>
            <link href="config.css" type="text/css" rel="stylesheet">
        </head>
    
        <body>
    
            <div id="form-riconoscimento">
                <h4>modulo di riconoscimento</h4>
                <button onclick="generaUsername()">genera username</button>
                    <table>
                        <form method="get" action="server.php">
    
                            <tr>
                                <td><input type="text" name="username" placeholder="username" id="username" required></td>
                            </tr>    
                            <tr>    
                                <td><input type="password" name="password" placeholder="password"></td>
                            </tr>
                            <tr>
                                <td><input type="radio" name="opzioneUtente" value="registrareUtente">registrasi</td></tr>
                            <tr>
                                <td><input type="radio" name="opzioneUtente" value="loggareUtente">accedere</td>
                            </tr>
                            <tr>
                                <td><input type="submit" value="invio"></td></tr>
                        </form>
                    </table>
            </div>
            <script type="text/javascript">
                codiceAlfa = "HAvc13nmsdw";
                caratteri = codiceAlfa.split(""); //return array
                codici = [];
                function generaUsername(){
                      for(i=0; i<=caratteri.length; i++){
                          codici.push(caratteri[math.randomInt(caratteri.length)]) ;
                      }
                    codice = codici.join(""); //return string
                    document.getElementById("username").value=codice;
                }
      
            </script> 
    
    </body>
    </html>
    Codice PHP:
    <?php
    session_start
    ();
    $conex mysql_connect('localhost''root');
    mysql_select_db("my_laboraccio"$conex);
    $uname $_GET['username'];
    $pw =  $_GET['password'];

    $opzioneUtente $_GET['opzioneUtente'];
        function 
    registraUtente(){
            global 
    $uname;
            echo 
    $uname;
            global 
    $pw;
            
    $sql "SELECT * FROM utenti WHERE username='$uname'";
            
    $resource mysql_query($sql) or die (mysql_error());
            
    $result mysql_num_rows($resource);
            echo 
    $result;
            if(
    $result == 0) {
                
    $sql "INSERT INTO utenti (id, username, password) VALUES (NULL, '$uname', '$pw')";
                
    mysql_query($sql);
                
    header("Refresh:10; url=http://www.laboraccio.altervista.org/");
                  echo 
    "nuovo utente creato";
     
                echo 
    "registrazione completata";
            }
            elseif(
    $result == 1){
                echo 
    "username gia in uso, riprova con un altro";
                  
    header("Refresh:10; url=http://www.laboraccio.altervista.org/");
               }
        }
        
            function 
    loggareUtente(){
            global 
    $uname;
            global 
    $pw;
            
    $sql "SELECT * FROM utenti WHERE username='$uname' AND password='$pw'";
            
    $resource mysql_query($sql) or die (mysql_error());
            
    $result mysql_num_rows($resource);
            if(
    $result == 1) {
                
    $_SESSION['username'] = $uname;
                
    $_SESSION['password'] = $pw;
                echo 
    "benvenuto alla tua area personale".$uname;
                
    header("Refresh:10; url=http://www.laboraccio.altervista.org/");

            
            }
            elseif(
    $result == 0) {print "utente non valido";  
            
    header("Refresh:10; url=http://www.laboraccio.altervista.org/");
            }

        
        }


    if(
    $opzioneUtente == 'registrareUtente'){
        
    registraUtente();
    }
    elseif(
    $opzioneUtente == "loggareUtente") {
        
    loggareUtente();
    }

    ?>

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,400
    Le variabili in sessione si mettono aggiungendo elementi all'array $_SESSION non definendo variabili globali, quel
    global $uname a che serve se già hai la sessione?

    P.S. non usare le funzioni mysql_, sono state abbandonate, minimo passa a myslqi_ (con la i finale), meglio se passi a PDO.
    Ultima modifica di Alhazred; 29-09-2018 a 10:09

  3. #3
    si alhazred poi ho capito che x recuperare dovevo usare la superglobale session, ma non ho capito cosa c'e che non va in questo script

    Codice PHP:
    <?php
    session_start
    ();
    if(isset(
    $_SESSION['username'] == true && $_SESSION['password']== true)){
    echo 
    $_SESSION['username'];
    }
    else{include(
    "index.php");}
    ?>
    OUTPUT
    Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in /membri/laboraccio/s.php on line 3



  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jul 2002
    residenza
    Lyon
    Messaggi
    5,341
    @riccardo94.

    Ti ho già scritto che si possono passare dei parametri alle funzioni. Se scrivi tutto il codice del tuo progetto nel modo attuale allora buona fortuna.

    Per l'errore che indichi.

    codice:
    if(isset($_SESSION['username']) && isset($_SESSION['password'])) {
    


    Mi sa che devi studiare di più, leggere la documentazione. isset ti dice se una variabile esiste o meno.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Quote Originariamente inviata da badaze Visualizza il messaggio
    @riccardo94.

    Ti ho già scritto che si possono passare dei parametri alle funzioni. Se scrivi tutto il codice del tuo progetto nel modo attuale allora buona fortuna.

    Per l'errore che indichi.

    codice:
    if(isset($_SESSION['username']) && isset($_SESSION['password'])) {
    


    Mi sa che devi studiare di più, leggere la documentazione. isset ti dice se una variabile esiste o meno.
    scusami il ritardo, guarda credo che prima penso a finire il programma e poi ci pensero a ottimizzarlo, adesso il mio problema e che ho uno script che non funziona a dovere
    Codice PHP:
    <title>profilo.php</title>
    <?php

    session_start
    ();


    if(isset(
    $_SESSION['username'])== false) {
        
    header("location: http://laboraccio.altervista.org/");
    }


    ?>

    <html>
        <head>
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <meta charset="utf-8">
            <style>
            div#chat {
                width:500px;
                height:500px;
                border: solid black 2px;
            }
            div#messaggio input[type="text"] {
                width:100%;
                padding:10px;
            }
            </style>
        </head>
            <script type="text/javascript">
        function sendSms(){
            sms = document.getElementById("sms").value;
            chat = document.getElementById("chat");
            console.log(sms);
            ajax = new XMLHttpRequest();
            
            ajax.open("get", "server.php?sms="+sms, true);
            ajax.send();
            ajax.onreadystatechange = function(){
                if(ajax.readyState == 4 && ajax.status == 200){
                    console.log("ajax: "+ajax.responseText);
                    chat.innerHTML = ajax.responseText;
                }
            }
            
         }
            
            
            
        </script>
        <body>
            <div id="chat"></div>
            <div id="messaggio">
                <input type="text" name="sms" id="sms" placeholder="inserisci il tuo messaggio qui">
                <button onclick="sendSms()" id="submit">invio</button>                
            </div>
            <div>
            
                <form method="post" action="server.php">
                    <input type="radio" name="sessione" value="logout">logout
                    <input type="submit" value="invio">
                </form>
            </div>
        <body>
    in teoria se le credenziali sono giuste,dovrei atterrare su questa pagina, ma ogni volta mi rimanda sempre al index

    invece se io accedo manualmente allo script di prima attraverso l'url ovvero http://laboraccio.altervista.org/profilo.php
    mi fa accedere senza problemi.

    di mezzo tra i due script c'e quest altro script

    Codice PHP:
    <title>server.php</title>
    <?php
    session_start
    ();
    $conex mysql_connect('localhost''root');
    mysql_select_db("my_laboraccio"$conex);

    /*variabili di index.php*/
    $uname $_GET['username'];
    $pw =  $_GET['password'];
    $opzioneUtente $_GET['opzioneUtente'];

    /*variabili di profilo.php */
    echo $_GET['sms'];




    if(
    $_POST['sessione'] == "logout") {
        
    session_unset();
        
    session_destroy();
        
    header("Refresh:10; url=http://www.laboraccio.altervista.org/");
        echo 
    "sessione scaduta";
    }
        function 
    registraUtente(){
            global 
    $uname;
            echo 
    $uname;
            global 
    $pw;
            
    $sql "SELECT * FROM utenti WHERE username='$uname'";
            
    $resource mysql_query($sql) or die (mysql_error());
            
    $result mysql_num_rows($resource);
            echo 
    $result;
            if(
    $result == 0) {
                
    $sql "INSERT INTO utenti (id, username, password) VALUES (NULL, '$uname', '$pw')";
                
    mysql_query($sql);
                
    header("Refresh:10; url=http://www.laboraccio.altervista.org/");
                  echo 
    "nuovo utente creato";
     
                echo 
    "registrazione completata";
            }
            elseif(
    $result == 1){
                echo 
    "username gia in uso, riprova con un altro";
                  
    header("Refresh:10; url=http://www.laboraccio.altervista.org/");
               }
        }
        
            function 
    loggareUtente(){
            global 
    $uname;
            global 
    $pw;
            
    $sql "SELECT * FROM utenti WHERE username='$uname' AND password='$pw'";
            
    $resource mysql_query($sql) or die (mysql_error());
            
    $result mysql_num_rows($resource);
            if(
    $result == 1) {
                
    $_SESSION['username'] = $uname;
                
    $_SESSION['password'] = $pw;
                echo 
    "benvenuto alla tua area personale".$uname;
                
    header("Refresh:10; url=http://www.laboraccio.altervista.org/profilo.php");

            
            }
            elseif(
    $result == 0) {print "utente non valido";  
            
    header("Refresh:10; url=http://www.laboraccio.altervista.org/");
            }

        
        }


    if(
    $opzioneUtente == 'registrareUtente'){
        
    registraUtente();
    }
    elseif(
    $opzioneUtente == "loggareUtente") {
        
    loggareUtente();
    }

    ?>

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jul 2002
    residenza
    Lyon
    Messaggi
    5,341
    Sul discorso « ottimizzerò dopo che funzionerà » ti darei ragione (guarda la mia firma) se fosse programmato bene.

    Usare global quando il linguaggio ti consente di passare dei parametri non è programmare bene. Non so se questo progetto e per hobby o per lavoro ma fatto com’è adesso sono sicuro che quando funzionerà non farai le modifiche perché ti renderai conto che è un casino farle.
    In informatica quando una cosa è concepita male sin dall’inizio lo rimane per sempre. E ogni modifica andrà ad ampliare il caos.
    Credimi anche se programmo da soli 30 anni da professionista.

    Comunque.
    Hai messo un <title> all’inizio dei file. Questo fa si che quei caratteri vengono mandati al browser. Mentre quando si usa header non si deve mandare nessun carattere prima di header. Vedo poi che usi header altrove dopo avere mandato dati al browser.
    Poi usi $_SESSION[‘username’] in un file e dopo $_GET.
    Non parlo della password in chiaro o dei dati messi in tabella senza controllo.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    e un progetto hobystico, comunque guarda che ho appena tolto il tag title dai due script e ancora continua a rimandarmi al index

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2018 vBulletin Solutions, Inc. All rights reserved.