[PHP] sviluppo sitoweb

Discussione in 'PHP' iniziata da jotes, 6 Giugno 2017.

  1. jotes

    jotes Nuovo Utente

    Registrato:
    26 Dicembre 2016
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    ciao a tutti.
    ho da poco cominciato lo sviluppo di un sito web
    per svilupparlo sto usando php, html e sql
    ho un problema con il log in degli utenti.
    premetto che non ricordo mai qual è il tag per avvisare che sto per inserire del codice
    ad ogni modo il codice della tabella utenti è questo:
    CREATE TABLE members
    (ID INT NOT NULL AUTO_INCREMENT,
    Username varchar(64) NOT NULL,
    Email varchar(255) NOT NULL,
    Password varchar(32) NOT NULL,
    PRIMARY KEY (ID));
    e fin qui tutto ok
    il codice per fare la registrazione invece è il seguente:
    PHP:
    <?php
    // richiamo il file di configurazione con i dati del database
    include "config.php";
    // seleziono il database per poterci lavorare
    mysql_select_db($db_name,$db);
    // raccolgo i dati dal form
    $username $_POST['username'];
    $email $_POST['email'];
    $password $_POST['password'];
    // inserisco le informazioni nel database
    mysql_query("INSERT INTO ".$tabella." (Username, Email, Password) VALUES ('$username','$email', '$password')",$db) || die(mysql_error());
    echo 
    "registrazione avvenuta con successo";
    // quindi i dati sono stati salvati nel database e l'utente è registrato
    mysql_close($db);
    ?>
    e anche qui non ci sono problemi. il problema sorge dal lgin. quando io inserisco i dati nel form pur essendo esatti me lo da come se fossero sbagliati. il codice dello script per il login è il seguente:
    PHP:
    <?php
    include "config.php";
    // Procedimento per connettersi al Database
    mysql_select_db($db_name$db) or die("can not select DB);");
    // Nome utente e password inviate attraverso il form
    $username $_POST["username"];
    $password $_POST['password'];
    $sql="SELECT * FROM $tabella WHERE Username='$username' and Password='$password'";
    $result=mysql_query($sql);
    // Mysql_num_row is counting table row
    $count=mysql_num_rows($result);
    // If result matched $myusername and $mypassword, table row must be 1 row
    if($count==1) {
    // Register $myusername, $mypassword and redirect to file "login_success.php"
    $_SESSION['username']= $username;
    $_SESSION['password']= $password;
    header("location:login_success.php");
    }
    else {
    echo 
    "Attenzione username o password errati";
    header("location:index.php");
    }
    ?>
    non capisco quale sia il problema.
    spero di ricevere una risposta. Scusatemi per il codice lungo ma volevo farmi capire in pieno. se volete visitare il sito che è in fase di sviluppo per provare personalmente il link è:
    http://appaccessibili.altervista.org/
     
    Ultima modifica di un moderatore: 7 Giugno 2017
  2. xone

    xone Utente Attivo

    Registrato:
    4 Aprile 2014
    Messaggi:
    165
    Mi Piace Ricevuti:
    12
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    Seo & Social Media Consulting
    Località:
    Salento
    Home Page:
    Ciao, dopo l'apertura del tag <?php occorre startare la sessione:
    PHP:
    <?php
    session_start
    ();
    ?>
    Comunque ricordati di filtrare sempre le variabili POST e GET tramite addslashes ed effettua sempre l'escape dei caratteri dannosi, inoltre per la password ti consiglio di criptarla in MD5 o SHA1
     
  3. jotes

    jotes Nuovo Utente

    Registrato:
    26 Dicembre 2016
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    io ho messo le sessioni in tutti i file php adesso ma continuo a ricevere lo stesso errore.
    in quanto all'escape e alla criptazione delle password preferisco prima poter fare una struttura di base poi inserirò le cose più complesse
     
  4. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.582
    Mi Piace Ricevuti:
    118
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    che errore ti da?
    poi quando posti del codice racchiudilo tra gli appositi bccode, quartultima iconcina barra formattazione del post "inserisci.. -> codice e poi selct cosa (generico, php, html)"
     
  5. jotes

    jotes Nuovo Utente

    Registrato:
    26 Dicembre 2016
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    anche se ho messo session_start(); quando eseguo nonostante le credenziali siano esatte nel login non mi fa loggare.
     
  6. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.582
    Mi Piace Ricevuti:
    118
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    visto così non mi sembra di vedere errori di sintassi a oarte quel $tabella che non so da dove venga e dove sia valorizzato
    comunque metti un var_dump per vedere se la query viene scritta come dovrebbe
    PHP:
    <?php
    session_start
    ();//questa deve essere alla prima riga
    include "config.php";
    // Procedimento per connettersi al Database
    //mysql_select_db($db_name, $db) or die("can not select DB);");questa è gia in mysqli
    // Nome utente e password inviate attraverso il form
    $username $_POST["username"];
    $password $_POST['password'];
    $sql="SELECT * FROM $tabella WHERE Username='$username' and Password='$password'";
    var_dump($sql);//poi lo togli
    $result=mysql_query($sql);
    // Mysql_num_row is counting table row
    $count=mysql_num_rows($result);
    // If result matched $myusername and $mypassword, table row must be 1 row
    if($count==1) {
        
    // Register $myusername, $mypassword and redirect to file "login_success.php"
        
    $_SESSION['username']= $username;
    $_SESSION['password']= $password;
        
    header("location:login_success.php");
    }else {
        echo 
    "Attenzione username o password errati";
        
    header("location:index.php");
    }
    ?>
    e posta quello che riporta
     
  7. jotes

    jotes Nuovo Utente

    Registrato:
    26 Dicembre 2016
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    ho messo il codice che mi hai postato qui e l'errore è:
    Parse error: syntax error, unexpected '"config.php"' (T_CONSTANT_ENCAPSED_STRING) in /membri/appaccessibili/checklogin.php on line 3
     
  8. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.582
    Mi Piace Ricevuti:
    118
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao riposta il codice come l'hai scritto
     
  9. jotes

    jotes Nuovo Utente

    Registrato:
    26 Dicembre 2016
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    PHP:
    <?php
    session_start
    (); //questa deve essere alla prima riga
    include "config.php"// Procedimento per connettersi al Database
    //mysql_select_db($db_name, $db) or die("can not select DB);");questa è gia in mysqli
    // Nome utente e password inviate attraverso il form
    $username $_POST["username"];
    $password $_POST['password'];
    $sql="SELECT * FROM $tabella WHERE Username='$username' and Password='$password'";var_dump($sql);
    //poi lo togli
    $result=mysql_query($sql);
    // Mysql_num_row is counting table row
    $count=mysql_num_rows($result);
    // If result matched $myusername and $mypassword, table row must be 1 row
    if($count==1) {
        
    // Register $myusername, $mypassword and redirect to file "login_success.php"
        
    $_SESSION['username']= $username;
    $_SESSION['password']= $password;
    header("location:login_success.php");
    }else {
        echo 
    "Attenzione username o password errati";
        
    header("location:index.php");
    }
    ?>
     
  10. xone

    xone Utente Attivo

    Registrato:
    4 Aprile 2014
    Messaggi:
    165
    Mi Piace Ricevuti:
    12
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    Seo & Social Media Consulting
    Località:
    Salento
    Home Page:
    Prova a mettere:
    include("config.php");
     
  11. jotes

    jotes Nuovo Utente

    Registrato:
    26 Dicembre 2016
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    ciao a tutti. per caso vedete un errore in questo codice?
    io ho provato a leggerlo con lo screenreader ma non ho rilevato errori
    intendo di sintassi non di funzioni deprecate
    PHP:
    <?php
    session_start
    (); //questa deve essere alla prima riga
    require("config.php"); // Procedimento per connettersi al Database
    mysql_select_db($db_name$db);
    //Nome utente e password inviate attraverso il form
    $username $_REQUEST['username'];
    $password $_REQUEST['password'];
    $sql="SELECT * FROM $tabella WHERE Username='$username' and Password='$password'";var_dump($sql);
    //poi lo togli
    $result=mysql_query($sql);
    // Mysql_num_row is counting table row
    $count=mysql_num_rows($result);
    // If result matched $myusername and $mypassword, table row must be 1 row
    if($count==1) {
        
    // Register $myusername, $mypassword and redirect to file "login_success.php"
        
    $_SESSION['username']= $username;
    $_SESSION['password']= $password;
    header("location:login_success.php");
    }else {
        echo 
    "Attenzione username o password errati";
        
    header("location:index.php");
    }
    misql_close($db);
    ?>
    ho usato $_REQUEST perchè mi dava errore anche con post e get ma ora mi da comunque lo stesso errore
    se volete controllare il sito è:
    http://appaccessibili.altervista.org/
     
  12. xone

    xone Utente Attivo

    Registrato:
    4 Aprile 2014
    Messaggi:
    165
    Mi Piace Ricevuti:
    12
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    Seo & Social Media Consulting
    Località:
    Salento
    Home Page:
    Il codice non ha errori, usando POST non dovresti ricevere errore, io credo che dovresti riguardare il database per verificare che i campi della tabella corrispondano. Facendo il var_dump la query viene eseguita correttamente?
     
  13. jotes

    jotes Nuovo Utente

    Registrato:
    26 Dicembre 2016
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    corrispondono anche i campi nel database
     
  14. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.582
    Mi Piace Ricevuti:
    118
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    ma non dici cosa il var_dump della query restituisce

    dimenticavo: posta cosa hai in config.php
     
  15. jotes

    jotes Nuovo Utente

    Registrato:
    26 Dicembre 2016
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    PHP:
    <?php
    session_start
    ();
    $host="localhost"// Hostname
    $username="appaccessibili"// Mysql username
    $password=""// Mysql password
    $db_name="my_appaccessibili"//Nome del Database
    $tabella="members"// Nome della Tabella
    $db mysql_connect($host,$username,$password);
    ?>
     
  16. Bryan

    Bryan Nuovo Utente

    Registrato:
    18 Giugno 2017
    Messaggi:
    9
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Allora, premetto che non sono un esperto, ma io sto avendo problemi proprio con mysql.
    Ovvero, in php tali codici (mysql_connect and mysql_query) sono deprecati , cioè non si utilizzano più.

    Prova a mettere a mysqli_connect e mysqli_query, che corrispondono alla versione aggiornata.
     
  17. jotes

    jotes Nuovo Utente

    Registrato:
    26 Dicembre 2016
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    ciao brian,
    le funzioni deprecate le aggiornerò più avanti perchè ora sto avendo un errore di sintassi e non riesco a capire quale sia
     
  18. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.582
    Mi Piace Ricevuti:
    118
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    a parte che conviene passare a mysqli, per la connessione usando le vecchie mysql, in quello che hai postato manca la connessione al database
    PHP:
    <?php
    //connessione usando le vecchie funzioni mysql
    $host 'localhost';//nome host
    $username 'appaccessibili';//user name
    $password 'pinco_pallo';//password
    $tabella="members"// Nome della Tabella
    $db_name 'my_appaccessibili';// nome data base
    //---connessione----------------------------------------------------
    $connnessione mysql_connect($host,$username,$password) or die (mysql_error());
    $sel mysql_select_db($db_name) or die (mysql_error());//MANCA QUESTA
    ?>
    se invece usi, meglio, le funzioni mysqli
    PHP:
    <?php
    //connessione usando le nuove funzioni mysqli
    $host 'localhost';//nome host
    $username 'appaccessibili';//user name
    $password 'pinco_pallo';//password
    $tabella="members"// Nome della Tabella
    $db_name 'my_appaccessibili';            // nome data base
    //---connessione----------------------------------------------------
    $connessione mysqli_connect($host,$username,$password$db) or die (mysql_error());
    ?>
    la session_start() è meglio direttamente nella pagina in cui ti serve, comunque alla prima riga
     
  19. jotes

    jotes Nuovo Utente

    Registrato:
    26 Dicembre 2016
    Messaggi:
    27
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    grazie. ma dal check_login.php come richiamo la variabile che contiene mysql_select_db();
     
  20. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.582
    Mi Piace Ricevuti:
    118
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    se usi le vecchie mysql non devi richiamare nulla
    PHP:
    <?php
    require_once"config.php";
    $res=mysql_query("SELECT ecc..");
    //....
    ?>
    se usi le mysqli nella query devi richiamare la variabile di connessione
    PHP:
    <?php
    require_once"config.php";
    $res=mysqli_query($connessione,"SELECT ecc..");
    //....
    ?>
    con le mysqli puoi usare anche la programmazione ad oggetti (ma da non mescolare la procedurale con quella ad oggetti)
     
Sto caricando...

Condividi questa Pagina