- Home
- Categorie
- Coding e Sistemistica
- PHP
- Pagina amministratore
-
Pagina amministratore
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
[php]
<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]
ora che script php devo collegare? Avevo trovato in una sezione del forum questo:
[php]
<?
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>";
}
}
} ?>
[/php]
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
-
Ciao.
Innanzitutto il codice php in questione occorre inserirlo prima di qualunque output html a causa della presenza della funzione session_start().
Poi non capisco una cosa, userna e passowrd sono contenute in un file?
Il file che apri è processpage.php che è lo stesso che viene richiamato dal form dopo il submit. Questo non ha senso poichè il file o contiene username e password o contiene lo script che elabora la richiesta.
-
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!