|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
[PHP] login e blocco colonne
E' da poco che lavoro con PHP e html...le cose che non riesco a fare sono 2:
1. creare una pagina di login 2. vorrei creare una pagina web dove due colonne (a dx e a sx) sono fisse...cioè quando clicco su un link all'interno di queste quello che mi cambia è solo la parte centrale della pagina mantenendo fisse le parti laterali grazie |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2006
Città: Pisa
Messaggi: 2500
|
Per il due è facile, usa i frame. Trovi molte guide in rete!
Per la uno è un po' più complicata...
__________________
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Creare un login in php è abbastanza facile.
A quante persone ti interessa dare la possibilità di loggarsi? Cmq in linea di massima passi i valori dei campi di form con il metodo POST e li controlli per vedere se van bene o no, e poi puoi tenere in memoria con una SESSIONE l'avvenuto login. Ad esempio: Pagina login.php dove avrai il form per immettere nome e password,e che ti manda alla pagina controllologin.php quando clicchi submit, la quale controllera i dati passati tramite il metodo POST. Codice:
<form name="login" method="post" action="controllologin.php">
<table class="tab_login" border="0">
<tr>
<td><strong>Nome utente</strong></td>
<td><input id="testo" type="text" name="user" tabindex="1" /></td>
<td rowspan="2"><input name="submit" type="submit" tabindex="3" /></td>
</tr>
<tr>
<td><strong>Password</strong> </td>
<td><input type="password" name="pass" tabindex="2" /></td>
</tr>
</table>
</form>
Codice:
<?php
$psw="MIAPASSWORD";
$user="NOMEUTENTE";
if(!(isset($_SESSION['ok_log']))) //controlla se non si è già loggati
{
if($_POST[pass]&&$_POST[user]) //controllo se il login è avvenuto correttamente
{
$_SESSION['ok_log']=false;
$insert_pass=$_POST[pass];
$insert_user=$_POST[user];
if(($insert_pass==$psw)&&($insert_user==$user))
{
$_GET['logout']=0;
$_SESSION['ok_log']=true; //se c'è stata l'autenticazione la salvo in una sessione
$_SESSION['user']=$insert_user;
}
}
}
La sessione è molto simile ai cookie. Dopo se vuoi rendere una pagina del tuo sito accessibile solo se loggati, basta che controlli la sessione, la quale contiene lo stato del login. Questo codice gestisce una sola persona ma con qualche modifica puoi gestire quante persone tu vuoi. Ultima modifica di MEMon : 11-05-2006 alle 22:05. |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
OK...grazie delle risposte adesso provo a fare il login...per quanto riguarda i frame ho letto in giro per la rete che è meglio usare il tag DIV...con questo tag si ottiene lo stesso effetto?...
|
|
|
|
|
|
#5 | |
|
Messaggi: n/a
|
Quote:
i Frame sono un particolare strumento che ti consente di "suddividere" lo schermo richiamando più pagine in una sola e rendendo le porzioni indipendenti. Il Tag DIV è un tag generico XHTML che serve per creare la struttura di una pagina. |
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Comunque usare i frame è sconsigliato, brutto e sa di "amatoriale", in più crea casini ai motori di ricerca.
Fatti un bel layout con i div e css che è molto meglio. |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
allora, ho provato a fare i layout con il tag div...uno per la colonna di destra e uno per quella di sinistra ma non mi funziona bene...il comando per impostare la posizione qual'è?...e poi come faccio a richiamare queste 'sezioni' div nelle altre pagine del sito?....
...ultima cosa....riguarda il login...vorrei usare le sessioni perchè quando un utente effettua il login deve rimanere loggato anche quando naviga nelle altre pagine...praticamente quello che devo fare è inserire un controllo per verificare che la sessione non sia già aperta per ogni pagina del sito altrimenti fare session_start() ?...e poi ho provato a fare il logout ma non ci riesco...come posso fare?...grazie dell'aiuto che mi state dando... |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Allora session_start() va ad inizio pagina(prima di OGNI altra cosa) dove fai uso delle sessioni.
Se per dire che l'utente si è connesso fai qualcosa del genere $_SESSION['ok_log']=true per sloggarlo basta che setti questa variabiale a false. Per il fatto dei div, se usi i css hai tantissime possibilità di personalizzarli come vuoi(se fai una veloce ricerca di "layout coi div" trovi molta roba), mentre per il fatto di richiamarli non è possibile, il trucco sta nel crearti un modello di pagina web, ad esempio fai un DIV contenitore che conterrà un div intestazione(titolo, logo sito ecc ecc), un div navigazione(dove metti i link coi queli ti muovi nel tuo sito),un div contenuto(dove scrivi effettivamente il contenuto del tuo sito) e un div foot(ci metti quello che vuoi nn so le indicazioni del copyright Una volta fatto questo modello fai tutte le pagine così cambiando solo il div contenuto.Il risultato sarà molto più professionale, e se ti studi nebe come usare i css anche veramente bello! |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Interamnia Urbs
Messaggi: 2125
|
__________________
Un wormhole (buco di tarlo, in italiano), detto anche Ponte di Einstein-Rosen, è una ipotetica caratteristica topologica dello spaziotempo che è essenzialmente una "scorciatoia" da un punto dell'universo a un altro, che permetterebbe di viaggiare tra di essi più velocemente di quanto impiegherebbe la luce a percorrere la distanza attraverso lo spazio normale. Go to a Wormhole |
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
grazie...proverò a fare quello che mi avete detto e poi vi dirò come è andata...
|
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
allora...per quanto riguarda il login vi vorrei chiedere una cosa: ho scritto questo codice per il controllo dello username e password da un db:
Codice:
<?php $conn = mysql_connect('localhost','root','') or die("Errore nella connessione a MySql: " . mysql_error());
$login=$_POST['login'];
$password=$_POST['pwd'];
if($login != "" && $password != ""){
$sqlUser = "select * from utenti where NOME = '".$login."'";
$resUser = mysql_query($sqlUser, $conn);
$row = mysql_fetch_array($resUser);
if (md5($password)==$row['PASS']){
if (mysql_num_rows($resUser) == 1){
session_register("AUTH_TYPE");
$AUTH_TYPE = "login";
$_SESSION['login'] = $login;
header("Location: pag1.php");
}
else { $ERRLOGIN = true;
echo "Attenzione chiavi di accesso non corrette";
?><br><a href="entra.php">riprova</a><?
}
} else {
echo "password errata";
?><br><a href="entra.php">riprova</a>
<?php
}
}
else{
echo "Attenzione, campi di accesso vuoti";
?><br><a href="entra.php">riprova</a><?
}
?>
|
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
forse ci sono riuscito...in ogni pagina scrivo
session_start(); if(isset($_SESSION['login'])){....pagina web....else errore! mentre per quanto riguarda il logout ho fatto così: session_start(); if(isset($_SESSION['login'])){ session_destroy(); header("Location: entra.php"); } secondo voi scritto così funziona bene? |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Si potrebbe andare ma così facendo distruggi poprio tutta la sessione, ma se a te non serve più a nulla può anche andare bene.
|
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
in che senso distruggo tutta la sessione?...praticamente quello che voglio io è che un utente quando è loggato può fare una serie di operazioni mentre quando non lo è può solo visitare il sito...
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Si certo quello l'ho capito, il fatto è che se fai session destroy dopo quella sessione non esiste più.
Ho notato che nel tuo codice tu controlli se esiste la variabile $_SESSION['login'] e non il suo valore, quindi può andare anche bene. Altrimenti,ad esempio, se te settavi a true la variabile $_SESSION['login'] quando era avvenuto un login, dopo per sloggare basta che la settavi a false. Tutto qui |
|
|
|
|
|
#16 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
ah ok...grazie delle delucidazioni!....stavo provando adesso a fare una cosa: vorrei che il login si può fare direttamente in pag1.php e non in una pagina a parte come ho fatto finora e nel momento in cui uno fa il login mi spunta la stessa pagina ma con il messaggio di benvenuto...tutto questo si può fare nella stessa pagina oppure quando faccio il login mi deve caricare una pagina differente?
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Allora a grandi linee fai così: nel form per il login invece di metterci come detsinazione un'altra pagina lasci vuoto, quindi solo le "",usi sempre il metodo POST e aggiungi i controlli di user e pass nella stessa pagina,anche il controllo della sessione, sempre tutto lì, se hai prob fammi sapere.
|
|
|
|
|
|
#18 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
ho messo il codice di controllo del login all'inizio di pag1.php...praticamente, adesso, il file pag1.php è strutturato nel modo seguente:
-controllo del login (quello postato qualche thread sopra) -session start() if(!isset($_SESSION['login'])){....pagina html con possibilità di loggarsi else{...pagina html con messaggio benvenuto e possibilità di logout ...all'apertura della pagina mi da i seguenti errori: Notice: Undefined index: login in c:\programmi\easyphp1-8\www\prove\pag1.php on line 5 Notice: Undefined index: pwd in c:\programmi\easyphp1-8\www\prove\pag1.php on line 6 Notice: Undefined index: login in c:\programmi\easyphp1-8\www\prove\pag1.php on line 8 Attenzione, campi di accesso vuoti riprova Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\programmi\easyphp1-8\www\prove\pag1.php:5) in c:\programmi\easyphp1-8\www\prove\pag1.php on line 35 Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\programmi\easyphp1-8\www\prove\pag1.php:5) in c:\programmi\easyphp1-8\www\prove\pag1.php on line 35 dove la linea 35 è quella in cui faccio session_start() e poi il controllo di $_SESSION['login']... |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
session start lo devi mettere prima di ogni altra cosa, quindi per sicurezza mettilo proprio ad inizio pagina prima del doctype.
|
|
|
|
|
|
#20 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
adesso errori non ne ho più ma la pagina con il messaggio di benvenuto non compare...
...ti posto il codice che ho scritto: Codice:
<?php
$conn = mysql_connect('localhost','root','') or die("Errore nella connessione a MySql: " . mysql_error());
mysql_select_db('agenzia',$conn) or die("Errore nella selezione del db: " . mysql_error());
session_start();
if(!isset($_SESSION['login'])){
?>
PAGINA HTML CON POSSIBILITA' LOGIN
<?php
}else{
if($_POST['login'] != "" && $_POST['pwd'] != ""){
$login=$_POST['login'];
$password=$_POST['pwd'];
$sqlUser = "select * from utenti where NOME = '".$login."'";
$resUser = mysql_query($sqlUser, $conn);
$row = mysql_fetch_array($resUser);
if (md5($password)==$row['PASS']){
if (mysql_num_rows($resUser) == 1){
session_register("AUTH_TYPE");
$AUTH_TYPE = "login";
$_SESSION['login'] = $login;
header("Location: pag1.php");
}
else { $ERRLOGIN = true;
echo "Attenzione chiavi di accesso non corrette";
?><br><a href="pag1.php">riprova</a><?
}
} else {
echo "password errata";
?><br><a href="pag1.php">riprova</a>
<?php
}
}
else{
echo "Attenzione, campi di accesso vuoti";
?><br><a href="pag1.php">riprova</a><?
}
?>
PAGINA HTML CON MSG BENVENUTO E POSSIBILITA' LOGOUT
<?php
}
?>
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:44.



















