Visualizzazione risultati 1 fino 12 di 12

Discussione: Controllo PHP

  1. #1
    Guest

    Predefinito Controllo PHP

    Ragazzi parto dal fatto che sono un neofita con il php, ho un form per il login che mi manda i campi in questa pagina
    Codice PHP:
    <?php
    Session_start
    ();
    include(
    "config.php");
    $Var=mysql_connect(localhost,$dbuser,$dbpassword);
    mysql_select_db($dbname,$Var) or die("Impossibile selezionare il database.");
    $id=$_POST['id'];
    $psw=$_POST['psw'];
    $controllo='no';
    $VAR= mysql_query("select id,psw from user where user.id=$id and user.psw=$psw");
    while (
    $controllo=='si') {
    If (
    $var==true) {
    echo(
    'connessione avvenuta');
    echo(
    '<meta http-equiv=refresh content="2; url=http://rivah.altervista.org">');
    $controllo='si';
    $_SESSION['ids']=$id;
    $_SESSION['psws']=$psw;
    }
    };
    If (
    $controllo='no') {
    echo(
    'Errore connessione');
    }
    ?>
    solo che mi crea un ciclo infinito che mi stampa sulla pagina controllo.php (questa) il messaggio "connessione avvenuta", che c'è di sbagliato? grazie in anticipo :)
    Ultima modifica di rivah : 14-06-2013 alle ore 19.45.10 Motivo: +tag [php]

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

    Predefinito

    Codice PHP:
    while ($controllo='si')
    Teoricamente avresti dovuto usar l'operatore di uguaglianza, e non di assegnamento.
    (comunque non ho guardato la logica dello script).

    Ciao!

  3. #3
    Guest

    Predefinito

    non avevo visto, ho sistemato ma ora non connette mai anche se metto dati esistenti del db.

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

    Predefinito

    I dati per la connessione li trovi qui.

    Ciao!

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    I dati per la connessione li trovi qui.

    Ciao!
    ?? non è questo il mio problema.

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

    Predefinito

    Citazione Originalmente inviato da rivah Visualizza messaggio
    ma ora non connette mai anche se metto dati esistenti del db.
    Citazione Originalmente inviato da rivah Visualizza messaggio
    ?? non è questo il mio problema.
    Allora quale è il problema?

    Non essendoci i dati di connessione al database in chiaro dello script, visto che hai detto che non ti connette al database ho pensato fosse quello il problema.

    Comunque non ho capito la logica dello script: prima setti $controllo = 'no';
    Poi, while($controllo=='si') come fa ad entrare in quel while?
    Se poi entra, come esce visto che dentro setti $controllo='si'; ?
    (tra l'altro, non ho capito nemmeno l'utilità del while stesso).

    Ciao!

  7. #7
    Guest

    Predefinito

    infatti i cicli terminano quando il valore booleano e falso quindi se non vedo male quello che hai scritto, se uno mette i dati di identificazione corretti il ciclo risulta sempre vero e quindi continuerà all'infinito... e poi perchè hai messo un ciclo ci sono più utenti con lo stesso $id=$_POST['id'];
    $psw=$_POST['psw'];? mi sembra strano...

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

    Predefinito

    Citazione Originalmente inviato da gmda Visualizza messaggio
    se uno mette i dati di identificazione corretti il ciclo risulta sempre vero
    Uhm, dici? Secondo me invece non entra mai perché $controllo='no';. Quindi darà scriverà sempre:

    Codice PHP:
    If ($controllo='no') {
    echo(
    'Errore connessione');
    Ah... forse ti riferivi a questo come "errore di connessione"?

    Ciao!

  9. #9
    Guest

    Predefinito

    ho rivisto il tutto, il ciclo non centra nulla

    Codice PHP:
    <?php

    //Apro la sessione e cancello la sessione precedente
    Session_start();
    unset(
    $_SESSION['user']);
    unset(
    $_SESSION['password']);

    //Includo i dati di connessione al db
    include("config.php");

    //Effettuo la connessione al db
    $Var=mysql_connect(localhost,$dbuser,$dbpassword);
    mysql_select_db($dbname,$Var) or die("Impossibile selezionare il database.");

    //Controllo che la connessione sia avvenuta
    If ($Var=='') {
    die(
    'Errore connessione al db');
    }

    //Passo i valori dalla variabile post ad una nuova variabile
    $id=$_POST['id'];
    $psw=$_POST['psw'];

    //Effettuo la query sul db
    $risultato=mysql_query("select id,psw from user where id='$id' and psw='$psw'");

    //Se $risultato è FALSE stampo il messaggio 'errore login' sennò creo le sessioni e stampo il messaggio 'connessione avvenuta'
    if(!$risultato) {
    echo(
    "errore login");
    } else {
    $_SESSION['user'] = $id;
    $_SESSION['password'] = $psw;
    echo(
    'connessione avvenuta');
    }
    ?>
    ora però mi da sempre connessione avvenuta, anche se i campi id e user non esistono nel db..

  10. #10
    Guest

    Predefinito

    Citazione Originalmente inviato da rivah Visualizza messaggio
    ho rivisto il tutto, il ciclo non centra nulla

    Codice PHP:
    <?php

    //Apro la sessione e cancello la sessione precedente
    Session_start();
    unset(
    $_SESSION['user']);
    unset(
    $_SESSION['password']);

    //Includo i dati di connessione al db
    include("config.php");

    //Effettuo la connessione al db
    $Var=mysql_connect(localhost,$dbuser,$dbpassword);
    mysql_select_db($dbname,$Var) or die("Impossibile selezionare il database.");

    //Controllo che la connessione sia avvenuta
    If ($Var=='') {
    die(
    'Errore connessione al db');
    }

    //Passo i valori dalla variabile post ad una nuova variabile
    $id=$_POST['id'];
    $psw=$_POST['psw'];

    //Effettuo la query sul db
    $risultato=mysql_query("select id,psw from user where id='$id' and psw='$psw'");

    //Se $risultato è FALSE stampo il messaggio 'errore login' sennò creo le sessioni e stampo il messaggio 'connessione avvenuta'
    if(!$risultato) {
    echo(
    "errore login");
    } else {
    $_SESSION['user'] = $id;
    $_SESSION['password'] = $psw;
    echo(
    'connessione avvenuta');
    }
    ?>
    ora però mi da sempre connessione avvenuta, anche se i campi id e user non esistono nel db..
    te la butto così... dovo ancora andare a mangiare e sono di fretta: prova intanto a riguardare la query al data base che c'è qualcosa che non mi torna dopo il select prova a mettere * e poi controlla gli apici penso che non ti servano per le variabili nella query . Fammi sapere....
    Ultima modifica di gmda : 16-06-2013 alle ore 21.29.14

  11. #11
    Guest

    Predefinito

    non cambia nulla :/

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

    Predefinito

    $risultato contiene il valore di mysql_query. Se la query è stata eseguita correttamente, il suo valore è true, indipendentemente dal numero di righe trovate.

    Per visualizzare il numero di righe trovate, devi usare la mysql_num_rows().

    Comunque, specialmente se sei all'inizio, ti consiglio di usare mysqli, e non mysql, perché quest'ultima è obsoleta.

    Altri piccoli errorini nel codice:

    Codice PHP:
    If ($Var=='') {
    die(
    'Errore connessione al db');
    }
    Se la connessione non avviene, la mysql_connect() non ritorna una stringa vuota, ma false. Comunque una stringa vuota è considerata false (con l'operatore == ), quindi dovrebbe funzionare ugualmente.

    -----

    Codice PHP:
    $id=$_POST['id'];
    $psw=$_POST['psw'];
    Prima di usarli, dovresti controllare la loro esistenza ad esempio con la isset().

    -----

    Codice PHP:
    $risultato=mysql_query("select id,psw from user where id='$id' and psw='$psw'");
    Sei a rischio di sql injection. Usa mysql_real_escape_string() per "pulire" i dati ricevuti da POST.

    Ciao!
    Ultima modifica di alemoppo : 16-06-2013 alle ore 23.00.07

Regole di scrittura

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