- Home
- Categorie
- Coding e Sistemistica
- PHP
- Pagina amministratore
-
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();
}
?>
-
@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.
- Pagina che visualizza il form per l'ingresso dei dati
- Pagina che verifica la correttezza di username e password
- 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
-
@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!!!
BaciMi sono accorto che alla riga:
if ($_post [username] == $el [0] AND $_post [password]==el [1]) {
Manca il $ nella seconda espressione:
$_post [password]==**$**el [1]
-
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 $.
-
mi riposti il tuo codice? grazie
-
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>
-
[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?
-
Si chiama Corsi.html
-
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!
-
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?
**
-
[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
-
noto una riga 67 c'è altro codice?
-
$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ì?
-
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
-
si
-
: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"?
-
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
-
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!
-
ti metto in condivisione il file mio.txt usato da me:
user kurose e pass prova
-
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??