Visualizzazione risultati 1 fino 3 di 3

Discussione: Parse error: syntax error, unexpected T_VARIABLE

  1. #1
    Guest

    Unhappy Parse error: syntax error, unexpected T_VARIABLE

    Mi aiutate? Perfavore:


    Codice PHP:
    <? php

    $host
    = "localhost";
    $dbuser= "forumita2012";
    $dbpassword= "NON LA METTO";
    $dbname= "my_forumita2012";

    $conn = mysql_connect($host,$dbuser,$dbpass);
    if(
    $conn==0){
    echo
    "Connessione fallita";
    }

    $db_select=mysql_select_db($dbname,$conn);

    $user = $POST ['user'];
    $password = $POST ['password'];

    if(
    $user == '' or $password==''){
    echo
    "Compila tutti i campi!";
    }
    else {
    $query="Insert Into 'utente' ('username' , 'password') VALUES ("$user", "password")";

    $query2= mysql_query($query);
    }
    ?>
    Mi fa Parse error: syntax error, unexpected T_VARIABLE on line 3
    Ultima modifica di alemoppo : 23-08-2012 alle ore 11.29.45 Motivo: +tag [php]

  2. #2
    Guest

    Predefinito

    Così dovrebbe andare

    Codice PHP:
    <?php

    session_start
    ();

    $host = "localhost";
    $dbuser = "forumita2012";
    $dbpassword = "NON LA METTO";
    $dbname = "my_forumita2012";

    $conn = mysql_connect($host,$dbuser,$dbpass);
    if(
    $conn == 0){
    echo
    "Connessione fallita";
    }

    $db_select=mysql_select_db($dbname,$conn);

    $user = $POST ['user'];
    $password = $POST ['password'];

    if(
    $user == '' or $password == ''){
    echo
    "Compila tutti i campi!";
    }
    else {
    $query = "Insert Into 'utente' ('username' , 'password') VALUES ('$user', 'password')";

    $query2 = mysql_query($query);
    }

    ?>
    Era pieno di errori di sintassi.
    Ultima modifica di australiafever : 23-08-2012 alle ore 11.02.51

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Anche questa riga ha un errore sintattico, e uno semantico:

    Codice PHP:
    $query="Insert Into 'utente' ('username' , 'password') VALUES ("$user", "password")";
    Quello sintattico si vede ad occhio: le virgolette di $user e password interrompono la stringa, provocando un errore.
    Quello semantico, è che ogni volta riscrive "password", invece del valore che (credo) dovrebbe scrivere: la password scritta dall'utente.

    Una soluzione potrebbe essere:


    Codice PHP:
    $query="INSERT INTO utente (username, password) VALUES ('$user', '$password')";
    o, come preferisco io:
    Codice PHP:
    $query='INSERT INTO utente (username, password) VALUES (\''.$user.'\',\' '.$password.'\')';
    Altra cosa (imprecisione): sulla documentazione c'é scritto che in caso di errore, la mysql_connect() ritorna FALSE, e non 0. Su PHP sono due cose differenti, e non come ad esempio in C, che le due cose coincidono.
    Quindi, il controllo si potrebbe fare:
    Codice PHP:
    if($conn === FALSE){
    echo
    "Connessione fallita";
    }
    (anche se poi in questo modo lo script continua comunque, e tenta di selezionare il db e fare le query!).
    Come ho detto però è una imprecisione, perché con "==0" dovrebbe funzionare comunque; ma non puoi sapere a priori se il resource ritornato dalla funzione può valere 0: in questo caso, lo script presenterà l'errore anche se in realtà non c'é!

    Inoltre, occhio all'sql_injection: quel codice immette le variabili $user e $password così come provengono dal form! Dovresti almeno prima farle passare per la mysql_real_escape_string().

    Altro consiglio, è di verificare con la isset(), se veramente esistono i parametri $_POST['user'] e $_POST['password'] (prima di assegnarli alle variabili).

    Infine, per manipolare mysql, si consiglia mysqli o PDO_MySQL, e non le (vecchie) funzioni che stai usando. Per approfondimenti, leggi qui.

    Ciao!
    Ultima modifica di alemoppo : 23-08-2012 alle ore 12.01.15

Regole di scrittura

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