• User Attivo

    Grazie molte! Provo 🙂


  • User

    For TheDarkita e Utenti di GT, Heeeeeeeeeeelp!!!!!
    2 problemi

    il primo:
    vorrei creare una pagina di upload di notizie con DB (formati diversi: pdf, doc, jpg, ecc) che verrà chiamata upnews.php (già in cartella MU Menù Utente; disponibile solo per utenti registrati con gestione delle dimensioni del file), e successivamente visibile per tutti gli utenti anche non registrati (news.php NB: stà nella directory principale del sito e se è possibile con un'impaginazione di 3 notizie per pagina) ed una pagina di gestione (cancellazione della notizia) da parte dell'amministratore del sito (NB: la pagina vuota è già creata del_news.php (stà nella cartella Admin)
    Voglio farvi presente che il DB utenti è già creato, praticamente mi serve il Db per le news.

    il secondo problema:
    TheDarkita forse non ho capito bene come devo fare per visualizzare il nome dell'utente (user) dopa che ha eseguito il login, praticamente cosà dovrei mettere nella parte del codice php e cosa nella parte del body?

    Abbiate pazienza se sono un pò di pretese, ma devo dire che sono veramente negato nel PHP, e ringrazio anticipatamente per le risposte.


  • ModSenior

    Dopo che aggiungi questo:
    http://www.giorgiotave.it/forum/scripting-e-risorse-utili/83033-tutorial-area-privata-10.html#post650023
    Ti basta fare:
    [php]
    <?php echo $_SESSION['user']; ?>
    [/php]


  • User

    Per adesso grazie TheDarkita.
    Spero che mi aiuterai anche per la pagina delle news, quando puoi.


  • User Attivo

    Niente ragazzi, mi funzionava ora non funziona più, mi dà

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\programmi\easyphp1-8\www\login.php:1) in c:\programmi\easyphp1-8\www\config.php on line 3

    Ho provato a mettere session_start() nella prima riga come mi avevate detto ma nulla :bho:
    Ho provato a togliere i commenti ma nulla :bho:
    Quando clicco per registrarmi va tutto ok ma quando clicco per loggarmi mi da questo Warning

    Config.php
    [PHP]<?php
    session_start();

    // Dati connessione al database
    $db_host = 'localhost'; // Host - solitamente localhost
    $db_utente = 'root'; // Nome utente del Database
    $db_password = ''; // Password del Database
    $db_nomedb = ''; // Nome del Database
    // Effettua la connessione al database
    $dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
    mysql_select_db($db_nomedb);
    ?>[/PHP]

    Login.php
    [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 utenti 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" "htt">
    <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]

    Grazie!


  • ModSenior

    Hai controllato come ti ho detto che invece di incollare a partire dalla prima riga del file hai incollato a partire dalla seconda riga del file?


  • User

    Olla c'è qualcuno in casa?

    TheDarkita, ok per visualizzare il nome dell'utente online tutto ok !!
    grazie.
    Adesso possiamo continuare il tutorial? Tipo invia di news da parte degli utenti registrati e che poi tutti gli utenti (registrati o meno) possono vedere. E nella possibilità che le news sono in diversi formati (doc, pdf, jpf ecc..) ed impaginati per 3 o 4 per pagina.
    In attesa ti ringrazio, sempre ottime spiegazioni.


  • ModSenior

    Ciao arkom,

    In questo tutorial le news non sono molto inerenti, per farle puoi aganciarti a questo tutorial:
    http://www.giorgiotave.it/forum/scripting-e-risorse-utili/103960-script-news-con-utilizzo-di-un-database-mysql.html
    TI basta inserire l'inserimento in pagina private di questo tutorial.


  • User

    Ah peccato. Avrei preferito seguire un tutorial da parte tua; in quanto sei grande e di facile comprensione: Spiegato molto bene !!!
    Comunque vedo se ci capisco qualcosa.
    Ti faccio sapere
    Comunque stai prevedendo altri tutoriali interessanti?


  • User Attivo

    @Thedarkita said:

    Hai controllato come ti ho detto che invece di incollare a partire dalla prima riga del file hai incollato a partire dalla seconda riga del file?
    Ti chiedo scusa Theda, ma i codici che ho incollati li ho incollati come tu li hai messi, il bello che prima mi funzionava ora no...:? o forse non ho capito cosa vuoi dirmi?
    Nei codici che ho postato prima c'è qualcosa che non và?

    Grazie e abbi pazienza...:(


  • ModSenior

    Prova a scaricare i file dal link nel primo post e prova quelli...
    Per me parti dalla seconda riga del file e mandi un output prima, altrimenti l'errore lo dava ovunque...


  • User Attivo

    Mi dà warning anche quando clicco su registrazione (mi sembrava di no, mi sono confuso) ma mi dà il warning...quindi mi registra mi logga ma ho sempre il warning di mezzo...

    I file in prima pagina li ho controllati e sono identici a quelli miei...


  • ModSenior

    Scaricali i file iniziali da qua.
    E prova mettendo questi :).


  • User Attivo

    Perfetto, ora torna. Un problema però...e te pareva...

    Io vorrei che quando mi loggo la scritta PAGINA PRIVATA! esca linkata e l'ho fatto in modo giusto...ma allora perchè mi esce questo errore?

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\programmi\easyphp1-8\www\privata.php:1) in c:\programmi\easyphp1-8\www\config.php on line 3

    Privata.php
    <?php
    // Includo la connessione al database
    require('config.php');
    // Se non è stata definita la variabile manda l'utente alla homepage
    if(!isset($_SESSION['login']))
    {
    header('Location: index.php');
    exit;
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ".og/TR/.d">
    <html xmlns="tp.w3.">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Area privata</title>
    </head>
    <body>
    <a href="">Pagina privata!</a><br />
    <br />
    <br />
    <a href="logout.php">Logout</a><br />
    </body>
    </html>


  • ModSenior

    Il problema è che tu incolli a partire dalla riga 2, e non dalla prima riga del file.
    il file tuoi sono cosi:
    [php]
    Riga 1:
    Riga 2: <?php
    Riga 3: session_start();
    [/php]
    mentre dovrebbero essere cosi:
    [php]
    Riga 1: <?php
    Riga 2: session_start();
    [/php]


  • User Attivo

    Ma allora perchè prima di scrivere l' <a href> va tutto bene? eppure io scrivo solo quello...sicuramente sbaglio io...e cosa dovrei fare? ho anche riscaricato i file da te senza toccare nulla, solo scritto a href.

    Grazie!


  • User Attivo

    Il login è a cookie?


  • User

    Ciao The Darkita ho seguito tutto come hai descritto in precedenza
    Se prima vedevo il nome dell'utente che aveva effettuato il login adesso per non so quale motivo non va più e mi da un errore del genere[HTML]
    [CENTER]Salve
    Notice: Undefined index: user in C:\Programmi\EasyPHP 3.0\www\privata.php on line 551
    [/CENTER]
    [/HTML]

    il codice è questo[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 utenti 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'];
        $_SESSION['user'] = $user;
    
        // reindirizzo l'utente
        header('Location: privata.php');
        exit;
    }
    // se non esiste da l'errore
    else
        header('Location: error_login.php');
    

    }
    // Se non è stata definita la variabile manda l'utente alla homepage
    if(!isset($_SESSION['login']))
    {
    header('Location: utente_non_registrato.php');
    exit;
    }
    ?>
    [/PHP]

    e tra il tags body il codice è questo lo script incriminato alla riga 551:

    [PHP]<div id="Fieldset_b">
    <fieldset>
    <legend class="Stile26">Area Privata Utenti Registrati</legend>
    <p align="center" class="Stile2">Salve<?php echo $_SESSION['user']; ?></p>
    <p align="center" class="Stile2">In questa pagina puoi Uploadare i tuoi files o scrivere sul Guestbook.</p>
    <p align="center" class="Stile2">Usa le sezioni del tuo interesse nel riquadro in basso.</p>
    <p align="center" class="Stile2"> </p>
    <p align="center" class="Stile2"> </p>
    </fieldset>
    </div>[/PHP]


  • ModSenior

    Il login è con le sessioni.

    Dopo gli header location metti exit;
    Dovresti modificare questo:
    [php]
    else
    header('Location: error_login.php');
    [/php]
    in questo:
    [php]
    else
    {
    header('Location: error_login.php');
    exit;
    }
    [/php]

    Altrimenti viene si mandato l'header al browser, ma vengono inviati anche output se ci sono successivamente, e in alcuni browser(Internet Explorer) può non avvenire il redirect.

    Nel file privata.php hai messo l'include del config.php?


  • User

    Ok funziona nuovamente grazie TheDarkita.
    Tutto rimesso a posto compreso l'exit dopo gli headers
    Ah volevo dirti ho seguito come nel tuo tutorial:
    [PHP]require('config.php');[/PHP]
    per la connessione al DB
    e non
    [PHP]include('config.php');[/PHP]
    come hai menzionato
    e và come un treno, (finchè non combino qualche ca..no 😞 )

    Curiosità della serata:
    che differenza cìè tra include e require?
    Tieni conto che l'inglese (almeno quello) lo capisco alla perfezione, ma nel php che funzioni hanno l'uno dall' altro?
    e come si utilizzano e in quale corcostanza?
    Anticipate Thank (ossia grazie anticipatamente).