• ModSenior

    Una volta che il recupero è avvenuto quel campo non ti serve più quindi puoi benissimo lasciarlo vuoto.


  • User

    Ho provato...

    Ecco cosa ho fatto:
    [PHP]<?php
    //Includo la connessione al database
    require('config.php')

    $query_ip = "SELECT id_utente,ip_utente,data FROM ip_utenti INNER JOIN utenti ON ip_utenti.id_utente=utenti.user";

    $result_query_ip = mysql_query($query_ip) OR die("Query non eseguita correttamente. ".mysql_error());

    while($a = mysql_fetch_array($result_query_ip))

    echo ''.$a['user'].' - '.$a['ip_utente'].' - '.$a['data'].'

    ?>[/PHP]

    Ed ovviamente c'è un errore 😛

    Parse error: syntax error, unexpected T_VARIABLE in /membri/rcayla/ip_utenti.php on line 12

    Potete aiutarmi??


  • ModSenior

    Prova cosi:
    [php]
    <?php
    //Includo la connessione al database
    require('config.php')

    $query_ip = "SELECT id_utente,ip_utente,data FROM ip_utenti INNER JOIN utenti ON ip_utenti.id_utente=utenti.user";

    $result_query_ip = mysql_query($query_ip) OR die("Query non eseguita correttamente. ".mysql_error());

    while($a = mysql_fetch_array($result_query_ip))

    echo $a['user'].' - '.$a['ip_utente'].' - '.$a['data'];

    ?>
    [/php]


  • User

    Non va, da quest'errore ancora:

    Parse error: syntax error, unexpected T_VARIABLE in /membri/rcayla/ip_utenti.php on line 12


  • ModSenior

    Manca un ; nel require sarebbe cosi:
    [php]
    <?php
    //Includo la connessione al database
    require('config.php');

    $query_ip = "SELECT id_utente,ip_utente,data FROM ip_utenti INNER JOIN utenti ON ip_utenti.id_utente=utenti.user";

    $result_query_ip = mysql_query($query_ip) OR die("Query non eseguita correttamente. ".mysql_error());

    while($a = mysql_fetch_array($result_query_ip))

    echo $a['user'].' - '.$a['ip_utente'].' - '.$a['data'];

    ?>
    [/php]
    La sintassi del resto è corretta, io non vedo nessun errore.
    Sicuro di aver salvato il file prima di aver riprovato ad eseguirlo?


  • User

    Salve,
    Mi sono fatto questo script per aggiornare la password però non va, potete dirmi dove sbaglio?

    [PHP]<?php
    // Includo la connessione al database
    require('config.php');

    //Metto l'id utente in una sessione
    $id_utente = $_SESSION['login'];

    // Se il modulo viene inviato...
    if(isset($_POST['modifica']))
    {
    // Dati Inviati dal modulo
    $old_pass = (isset($_POST['old_pass'])) ? trim($_POST['old_pass']) : ''; // Metto nella variabile 'old_pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $new_pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $new_pass2 = (isset($_POST['pass2'])) ? trim($_POST['pass2']) : ''; // Metto nella variabile 'pass2' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Controllo i dati inviati
    if(strlen($new_pass) < 4)
    die('Password troppo corta');
    elseif(strlen($new_pass) > 12)
    die('Password troppo lunga');
    elseif ($new_pass != $new_pass2)
    die('Le due Password non coincidono');

    else
    {
    // Cerco se c'è un utente registrato con questa email
    $query_cambio = mysql_query("SELECT pass FROM utenti WHERE id = '$id_utente' LIMIT 1");

    // L'utente esiste?
    if(mysql_num_rows($query_cambio) == 0)
        die('Nessun utente registrato con questa password');
    

    // Query per l'aggiornamento della password
    $sql_update = 'UPDATE utenti SET pass = .$new_pass. WHERE id = .$id_utente. LIMIT 1;';
    mysql_query($sql_update) OR die("Errore 001, contattare l'amministratore ".mysql_error());

    // Esegue il logout cancellando la sessione
    session_destroy();

    header('Location: login.php');
    exit;

    }
    ?>[/PHP]

    Grazie 😄


  • ModSenior

    Al posto di:
    [php]$sql_update = 'UPDATE utenti SET pass = .$new_pass. WHERE id = .$id_utente. LIMIT 1;'; [/php]
    Metti:
    [php]$sql_update = 'UPDATE utenti SET pass = '$new_pass' WHERE id = '$id_utente' LIMIT 1'; [/php]

    Posta eventuali problemi, altrimenti devo controllarmi proprio tutto ogni volta, e amgari non mi accorgo del problema subito. 🙂


  • User

    Parse error: syntax error, unexpected T_VARIABLE in /membri/rcayla2/cambio_pass.php on line 36

    Adesso è questo l'errore, la linea 32 è la query di update.. 😞

    Edit: Ho fatto una piccola modifica ed adesso invece da questo errore: Parse error: syntax error, unexpected $end in /membri/rcayla2/cambio_pass.php on line 64

    La linea 64 però corrisponde alla chiusura del tag html cioè: </html>


  • ModSenior

    Manca una parentesi di chiusura.
    Se posti il tuo codice attuale vediamo.
    Se è come quello di sopra basta sostituire:
    [php]
    else
    {
    [/php]
    Con:
    [php]
    }
    else
    {
    [/php]


  • User

    Ecco il codice intero:
    [PHP]<?php
    // Includo la connessione al database
    require('config.php');

    //Metto l'id utente in una sessione
    $id_utente = $_SESSION['login'];

    // Se il modulo viene inviato...
    if(isset($_POST['modifica']))
    {
    // Dati Inviati dal modulo
    $old_pass = (isset($_POST['old_pass'])) ? trim($_POST['old_pass']) : ''; // Metto nella variabile 'old_pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $new_pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $new_pass2 = (isset($_POST['pass2'])) ? trim($_POST['pass2']) : ''; // Metto nella variabile 'pass2' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Controllo i dati inviati
    if(strlen($new_pass) < 4)
    die('Password troppo corta');
    elseif(strlen($new_pass) > 12)
    die('Password troppo lunga');
    elseif ($new_pass != $new_pass2)
    die('Le due Password non coincidono');

    }
    else
    {
    // Cerco se c'è un utente registrato con questa email
    $query_cambio = mysql_query("SELECT pass FROM utenti WHERE id = '$id_utente' LIMIT 1");

    // L'utente esiste?
    if(mysql_num_rows($query_cambio) == 0)
        die('Nessun utente registrato con questa password');
    

    // Query per l'aggiornamento della password
    $sql_update = "UPDATE 'utenti' SET 'pass' = '$new_pass' WHERE 'id' = '$id_utente' LIMIT 1";
    mysql_query($sql_update) OR die("Errore 001, contattare l'amministratore ".mysql_error());

    // Esegue il logout cancellando la sessione
    session_destroy();

    header('Location: login.php');
    exit;

    }
    ?>

    <html>

    <head>
    <title>Camio Password</title>
    </head>

    <body>

    <form action="" method="post">
    <input name="old_pass" type="text" id="old_pass" value="Vecchia Password" /><br />
    <input name="pass" type="password" id="pass" value="Password" /><br />
    <input name="pass2" type="password" id="pass2" value="Ripeti Password" /><br />
    <input name="modifica" type="submit" value="Modifica" />

    </body>

    </html>[/PHP]

    Adesso non da errori però se apro la pagina mi dice "Nessun utente registrato con questa password" invece dovrebbe farmi vedere i campi per inserire la vecchia e a nuova password :S


  • ModSenior

    Prova cosi, quel else non serve a niente:
    [php]
    <?php
    // Includo la connessione al database
    require('config.php');

    //Metto l'id utente in una sessione
    $id_utente = $_SESSION['login'];

    // Se il modulo viene inviato...
    if(isset($_POST['modifica']))
    {
    // Dati Inviati dal modulo
    $old_pass = (isset($_POST['old_pass'])) ? trim($_POST['old_pass']) : ''; // Metto nella variabile 'old_pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $new_pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $new_pass2 = (isset($_POST['pass2'])) ? trim($_POST['pass2']) : ''; // Metto nella variabile 'pass2' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Controllo i dati inviati
    if(strlen($new_pass) < 4)
    die('Password troppo corta');
    elseif(strlen($new_pass) > 12)
    die('Password troppo lunga');
    elseif ($new_pass != $new_pass2)
    die('Le due Password non coincidono');

    // Cerco se c'è un utente registrato con questa email 
    $query_cambio = mysql_query("SELECT pass FROM utenti WHERE id = '$id_utente' LIMIT 1"); 
    
    // L'utente esiste? 
    if(mysql_num_rows($query_cambio) == 0) 
        die('Nessun utente registrato con questa password'); 
    

    // Query per l'aggiornamento della password
    $sql_update = 'UPDATE utenti SET pass = '$new_pass' WHERE id = '$id_utente' LIMIT 1';
    mysql_query($sql_update) OR die("Errore 001, contattare l'amministratore ".mysql_error());

    // Esegue il logout cancellando la sessione
    session_destroy();

    header('Location: login.php');
    exit;

    }
    ?>

    <html>

    <head>
    <title>Camio Password</title>
    </head>

    <body>

    <form action="" method="post">
    <input name="old_pass" type="text" id="old_pass" value="Vecchia Password" /><br />
    <input name="pass" type="password" id="pass" value="Password" /><br />
    <input name="pass2" type="password" id="pass2" value="Ripeti Password" /><br />
    <input name="modifica" type="submit" value="Modifica" />

    </body>

    </html>
    [/php]


  • User Newbie

    Ciao,
    solo dopo 2 pagine sono già andata in tilt!

    Ti prego puoi aiutarmi?
    Sono una PERFETTA PRINCIPIANTE di PHP e sto appena, appena muovendo i primi passi...ho bisogno di creare una Zona Riservata del mio sito con tanto di Login e Password e non volevo utilizzare una gestione prefabbricata, ma provare a far da me...con la testa già in fumo!

    Mi rendo conto che se non conosco neanche il significato di "echo" &Co. non posso pretendere l'impossibile, ma ho un cliente che me lo ha chiesto e purtroppo non ho tempo materiale per studiare tutto di un fiato...me tapina...ma perché mi caccio sempre nei guai?!!!

    Conosco molto bene X-HTML e CSS che ormai maneggio da circa 2 anni e cosi mi stavo dando al PHP (...e MySQL!), ma proprio nel pieno dei miei studi (...il libro spiegava come installare e configurare un Serve Remoto, quindi MySQL!) un cliente mi si piomba con la sua Area Riservata...e sono solo al primo capitolo del libro!

    Ti prego puoi dirmi come creare questa Zona Riservata...so che ci vuole un Database per far registrare i dati di chi si Registra, ma credimi ho aperto MySQL e quando ho visto quel bel rettangolo nero che mi chiedeva dei dati...bè l'ho richiuso immediatamente e ho riaperto il libro! °_° HELP ME!?

    Non credo sia una reazione avversa, ma francamente con il PHP è tutta un'altra cosa rispetto all'X-HTML! Ho bisogno di una mano e di tanto sostegno morale...
    Tu puoi aiutarmi?

    Te ne sarei grata immensamente...
    P.S. Ho scaricato la tua versione ZIP e già messo nella cartella di studio del mio sito...chi ci capisce...non so da che parte incominciare...
    Sono depressa...

    Paperikat


  • ModSenior

    Ciao Paperikat,

    ti basta prendere lo script metterlo sul tuo hosting/server locale cambiare i dati di connessione al database presenti nel file config.php e lo script è già funzionante.
    Comunque per poter seguire il tutorial bisogna almeno avere un idea di base di php/mysql, se non li conosci come hai detto dovresti prima studiare almeno le basi con le poche funzioni principali, tieni conto che non ti basta 1 mese per imparare un linguaggio di programmazione e quindi è molto meglio se usi qualcosa di già pronto visto che il fattore tempo non è dalla tua parte.

    Sinceramente io eviterei di prendere impegni che non posso rispettare, perchè se il cliente visto che paga per una consulenza ti chiede una minima aggiunta/modifica e tu non sai dove mettere le mani, non puoi affidarti ad altre persone che lo facciano al posto tuo, oltre al fatto che se il cliente lo viene a sapere ci fai pure una brutta figura, ti sarebbe bastato dirgli che non eri in grado di svolgere un lavoro perchè non ne hai le competenze.


  • User Newbie

    Grazie mille! 😞
    Provo come hai detto tu!

    La base non c'è l'ho ancora come detto, ma la stò studiando...solo come hai detto tu il tempo non è dalla mia parte.

    E no il cliente non mi paga...è un favore che gli stò facendo...è una persona disabile che deve fare un sito per la sua Associazione e mi dispiaceva non accontentarlo.

    Solo che lo vuole per fine mese...e dirgli che non sono capace di fare una cosa per deluderlo non mi andava proprio.
    Preferisco farmi dire da te che sono un incapace....

    Mi spiace se ti ho arrecato disturbo...

    Adesso provo come hai detto tu...e se non ci riesco prendo uno di quelli già fatti...anche se non so quale scegliere...cìè ne sono una miriade....


  • User Attivo

    Ciao a tutti!

    Stò provando a mettere il tutorial senza usare il database, si può oppure devo usarne un altro?

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

    // Dati Inviati dal modulo
    $cognome_utente = (isset($_POST['cognome_utente'])) ? trim($_POST['cognome_utente']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato d� di default ''
    $nome_utente = (isset($_POST['nome_utente'])) ? trim($_POST['nome_utente']) : ''; // 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()) {
    $cognome_utente = addslashes($cognome_utente);
    $nome_utente = addslashes($nome_utente);
    $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 utenti WHERE cognome_utente = '$cognome_utente' AND nome_utente = '$nome_utente' 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" <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    </head>
    <body>
    <div align="center">
    <form action="" method="post">
    <table bgcolor="#bdd3ad" cellspacing="1" cellpadding="10" border="1">
    <tr>
    <th colspan=2>ACCESSO ALL' AREA PRIVATA</th>
    </tr>
    <tr>
    <td width="90" align="right"><font face="Verdana" size="2">COGNOME</font>:</td>
    <td width="140"><input name="cognome_utente" type="text" id="cognome_utente" value="" size="15" align="middle onfocus="if(this.value=='Nome Utente') this.value='';" /><br /></td>
    </tr>
    <tr>
    <td width="90" align="right"><font face="Verdana" size="2">NOME</font></td>
    <td width="140"><input name="nome_utente" type="text" id="nome_utente" value="" size="15" align="middle onfocus="if(this.value=='Nome Utente') this.value='';" /><br /></td>
    </tr>
    <tr>
    <td width="90" align="right"><font face="Verdana" size="2">PASSWORD</font></td>
    <td width="140"><input name="pass" type="password" id="pass" value="" size="15" align="middle onfocus="if(this.value=='Password') this.value='';" /><br /><br /></td>
    </tr>
    <tr>
    <td colspan="2" height="60" align="center">
    <input name="login" width=80 type="submit" value="ACCEDI" align=middle onclick="check()">
    <input name="reset" type="reset" value="ANNULLA" width=80 align=middle>
    </td>
    </tr>
    </table>
    </form>
    </div>
    </body>
    </html>[/php]

    L'index me la dà, la registrazione me la fà, ma il login mi dà questi errori:

    Warning: mysql_query() [func.mysql-quer]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\HostingSpaces\f\rt\wwwroot\login.php on line 22

    Warning: mysql_query() [function.mysql-quer]: A link to the server could not be established in C:\HostingSpaces\f\rt\wwwroot\login.php on line 22

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\HostingSpaces\f\rt\wwwroot\login.php on line 25
    Nome Utente o Password errati

    La sola cosa che ho fatto è togliere il require, ma non credo proprio sia la cosa giusta.
    Grazie!!!


  • ModSenior

    Per utilizzare lo script senza database, dovresti modificare tutte le pagine togliendo le query e facendo le opportune operazioni sui file di testo.
    Su ciò non posso aiutarti in questa discussione in quanto andremmo off-topic.


  • User Attivo

    Capito, non preoccuparti la tua risposta mi è stata ugualmente molto utile 😉

    :ciauz:


  • User

    Salve,
    Ho creato questo script per attivare manualmente un utente, ma, come sempre, alla prima non funziona :S
    [PHP]<?php
    error_reporting(E_ALL);

    //Includo la connessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['attiva']))
    {
    //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 ''
    }

    // Controllo l'utente esiste
    $query_utente = "SELECT id,attivazione FROM utenti WHERE user = '$user' LIMIT 1";
    $query_utente_eseguita = mysql_query($query_utente);

    //Se trova un record..
    if(mysql_num_rows($query_utente_eseguita) == 1)
    {
    //Metto la query in un array
    $attiva = mysql_fetch_array($query_utente_eseguita);
    if($attiva['attivazione'] == '')
    {
    die('Account già attivo!!!');
    }
    else
    {
    $update = mysql_query("UPDATE utenti SET attivazione = '' WHERE user = 'user' LIMIT 1");
    die('Account attivato con successo');
    }
    }
    else
    {
    die('Nessun utente registrato con questo nome!');
    }
    ?>

    <html>

    <head>
    <title>Attivazione Utente</title>
    </head>

    <body>
    <form action="" method="post">
    Nome Utente: <input name="user" type="text" id="user" maxlength="12" /><br />
    <input name="attiva" type="submit" id="attiva" value="Attiva" />
    </form>

    </body>

    </html>
    [/php]

    Ed ecco, aprendo la pagina, cosa mi dice:
    Notice: Undefined variable: user in /membri/rcayla2/attivazione_manuale.php on line 15
    Nessun utente registrato con questo nome!

    E questa sarebbe la riga 15:
    [php]$query_utente = "SELECT id,attivazione FROM utenti WHERE user = '$user' LIMIT 1";[/php]

    Potete aiutarmi?

    EDIT:
    Ci ho sbattuto la testa per un po, ed ho notato di aver sbagliato un po' di graffe 😛
    Adesso ho sistemato e funziona alla perfezione 🙂


  • User Newbie

    Ciao a tutti.

    Volevo ringraziare, prima di tutto, Thedarkita per aver messo a disposizione di tutti questo script.

    Ho un problema:

    sto cercando di adattare lo script al mio sito e vorrei fare in modo che si apra una pagina diversa a seconda dell'utente che si logga.

    questo è il codice della pagina login.php

    [PHP]<?php
    // Includo la connessione al database
    require('arearis/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 utenti WHERE user = '$user' AND pass = '$pass'");

    // 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: utentu/$user.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" "">
    <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>
    <br /><div style="z-index:3" class="smallfont" align="center">SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.</div></body>
    </html>[/PHP]

    Il problema è che se metto utente e password giusti mi viene fuori sempre l'errore 'Nome Utente o Password errati'.

    Dove sbaglio? 😢

    Ringrazio in anticipo.


  • ModSenior

    Rcayla prova cosi:
    [php]
    <?php
    error_reporting(E_ALL);

    //Includo la connessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['attiva']))
    {
    //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 ''

    // Controllo l'utente esiste
    $query_utente = "SELECT id,attivazione FROM utenti WHERE user = '$user' LIMIT 1";
    $query_utente_eseguita = mysql_query($query_utente);

    //Se trova un record..
    if(mysql_num_rows($query_utente_eseguita) == 1)
    {
    //Metto la query in un array
    $attiva = mysql_fetch_array($query_utente_eseguita);
    if($attiva['attivazione'] == '')
    {
    die('Account già attivo!!!');
    }
    else
    {
    $update = mysql_query("UPDATE utenti SET attivazione = '' WHERE user = 'user' LIMIT 1");
    die('Account attivato con successo');
    }
    }
    else
    {
    die('Nessun utente registrato con questo nome!');
    }
    }
    [/php]

    maddo la password nel database è inserita sotto forma di hash md5?