• User Attivo

    Salve!
    Dilemma di oggi:
    Nella pagina registrati.php, all'invio del form vengo rendirizzato alla pagina registrato.php, è possibile eliminare la pagina registato.php e scrivere un breve codice html direttamente nella pagina registrati.php che si vede dopo l'invio del form?
    in pratica penso si dovrebbe sostituire il comando
    header('Location: registrato.php');
    Purtroppo ora non ho i miei file perchè sto su un altro pc e non posso fare prove.
    Chiedo: Se metto al posto di header un echo ottengo quello che voglio fare? Se è sbagliato illuminatemi please..

    :ciauz:


  • ModSenior

    Ciao Gigi991,

    Devi sostuire
    [php]
    header('Location: registrato.php');
    exit;
    [/php]con
    [php]
    echo 'codice html 1';
    exit;
    [/php]Se il codice è breve puoi anche usare die, che è come la funzione exit, ma ti permette di inviare un output.
    [php]
    die('codice html 1');
    [/php]


  • User Attivo

    Ottimo, e senti nella pagina di attivazione nel body c'è:

    <?=($attivato == 1) ? 'Account Attivato' : 'Errore, link non valido' ?>

    se metto:

    <?php =($attivato == 1) ? 'Account Attivato' : 'Errore, link non valido' ?>

    è la stessa cosa?

    Che cambia a mettere <? e <?php ? Qual'è meglio usare?


  • ModSenior

    Ciao Giggi991,

    La sintassi <?=$variabile?> è un abbreviativo di <?php echo $variabile; ?>

    <? è uno short tag, però il file di configurazione di php(php.ini) potrebbe disabilitare gli short tag, e invece di essere elaborati te li ritrovi mostrati a schermo.


  • User Attivo

    In questo caso quindi è così:

    [php]<?php ($attivato == 1) ? echo 'Account Attivato' : echo 'Errore, link non valido' ?>[/php]

    ?


  • ModSenior

    Ciao Gigi991,

    No la sintassi corretta è la seguente:
    [php]
    <?php echo (($attivato == 1) ? 'Account Attivato' : 'Errore, link non valido') ?>
    [/php]


  • User Attivo

    Facendo modifche mi sa ch ho combinato qualche casino, ho sistemato spero tutti gli errori ma ne rimane uno alla pagina di login, in pratica inserendo user e password giusti, con l'account già attivato mi dice sempre: Userame o password errati.. :mmm:
    Ho provato a rivedere passo passo il codice come in guida ma non trovo l'errore..

    Il codice:
    [PHP]
    <?php require('config.php'); ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <?php
    if(isset($_POST['login'])) {
    $user_name = (isset($_POST['user_name'])) ? trim($_POST['user_name']) : '';
    $user_password = (isset($_POST['user_password'])) ? trim($_POST['user_password']) : '';
    if(!get_magic_quotes_gpc()) {
    $user_name = addslashes($user_name);
    $user_password = addslashes($user_password);
    }
    $user_password = md5($user_password);
    $query = mysql_query("SELECT user_id,user_active FROM users WHERE user_name = '$user_name' AND user_password = '$user_password' LIMIT 1");
    if(mysql_num_rows($query) == 1) {
    $login = mysql_fetch_array($query);
    if($login['user_active'] == '') {
    $_SESSION['login'] = $login['user_id'];
    header('Location: profilo.php');
    exit;
    }
    else {
    die('<b>L'account non è ancora stato attivato</b><br>Per attivare l'account clicca sul link che ti è stato inviato tramite mail.<br>Se non ti è arrivata la mail, contatta l'amministratore.');
    }
    }
    else die('Nome Utente o Password errati');
    }
    ?>
    <html>
    <head>
    <title>Login</title>
    </head>
    <body>
    <table align="center" border="1" width="680">
    <tr>
    <td border="1" width="180" align="center" valign="top">
    <b>Menu</b><br>
    <a href="index.php">Homepage</a><br><a href="profilo.php">Profilo</a><br><a href="login.php">Login</a><br><a href="registrati.php">Registrati</a><br>
    </td>
    <td border="1" width="500" align="center" valign="top">
    <form action="" method="post">
    <input name="user_name" type="text" id="user_name" value="Username" onfocus="if(this.value=='Username') this.value='';"><br>
    <input name="user_password" type="password" id="user_password" value="Password" onfocus="if(this.value=='Password') this.value='';"><br>
    <input name="login" type="submit" value="Login"><br>
    </form>
    </td>
    </tr>
    </table>
    </body>
    </html>
    [/PHP]

    Nome tabella: users
    Campi: user_id, user_password, user_email, user_from, user_day, user_month, user_year, user_rank, user_avatar, user_active

    Continuo a provare, se ci sono errori o pensate che dipende da un altra pagina scrivetemelo, grazie

    :ciauz:


  • ModSenior

    Ciao Gigi991,

    Non ho notato errori, sicuro che nella tabella sia presente l'utente con cui tenti di loggarti?


  • User Attivo

    Neanche io trovavo errori, tant prima ho lasciato perdere prima di perderci la testa :arrabbiato:
    Ho riegistrato anche 4-5 account, ogni volta li ho attivati con le varie email, ma niente dice sempre che username e password sono errati
    E durante il log in comunque guardo nella tabella e i record ci sono..


  • ModSenior

    Ciao gigi991,

    Prova a stampare la query:

    [php]
    <?php require('config.php'); ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <?php
    if(isset($_POST['login'])) {
    $user_name = (isset($_POST['user_name'])) ? trim($_POST['user_name']) : '';
    $user_password = (isset($_POST['user_password'])) ? trim($_POST['user_password']) : '';
    if(!get_magic_quotes_gpc()) {
    $user_name = addslashes($user_name);
    $user_password = addslashes($user_password);
    }
    $user_password = md5($user_password);
    echo "SELECT user_id,user_active FROM users WHERE user_name = '$user_name' AND user_password = '$user_password' LIMIT 1";
    $query = mysql_query("SELECT user_id,user_active FROM users WHERE user_name = '$user_name' AND user_password = '$user_password' LIMIT 1");
    if(mysql_num_rows($query) == 1) {
    $login = mysql_fetch_array($query);
    if($login['user_active'] == '') {
    $_SESSION['login'] = $login['user_id'];
    header('Location: profilo.php');
    exit;
    }
    else {
    die('<b>L'account non è ancora stato attivato</b><br>Per attivare l'account clicca sul link che ti è stato inviato tramite mail.<br>Se non ti è arrivata la mail, contatta l'amministratore.');
    }
    }
    else die('Nome Utente o Password errati');
    }
    ?>
    <html>
    <head>
    <title>Login</title>
    </head>
    <body>
    <table align="center" border="1" width="680">
    <tr>
    <td border="1" width="180" align="center" valign="top">
    <b>Menu</b><br>
    <a href="index.php">Homepage</a><br><a href="profilo.php">Profilo</a><br><a href="login.php">Login</a><br><a href="registrati.php">Registrati</a><br>
    </td>
    <td border="1" width="500" align="center" valign="top">
    <form action="" method="post">
    <input name="user_name" type="text" id="user_name" value="Username" onfocus="if(this.value=='Username') this.value='';"><br>
    <input name="user_password" type="password" id="user_password" value="Password" onfocus="if(this.value=='Password') this.value='';"><br>
    <input name="login" type="submit" value="Login"><br>
    </form>
    </td>
    </tr>
    </table>
    </body>
    </html>
    [/php]


  • User Attivo

    Niente.. mi esce:

    SELECT user_id,user_active FROM users WHERE user_name = 'nomeregistrato' AND user_password = 'passwordregistrato' LIMIT 1Nome Utente o Password errati

    L'errore sembra sempre quello, però stampa a video la query..


  • ModSenior

    Ciao Gigi991,

    Infatti serve proprio a stampare la query, ora, se lanci la query ottenuta dal phpmyadmin cosa ti restituisce?


  • User Attivo

    Inserendo quella query penso me lo trova, perchè mettendonome e password a caso mi da 0 righe trovate, mentre con quelli giusti mi da:

    Visualizzazione record 0 - 0 (1 Totali, La query ha impiegato 0.0003 sec)
    SELECT user_id, user_active
    FROM users
    WHERE user_name = 'nomegiusto'
    AND user_password = 'passgiusta'
    LIMIT 1

    N.B. La password messa nella query è quella già criptata, presente nel database.
    Se metto la password che digito nel form di login mi da:

    MySQL ha restituito un insieme vuoto (i.e. zero righe). ( La query ha impiegato 0.0002 sec )
    SELECT user_id, user_active
    FROM users
    WHERE user_name = 'nomegiusto'
    AND user_password = 'passnoncriptata'
    LIMIT 1

    E' giusto se fa così?


  • ModSenior

    Ciao Gigi991,

    Se eseguendo la query stampata dal file php, ti viene restituito 1 record, il tuo script dovrebbe funzionare correttamente.
    Se ti viene restituito un insieme vuoto significa che c'è qualche problema nella query.

    Se la query ti restituisce 1 record, mi sembra strano, se non impossibile, che il controllo restituisca false


  • User Attivo

    Si mi fa abbatere sto php :crying:
    Facciamo così, entro oggi o domani appena ho tempo provo a rifarlo tutto, e ad ogni modifica provo tutto lo script dalla registrazione all'attivazine fino a login e logout.. Così spero di vedere cos'è che può creare il problema..
    Poi vi faccio sapere..

    :ciauz:


  • User

    Salve, volevo chiedere, se non disturbo troppo, se è possibile avere un aiuto per creare due pagine riguardo questo ottimo script..la prima per modificare la password, e la seconda per eliminare l'account. E' possibile? Mi potete aiutare? Grazie mille in anticipo siete grandi


  • ModSenior

    Ciao MimmoNapoli,

    Posta pure ciò che sei riuscito a fare, e vedremo di aiutarti. 🙂


  • User

    Ciao ragazzi, ho preso spunto da questo script per farmi il login del mio sito. All'inizio della pagina che devo proteggere ho inserito questo codice:

    [php]<?php

    include "connessione.php";

    If (!isset($_SESSION['Nickname'])) {
    die("non risulti loggato");
    exit;

    }

    ?>
    [/php]c'è qualcosa che non va...ma lo script dovrebbe essere corretto....infatti se metto i dati di un utente registrato mi dice non risulti loggato, invece se uso dati sbagliati nella form mi da "nome utente o password errati".... ecco invece il login:

    [php]<?php

    include "connessione.php";

    session_start();

    if(isset($_POST['Nickname'])) {

    $nickname= trim($_POST['Nickname']);
    $password= trim($_POST['Password']);

    $password= md5($password);

    $query= mysql_query("SELECT * FROM lista_utenti WHERE Nickname = '$nickname' AND Password = '$password'");
    $utente=mysql_num_rows($query);

    if($utente==1) {

    $_SESSION['Nickname'] = $nickname;

    header("Location: frames.php");

    }

    else {
    die ('Nickname o Password errati');

    }

    }

    ?>[/php]
    Dove sbaglio stavolta? 😄


  • User

    Ragazzi, ho messo session_start (); nel file "connessione.php"... prima era in index.php (dove si effettua il login)...ora se metto i dati errati nella form, mi dice che sono tali...mentre se li metto giusti mi apre la pagina....frames.php ma mi resta bianca..da cosa può dipendere? :mmm:

    Scusate per il doppio post non mi faceva più editare


  • User

    Ho risolto....c'ho sbattuto la testa un altro paio di orette :bigsmile: Ma cosa sono questi magicquotes? Mai sentiti..