• ModSenior

    C'è un errore di sintassi nella query che poi viene usata nella riga 27 dalla funzione mysql_num_rows.


  • User

    Nel codice ho modificato solo il collegamento alla tabella.
    Questo il codice:
    [PHP]<?php
    // Includo la connessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['login']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
    $user = addslashes($user);
    $pass = addslashes($pass);
    }

    // Crypto la password e la confronto con quella nel database
    $pass = md5($pass);

    // Controllo l'utente esiste
    $query = mysql_query("SELECT id FROM gestore WHERE user = '$user' AND pass = '$pass' LIMIT 1");

    // Se ha trovato un record
    if(mysql_num_rows($query) == 1)
    {
    // prelevo l'id dal database
    $login = mysql_fetch_array($query);

    // Creo una variabile di sessione
    $_SESSION['login'] = $login['id'];

    // reindirizzo l'utente
    header('Location: privata.php');
    exit;
    }
    // se non esiste da l'errore
    else
    die('Nome Utente o Password errati');
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ".w3./TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="
    ..o*/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    </head>
    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="login" type="submit" value="Login" /><br />
    </form>
    </body>
    </html>[/PHP]


  • ModSenior

    Metti:
    [php]
    $query = mysql_query("SELECT id FROM gestore WHERE user = '$user' AND pass = '$pass' LIMIT 1") or die(mysql_error());
    [/php]

    Cosi mostra l'errore.


  • User

    Questo l'errore: No database selected.
    Non capisco la registrazione è andata bene, il login no!


  • User

    Questo il codice per la registrazione:
    [PHP]<?php
    // Includo la connessione al database
    require('config1.php');

    // Se il modulo viene inviato...
    if(isset($_POST['registra']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : ''; // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
    $user = addslashes($user);
    $pass = addslashes($pass);
    $mail = addslashes($mail);
    }

    // Controllo il Nome Utente
    if(strlen($user) < 4 || strlen($user) > 12)
    die('Nome Utente troppo corto, o troppo lungo');
    // Controllo la Password
    elseif(strlen($pass) < 4 || strlen($pass) > 12)
    die('Password troppo corta, o troppo lunga');
    // Controllo l'email
    elseif(!eregi("^[a-z0-9][_.a-z0-9-]+@([a-z0-9][0-9a-z-]+.)+([a-z]{2,4})", $mail))
    die('Email non valida');
    // Controllo il nome utente non sia già occupato
    elseif(mysql_num_rows(mysql_query("SELECT user FROM gestore WHERE user = '$user' LIMIT 1")) == 1)
    die('Nome Utente non disponibile');
    // Controllo l'indirizzo email non sia già registrato
    elseif(mysql_num_rows(mysql_query("SELECT mail FROM gestore WHERE mail = '$mail' LIMIT 1")) == 1)
    die('Questo indirizzo email risulta già registrato ad un altro utente');
    // Registrazione dell'utente nel database
    else
    {

    // Crypt della password per garantire una miglior sicurezza
    $pass = md5($pass);

    // Query per l'inserimento dell'utente nel database
    $strSQL = "INSERT INTO gestore (user,pass,mail)";
    $strSQL .= "VALUES('$user', '$pass', '$mail')";
    mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());

    // Reindirizzo l'utente ad una pagina di conferma della registrazione
    header('Location: registrato.php');
    exit;
    }
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "://.w3./TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="
    ://.w3./1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Registrazione</title>
    </head>
    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="mail" type="text" id="mail" value="Emil" onfocus="if(this.value=='Emil') this.value='';" /><br />
    <input name="registra" type="submit" value="Registrati" /><br />
    </form>
    </body>
    </html>[/PHP]


  • ModSenior

    Stai includendo 2 config differenti.


  • User

    Provo, ma hanno lo stesso collegamento al db. Ho fatto una prova per vedere se magari c'èra un errore in uno dei due:


  • User

    Infatti mi da sempre lo stesso errore.


  • ModSenior

    L'errore allora dovrebbe darlo in entrambi.


  • User

    Non capisco! Domani a mente fresca rifaccio tutto da capo.
    Ti ringrazio di tutto l'aiuto che mi hai dato e scusami se son stato un rompi.
    Faccio sapere!


  • ModSenior

    Figurati, nessun problema. 😉


  • User

    Finalmente ho risolto.
    Il problema stava nel database, è la prima volta che mi succede una cosa del genere, in pratica creando la tabella gestore come cliccavo per aprirla mi si disconnetteva.
    ho dovuto cambiare nome alla tabella e tutto è andato.


  • User Newbie

    prova


  • User Newbie

    Ciao a tutti
    Thedarkita o chiunque sappia rispondere ho da fare diverse domande, spero siate pazienti nei miei confronti...premetto che nn riesco a inviare msg sul forum **.
    Sto realizzando una sezione privata in un sito web, ma nn ci riesco.
    Ho provato ad inserire di sana pianta i file che hai messo a disposizione, ma nn funge.
    Ho provato il sito off-line,quando clicco sulla prima pagina ovvero index.php, si apre un'altra pagina in cui mi dice di specificare come aprire tale pagina o se la si vuole salvare.
    Poi ho visto che non hai creato il database con access, ma un file in sql.
    Come faccio a inserire quella query in access?
    Devo fare altre modifiche per il corretto funzionamento della sezione privata.
    Ma l'user e la password per accedere all'area privata devo impostarle nel database.

    grazie in anticipo per la tua pazienza.


  • User Attivo
    1. per provarla offline devi avere apache....lo possiedi?

    2.dacci il link della versione online


  • ModSenior

    Ciao donjovi84,

    questo tutorial utilizza un database mysql.
    Il file sql contiene le query da eseguire per la creazione delle tabelle del database.
    Per utilizzare un database access dovresti modificare tutte le query del tutorial, tieni presente che la maggior parte degli hosting non permettono di collegarsi ad un database access da php.
    Il sito devi provarlo su un server con php installato altrimenti non può essere eseguito, perciò o carichi il tutto su un hosting oppure installi un web server in locale (Puoi installare un pacchetto già completo come xampp per non avere problemi).


  • User Newbie

    Come faccio a creare un database sql?mi potete dire le dritte elementari su come muovermi.


  • User Newbie

    Se volete vedere l'errore che mi esce on-line andate al seguente indririzzo:Se volete vedere l'errore che mi esce on-line andate al seguente indririzzo:merolladivani.com/menu/frame.html
    e cliccate su area clienti.grazie nuovamente.


  • User Newbie

    xhi mi aiuta.


  • User

    Significa che sono errati i dati di acceso al database, devi ricontrollare i dati inseriti nella pagina config.php.