• Super User

    @Kurose said:

    il file che dovrebbe contenere username e password con che estensione va salvato? .txt? Hai ragione non mi ero resa conto di richiamare lo stesso file!
    Quindi il codice php lo inserisco prima del tag <form>?
    Nel file processpage.php richiamato alla fine in teoria dovrei inserire questo codice:

    <?
    session_start ();
    if ($_SESSION [Logged]=="OK"){
    echo "sei loggato come $_session [username]";
    } else {
    exit();
    }
    ?>

    Non è molto sicuro usare un file txt richiamabile da browser. Per esempio se chiami in file dati.txt e lo salvi nella document root richiamando miosito.ext/dati.txt vedrò username e password. Certo, occorre conoscere il nome del file ed il suo percorso.

    Dividiamo la fase in 3 passi.

    1. Pagina che visualizza il form per l'ingresso dei dati
    2. Pagina che verifica la correttezza di username e password
    3. Pagina che ti da il benvenuto

    Le tre azioni si possono accorpare anche in un unico file:
    [php]<?
    session_start();
    ?>
    <!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=iso-8859-1" />
    <title>Untitled Document</title>
    </head>

    <body>
    <?php
    if($_SESSION['Logged'] == "OK") { //Se sono loggato
    echo "Benvenuto";
    } else if (isset($_POST)) { //Se mi loggo
    $apri=file("dati.txt"); //Conterra: username|password
    foreach ($apri as $riga) {
    $el=explode ("|", $riga);
    if ($_POST['username'] == $el[0] AND $_POST['password']==$el[1]) {
    $_SESSION['Logged'] == "OK";
    $_SESSION['username'] == $_POST['username'];
    echo "<br/><a href="processpage.php">Accedi</a>";
    }
    }
    } else { // primo accesso
    ?>
    <h2>Accedi a un'area privata</h2>
    <form action="processpage.php" method="post" id="frm1">
    <fieldset>
    <legend>Effettua il login</legend>
    <p><label for="username">Username</label>
    <input name="username" type="text" class="user" id="username" value=" "/></p>
    <p><label for="password">Password</label>
    <input name="password" type="password" class="passw" id="password" value=" "/></p>
    <p><input name="submit" type="button" value="LOGIN" class="button"/></p>
    </fieldset>
    </form>
    <?php
    }
    ?>
    </body>
    </html>[/php]

    Non è molto elegante ma da qui puoi iniziarci a lavorare


  • Super User

    @Kurose said:

    Ciao a tutti.. devo creare per un esame un sito e-learning che si avvalga di phq e MySql. Deve avere una parte pubblica e una parte gestita dall'amministratore nella quale quest'ultimo possa inserire nuove lezioni o inserire immagini.
    Allora primo quesito: creo una pagina in cui vi è un form che mi permette di accedere all'area privata

    <h2>Accedi a un'area privata</h2>
    <form action="processpage.php" method="post" id="frm1">
    <fieldset>
    <legend>Effettua il login</legend>
    <p><label for="username">Username</label>
    <input name="username" type="text" class="user" id="username" value=" "/></p>
    <p><label for="password">Password</label>
    <input name="password" type="password" class="passw" id="password" value=" "/></p>
    <p><input name="submit" type="button" value="LOGIN" class="button"/></p>
    </fieldset>
    </form>

    ora che script php devo collegare? Avevo trovato in una sezione del forum questo:

    <?
    session start ();
    if (isset ($_post)) {
    $apri=file("processpage.php");
    foreach ($apri as $riga) {
    $el=explode ("|", $riga);
    if ($_post [username] == $el [0] AND $_post [password]==el [1]) {
    $_SESSION [Logged] =="OK";
    $_SESSION [username] ==$_post [username];
    echo "<br/><a href="processpage.php">Accedi</a>";
    }
    }
    } ?>

    ma provandolo non funziona.. dove sbaglio? Inoltre inserisco il codice php dopo il tag </html>?
    Grazie a chi mi aiuterà in questa titanica impresa!!!
    Baci

    Mi sono accorto che alla riga:
    if ($_post [username] == $el [0] AND $_post [password]==el [1]) {
    Manca il $ nella seconda espressione:
    $_post [password]==**$**el [1]


  • User

    Allora ho provato a inserire il codice php subito prima del form ma nessun risultato. Io le pagine le sto salvando in estensione .php e non .html, sbaglio?

    Inoltre prima del form mi visualizza nella pagina [URL="file:///C:/AppServ/www/Progetto_Php/%5C%22processpage.php%5C%22"]Accedi"; } } } else { // primo accesso ?>

    che ci fa?

    Non riesco a capire dove sia il problema. Ho corretto anche la sintassi, effettivamente mancava un $.


  • Moderatore

    mi riposti il tuo codice? grazie 🙂


  • User

    Eccolo qui:

    <?php
    session start ();
    if (isset ($_post)) {
    $apri=file("mio.txt");
    foreach ($apri as $riga) {
    $el=explode ("|", $riga);
    if ($_post [username] == $el [0] AND $_post [password]==$el [1]) {
    $_SESSION [Logged] =="OK";
    $_SESSION [username] ==$_post [username];
    echo ("<br/><a href="processpage.php">Accedi</a>");
    }
    }
    } ?>

    <h2>Accedi a un'area privata</h2>
    <form action="processpage.php" method="post" id="frm1">
    <fieldset>
    <legend>Effettua il login</legend>
    <p><label for="username">Username</label>
    <input name="username" type="text" class="user" id="username" value=" "/></p>
    <p><label for="password">Password</label>
    <input name="password" type="password" class="passw" id="password" value=" "/></p>
    <p><input name="submit" type="button" value="LOGIN" class="button"/></p>
    </fieldset>
    </form>


  • Moderatore

    [php]
    <?php
    session_start();
    if (isset ($_POST)) {
    $apri=file("mio.txt");
    foreach ($apri as $riga) {
    $el=explode ("|", $riga);
    if ($_POST[username] == $el[0] AND $_POST[password]==$el[1]) {
    $_SESSION[Logged] = "OK";
    $_SESSION[username] = $_POST[username];
    echo "<br/><a href="processpage.php">Accedi</a>";
    }
    }
    } ?>

    <h2>Accedi a un'area privata</h2>
    <form action="processpage.php" method="post" id="frm1">
    <fieldset>
    <legend>Effettua il login</legend>
    <p><label for="username">Username</label>
    <input name="username" type="text" class="user" id="username" value=" "/></p>
    <p><label for="password">Password</label>
    <input name="password" type="password" class="passw" id="password" value=" "/></p>
    <p><input name="submit" type="button" value="LOGIN" class="button"/></p>
    </fieldset>
    </form>
    [/php]

    la pagina che tu attivi, cioè questa, come si chiama?


  • User

    Si chiama Corsi.html


  • Moderatore

    bene chiamala corsi.php; perchè? perchè all'interno c'è del codice php 😛 tutto qui!

    e modificala così:

    [php]
    <?php
    session_start();
    if (isset ($_POST)) {
    $apri=file("mio.txt");
    foreach ($apri as $riga) {
    $el=explode ("|", $riga);
    if ($_POST[username] == $el[0] AND $_POST[password]==$el[1]) {
    $_SESSION[Logged] = "OK";
    $_SESSION[username] = $_POST[username];
    echo "<br/><a href="processpage.php">Accedi</a>";
    }
    }
    } ?>

    <h2>Accedi a un'area privata</h2>
    <form action="corsi.php" method="post" id="frm1">
    <fieldset>
    <legend>Effettua il login</legend>
    <p><label for="username">Username</label>
    <input name="username" type="text" class="user" id="username" value=" "/></p>
    <p><label for="password">Password</label>
    <input name="password" type="password" class="passw" id="password" value=" "/></p>
    <p><input name="submit" type="button" value="LOGIN" class="button"/></p>
    </fieldset>
    </form>
    [/php]
    bye!


  • User

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\AppServ\www\Progetto_Php\Corsi.php:10) in C:\AppServ\www\Progetto_Php\Corsi.php on line 67

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\Progetto_Php\Corsi.php:10) in C:\AppServ\www\Progetto_Php\Corsi.php on line **67

    Ora appaiono questi errori nella pagina! Ma perché il codice php si visualizza nella pagina?
    **


  • Moderatore

    [php]
    <?php
    session_start();
    if (isset($_POST)) {
    $apri=file("mio.txt");
    foreach ($apri as $riga) {
    $el=explode ("|", $riga);
    if ($_POST[username] == $el[0] AND $_POST[password]==$el[1]) {
    $_SESSION[Logged] = "OK";
    $_SESSION[username] = $_POST[username];
    echo "<br/><a href="processpage.php">Accedi $_SESSION[username]</a>";
    }
    }
    } ?>

    <h2>Accedi a un'area privata</h2>
    <form action="Corsi.php" method="post" id="frm1">
    <fieldset>
    <legend>Effettua il login</legend>
    <p><label for="username">Username</label>
    <input name="username" type="text" class="user" id="username" value=""/></p>
    <p><label for="password">Password</label>
    <input name="password" type="password" class="passw" id="password" value=""/></p>
    <p>
    <input type="submit" name="Submit" class="button" value="LOGIN" />
    </p>
    </fieldset>
    </form>
    [/php]
    questa è testata 😛


  • Moderatore

    noto una riga 67 c'è altro codice?


  • User

    $apri=file("mio.txt");

    Questa è la riga a cui fa riferimento. Ho inserito il tutto nella pagina corsi.php in cui c'è anche il logo, il menu.. insomma la pagina completa. Per questo fa riferimento alla linea 64.

    Allora io avevo creato un file mio.txt in cui ho inserito semplicemente username e password. Non dovevo fare così?


  • User

    Scusa se ti stresso.. un'altra cosa... nella pagina processpage.php semplicemente devo creare la zona amministratore? Quindi una pagina che solo io posso visualizzare in cui posso creare nuovi documenti o inserire immagini..

    Grazieeeee


  • Moderatore

    si 😛


  • User

    :bho: mmm ma perché ora i messaggi di errore riguardano la funzione session_start(); ??
    Uff ogni volta ce n'è una nuova!!!
    ho fatto tutto!
    Ci potrebbe essere un problema tra i collegamenti? Ma le pagine sono tutte nella medesima cartella quindi mi sembra strano.

    Nell'action non devo inserire processpage.php anziché form action="Corsi.php"?


  • Moderatore

    devi inserire il nome della pagina che mostri a video cioè "corsi"

    in quanto poi hai un link che ti porta al pannello admin 😛

    hai un link? sei in locale? utilizzi un software per php e Apache?

    session_start() è accompagnato dal ;

    inoltre sono warning e non veri e propri errori 😛


  • User

    session_start è accompagnato dal ; la sintassi è corretta.
    Il problema è nel funzionamento: scrivo username e password, clicco su login e non mi apre nessuna pagina! Semplicemente aggiorna Corsi.php e i warning appaiono sulla pagina quindi non posso lasciarli! E non c'è nessun link che mi porta al pannello admin! Si sono in locale.
    Ecco questi sono i problemi.
    Mi dispiace annoiarti con queste cose ma non ci trovo un senso nel fatto che non funzioni se ho fatto tutto in maniera corretta!


  • Moderatore

    ti metto in condivisione il file mio.txt usato da me:

    user kurose e pass prova 🙂


  • User

    Cannot send session cookie - headers already sent by (output started at

    dice che non puo' settare il cookie e la sessione perche' l'header del mesaggio http e' gia' andato, il che vuol dire che hai scritto la session_start dopo una qualsiasi istruzione di stampa html (una eco o anche solo un tag HTML). Controlla che session_start non abbia nulla prima, nemmeno una riga bianca. Il resto degli errori e' tutta una conseguenza di questo.

    Questa è stata la risp della mia prof quando le ho posto il problema! Ma allora dove si inserisce il codice php??


  • Moderatore

    ahhh già tu hai una pagina completa che si trova a dispetto di questo codice 🙂

    postami tutta la pagina o meglio ancora posta session_start(); sulla pagina principale 🙂
    dovrebbe andare ovviamente tra i tag <? ?> 😛