Visualizzazione risultati 1 fino 30 di 30

Discussione: problema con una pagina di interrogazione db

  1. #1
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Unhappy problema con una pagina di interrogazione db

    Salve a tutti ho un problema su questa pagina:
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>Interrogazione db</title>

    </head>



    <body>

    <?php

    // Connecting, selecting database
    session_start();
    $link = mysql_connect('localhost', '', '')

    or die(
    'Could not connect: ' . mysql_error());

    mysql_select_db('my_manulazph') or die('Could not select database');

    // Performing SQL query

    $utente = mysql_real_escape_string($_POST['utente']); // è meglio togliere caratteri come l'apostrofo (' viene rimpiazzato con \')
    $pwd=mysql_real_escape_string($_POST['password']);
    $query = "SELECT * FROM pinco WHERE ID='".$utente."' AND PASSWORD='".$pwd."' ";
    $result = mysql_query($query) or die('Query non effettuata');

    $num_rows = mysql_num_rows($result);



    if(
    $num_rows==0){
    //non ho trovato alcun utente con nome e pwd indicate rimando a pagina inizio
    $location = 'errore_login.php';
    }

    else{
    //qualcosa ho trovato inizializzo variabili di sessione e stabilisco la tipologia di utente che registro nella variabile $tipuser
    $_SESSION['id_utente']=$utente;
    //$tipuser=mysql_result($result,0,'tipo');
    //$_SESSION['tipo']=$tipuser;
    //$_SESSION['sesso']=$sesso;

    //il comando switch su una var consente di eseguire un blocco istruzioni a seconda del valore della variabile
    switch ($utente) {
    case
    "prova":
    //rimando al link per docenti
    $location = 'utenti/prova.php';
    break;
    case
    "prova1":
    //rimando al link per docenti
    $location = 'utenti/prova1.php';
    break;
    default:
    //rimando al link per tutti quelli che non rientrano nei casi precedenti
    $location = 'errore_login.php';
    break;
    }
    }

    ?>
    <script>
    self.opener.location.href = '<?=$location; ?>';
    self.close();
    </script>
    <?

    // Free resultset
    mysql_free_result($result);
    // Closing connection
    mysql_close($link);
    ?>
    </body>

    </html>
    Questa mi dovrebbe fare una query su un database di altervista....però devo aver fatto un errore nella scrittura del codice e...quando vado a caricarla non mi funziona (si connette al database ma non procede) gli potreste dare un'occhiata?

    grazie in anticipo

  2. #2
    Guest

    Predefinito

    Io l'ho provata e funziona.
    Dovresti dire cosa vorresti facesse e cosa invece fa: stampa qualche messaggio di errore o fa una pagina bianca? In quale parte dell'if va (ovvero quante righe ritorna la query)?

  3. #3
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Predefinito

    dovrebbe reindirizzarmi ad altre pagine....se è prova all'ind. ''utenti/prova.php'' se è prova1 all'ind. ''utenti/prova1''

    invece mi stampa solo la pagina bianca

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Se devi solo effettuare una redirezione, puoi evitare di mandare una pagina in output. Basta una chiamata a header(), così:

    Codice PHP:
    header('Location: http://blabla.bla/blablabla/');

  5. #5
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Predefinito

    io l'ho creata così perchè faccio una Query sul db per sapere se l'utente esiste ed imbare alla categoria (prova, prova1, ...(ne inserirò altri)) mi deve reindizizzare a pagine differenti....

    quendo però ho caricato questo doc non mi reindirizza ma...

    • si collega al db
    • e si ferma facendo comparire la pagina vuota quindi bianca

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da manulazPH
    io l'ho creata così
    No, non l'hai creata tu. Questa pagina l'ha creata fabio1cgec e hai modificato quella che ho postato io.
    Quella pagina veniva aperta come popup e quindi se vuoi accederci direttamente (cioè non in una popup) ed essere reindirizzato, devi usare ciò che ha detto dreadnaut:
    Codice PHP:
    header('Location: ' . $location);
    al posto di
    Codice PHP:
    ?>
    <script>
    self.opener.location.href = '<?=$location; ?>';
    self.close();
    </script>
    <?
    Ultima modifica di giochidicartenc : 05-01-2013 alle ore 21.35.32

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Ed in più, devi assicurarti che la pagina non mandi nulla in output, neanche una riga vuota.

  8. #8
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Predefinito

    sono io Fabio....solo col profilo di un mio amico.....(che ha bisongo di una mano col suo sito) e gli sto dando una mano ma c'è sto codice k mi sta facendo impazzire
    Citazione Originalmente inviato da giochidicartenc Visualizza messaggio
    No, non l'hai creata tu. Questa pagina l'ha creata fabio1cgec e hai modificato quella che ho postato io.
    Quella pagina veniva aperta come popup e quindi se vuoi accederci direttamente (cioè non in una popup) ed essere reindirizzato, devi usare ciò che ha detto dreadnaut:
    Codice PHP:
    header('Location: ' . $location);
    al posto di
    Codice PHP:
    ?>
    <script>
    self.opener.location.href = '<?=$location; ?>';
    self.close();
    </script>
    <?

  9. #9
    Guest

    Predefinito

    Ah, scusa allora.
    Comunque sicuro che con header() non funzioni? Perché io ho provato ora e funziona, e siccome $location è sempre settata (anche nel caso in cui la query non funzionasse avrebbe come valore 'errore_login.php') dovrebbe sempre cambiare pagina (a me dà errore 404 perché non la ho).
    Inoltre, oltre a guardare se la pagina è vuota, hai controllato che cambi l'indirizzo della pagina? Magari hai già creato una pagina vuota chiamata errore_login.php e quindi non compare nulla.

  10. #10
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Predefinito

    adesso ho provato con header() e mi rimadnda a errore_login....ache se l'account esiste.....asp ti scrivo il codice

    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>Interrogazione db</title>

    </head>



    <body>

    <?php

    // Connecting, selecting database
    session_start();
    $link = mysql_connect('localhost', '', '')

    or die(
    'Could not connect: ' . mysql_error());

    mysql_select_db('my_manulazph') or die('Could not select database');

    // Performing SQL query

    $utente = mysql_real_escape_string($_POST['utente']); // è meglio togliere caratteri come l'apostrofo (' viene rimpiazzato con \')
    $pwd=mysql_real_escape_string($_POST['password']);
    $query = "SELECT * FROM pinco WHERE ID='".$utente."' AND PASSWORD='".$pwd."' ";
    $result = mysql_query($query) or die('Query non effettuata');

    $num_rows = mysql_num_rows($result);



    if(
    $num_rows!=0){
    //non ho trovato alcun utente con nome e pwd indicate rimando a pagina inizio
    //$location = 'errore_login.php';
    $_SESSION['id_utente']=$utente;
    switch (
    $utente) {
    case
    "prova":
    //rimando al link per docenti
    header('Location: utenti/prova.php'. $location);
    break;
    case
    "prova1":
    //rimando al link per docenti
    header('Location: utenti/prova1.php'. $location);
    break;
    default:
    //rimando al link per tutti quelli che non rientrano nei casi precedenti
    header('Location: errore_login.php'. $location);
    break;
    }
    }
    else{
    header('Location: errore_login.php'. $location);
    }


    // Free resultset
    mysql_free_result($result);
    // Closing connection
    mysql_close($link);
    ?>
    </body>

    </html>

  11. #11
    Guest

    Predefinito

    Ma, ti avevo detto di sostituire solo lo script JS, perché hai modificato tutto?
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>Interrogazione db</title>

    </head>



    <body>

    <?php

    // Connecting, selecting database
    session_start();
    $link = mysql_connect('localhost', '', '')

    or die(
    'Could not connect: ' . mysql_error());

    mysql_select_db('my_manulazph') or die('Could not select database');

    // Performing SQL query

    $utente = mysql_real_escape_string($_POST['utente']); // è meglio togliere caratteri come l'apostrofo (' viene rimpiazzato con \')
    $pwd=mysql_real_escape_string($_POST['password']);
    $query = "SELECT * FROM pinco WHERE ID='".$utente."' AND PASSWORD='".$pwd."' ";
    $result = mysql_query($query) or die('Query non effettuata');

    $num_rows = mysql_num_rows($result);



    if(
    $num_rows==0){
    //non ho trovato alcun utente con nome e pwd indicate rimando a pagina inizio
    $location = 'errore_login.php';
    }

    else{
    //qualcosa ho trovato inizializzo variabili di sessione e stabilisco la tipologia di utente che registro nella variabile $tipuser
    $_SESSION['id_utente']=$utente;
    //$tipuser=mysql_result($result,0,'tipo');
    //$_SESSION['tipo']=$tipuser;
    //$_SESSION['sesso']=$sesso;

    //il comando switch su una var consente di eseguire un blocco istruzioni a seconda del valore della variabile
    switch ($utente) {
    case
    "prova":
    //rimando al link per docenti
    $location = 'utenti/prova.php';
    break;
    case
    "prova1":
    //rimando al link per docenti
    $location = 'utenti/prova1.php';
    break;
    default:
    //rimando al link per tutti quelli che non rientrano nei casi precedenti
    $location = 'errore_login.php';
    break;
    }
    }

    header('Location: ' . $location);

    // Free resultset
    mysql_free_result($result);
    // Closing connection
    mysql_close($link);
    ?>
    </body>

    </html>
    Se però non sei nella root del sito (cioè in miosito.altervista.org/questa_pagina.php) allora al posto di
    Codice PHP:
    header('Location: ' . $location);
    dovrai mettere
    Codice PHP:
    header('Location: http://miosito.altervista.org/' . $location);

  12. #12
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Predefinito

    scusa non ho capito....cosa e come devo sostituire?

  13. #13
    Guest

    Predefinito

    Ti ho postato il codice già fatto.

  14. #14
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    E lo scrivo un'altra volta: se usate header() + Location la pagina non deve mandare in output nulla. Nessun tag <html>, nessuna riga di testo, niente.

  15. #15
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    E lo scrivo un'altra volta: se usate header() + Location la pagina non deve mandare in output nulla. Nessun tag <html>, nessuna riga di testo, niente.
    Ah, questo non lo sapevo (e non avevo visto il tuo post precedente), ma a me funzionava lo stesso, anche con la parte HTML...
    Allora dovresti usare questo (ho solo tolto l'output)
    Codice PHP:
    <?php

    // Connecting, selecting database
    session_start();
    $link = mysql_connect('localhost', '', '')

    or die(
    'Could not connect: ' . mysql_error());

    mysql_select_db('my_manulazph') or die('Could not select database');

    // Performing SQL query

    $utente = mysql_real_escape_string($_POST['utente']); // è meglio togliere caratteri come l'apostrofo (' viene rimpiazzato con \')
    $pwd=mysql_real_escape_string($_POST['password']);
    $query = "SELECT * FROM pinco WHERE ID='".$utente."' AND PASSWORD='".$pwd."' ";
    $result = mysql_query($query) or die('Query non effettuata');

    $num_rows = mysql_num_rows($result);



    if(
    $num_rows==0){
    //non ho trovato alcun utente con nome e pwd indicate rimando a pagina inizio
    $location = 'errore_login.php';
    }

    else{
    //qualcosa ho trovato inizializzo variabili di sessione e stabilisco la tipologia di utente che registro nella variabile $tipuser
    $_SESSION['id_utente']=$utente;
    //$tipuser=mysql_result($result,0,'tipo');
    //$_SESSION['tipo']=$tipuser;
    //$_SESSION['sesso']=$sesso;

    //il comando switch su una var consente di eseguire un blocco istruzioni a seconda del valore della variabile
    switch ($utente) {
    case
    "prova":
    //rimando al link per docenti
    $location = 'utenti/prova.php';
    break;
    case
    "prova1":
    //rimando al link per docenti
    $location = 'utenti/prova1.php';
    break;
    default:
    //rimando al link per tutti quelli che non rientrano nei casi precedenti
    $location = 'errore_login.php';
    break;
    }
    }

    header('Location: ' . $location);

    // Free resultset
    mysql_free_result($result);
    // Closing connection
    mysql_close($link);
    ?>
    EDIT: in effetti hai anche messo session_start() dopo l'HTML (non l'avevo notato prima), e anche lei vuole che non ci sia l'output prima della sua invocazione, se non sbaglio.
    Ultima modifica di giochidicartenc : 05-01-2013 alle ore 23.03.19

  16. #16
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Predefinito

    niente non mi va.....mi manda sempre su errore_login

  17. #17
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Predefinito

    http://manulazph.altervista.org/pagina_di_login.php

    questo è il link:

    ID= prova
    pass= 123

    prova così vedi cosa accade :)

  18. #18
    Guest

    Predefinito

    In quale va delle due? Cioè $location prende il valore in
    Codice PHP:
    if($num_rows==0)
    o nel default dello switch?
    P.S: se vuoi sapere in quale va basta che modifichi uno dei due, ad esempio
    if($num_rows==0){
    //non ho trovato alcun utente con nome e pwd indicate rimando a pagina inizio
    $location = 'errore_login2.php';
    }
    e vedi dove ti manda.
    Ultima modifica di giochidicartenc : 05-01-2013 alle ore 23.09.11

  19. #19
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Predefinito

    va nel
    Codice PHP:
    if($num_rows==0)

  20. #20
    Guest

    Predefinito

    Il che significa che la query non funziona. Fai
    Codice PHP:
    $query = "SELECT * FROM pinco WHERE ID='".$utente."' AND PASSWORD='".$pwd."' ";
    $result = mysql_query($query) or die('Query non effettuata');
    echo
    $query;
    e guarda se la query che invia è giusta (puoi anche copiarla e incollarla in PHPMyAdmin e vedere se ti restituisce qualcosa).

  21. #21
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Predefinito

    copiando il codice direttamente in msnQuery mi da k c'è un errore nella sintassi

  22. #22
    Guest

    Predefinito

    Ehm...sì, magari potresti dirci la query e il messaggio d'errore sintattico.

  23. #23
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Predefinito

    la query l'ho copiata da quella k mi hai dato tu...
    l'errore è:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$query = &quot;SELECT * FROM pinco WHERE ID='&quot;.$utente.&quot;' AND PASSWORD='&quot;.$pwd.&quot;' &quot;' at line 2

  24. #24
    Guest

    Predefinito

    Eh già, perché tu dovevi fare la echo, prendere ciò che stampava e poi inserirla (ti ho proprio scritto il pezzo di codice). Dovrebbe stampare
    Codice:
    SELECT * FROM pinco WHERE ID='prova' AND PASSWORD='123'
    Se così fosse, allora hai un problema nel DB e non nella pagina, altrimenti c'è qualcosa che non va con mysql_real_escape_string().

  25. #25
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Predefinito

    anche copiando il codiche k mi hai scritto tu nella pagina di interrogazione al db non mi stampa niente ma mi rimanda a errore di login

  26. #26
    Guest

    Predefinito

    No, devi impedirglielo. Commenta la header.

    EDIT: cioè
    Codice PHP:
    //header('Location: ' . $location);
    Ultima modifica di giochidicartenc : 05-01-2013 alle ore 23.52.34

  27. #27
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Predefinito

    si c'è...
    se ti mando come mex primato i codici di accesso al db puoi fare delle prove se vuoi

  28. #28
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Predefinito

    adesso commentando la header va....e mi stampa:

    SELECT * FROM pinco WHERE ID='prova' AND PASSWORD=''

  29. #29
    Guest

    Predefinito

    Ora va.
    Codice PHP:
    $pwd=mysql_real_escape_string($_POST['password']);
    Il campo della form si chiama pwd.
    Codice PHP:
    $pwd=mysql_real_escape_string($_POST['pwd']);
    EDIT: non dare le tue credenziali in giro.
    Ultima modifica di giochidicartenc : 06-01-2013 alle ore 00.05.26

  30. #30
    manulazPH non è connesso Neofita
    Data registrazione
    05-01-2013
    Messaggi
    19

    Predefinito

    questo dove devo metterlo? per favore preparami il codice :)

Regole di scrittura

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