- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Tutorial] Area privata
-
@Thedarkita said:
Abbiamo già trattato il recupero password, se guardi nelle varie pagine trovi tutto.
Ok, le leggerò, grazie!
-
Ho messo la query, ma và oltre i dieci iscritti...
[PHP]$query=mysql_query("SELECT id FROM utenti LIMIT 10");
$utenti=mysql_num_rows($query);
if($utenti <= 10){
//esegui la registrazione
}else{
echo "SUPERATO IL LIMITE UTENTI REGISTRATI";
} [/PHP]
-
Dovresti fare
[php]
if($utenti < 10){
[/php]Altrimenti ne fai registrare 11 e non 10.
-
Perfetto, grazie! Però mi dà questo l'errore sull'header...lo devo indirizzare?
Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\login\registrati.php:12) in c:\programmi\easyphp1-8\www\login\registrati.php on line 64
-
[PHP]$query=mysql_query("SELECT id FROM utenti LIMIT 10");
$utenti=mysql_num_rows($query);
if($utenti < 10){
//esegui la registrazione
}else{
echo "SUPERATO IL LIMITE UTENTI REGISTRATI";
}
header('Location: login.php');
exit;[/PHP]
-
Se fai un redirect che senso ha fare un echo che non vedresti?
-
Vero
Ma allora perchè mi dà:
Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\login\registrati.php:12) in c:\programmi\easyphp1-8\www\login\registrati.php on line 64
-
Sarebbe questa riga:
[PHP]// Reindirizzo l'utente ad una pagina di conferma della registrazione
header('Location: registrato.php');
exit;[/PHP]
-
Forse devo mettere lo script anche nella pagina registrato.php?
-
Allora, l'avvertimento l'ho risolto spostando lo script...ma continuo a registrare utenti all'infinito...
[php]<?php
// Includo la connessione al database
require('config.php');// Se il modulo viene inviato...
if(isset($_POST['registra']))
{
// Dati Inviati dal modulo
$cognome_utente = (isset($_POST['cognome_utente'])) ? trim($_POST['cognome_utente']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
$nome_utente = (isset($_POST['nome_utente'])) ? trim($_POST['nome_utente']) : ''; // 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 ''
$mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : ''; // Metto nella variabile 'mail' 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()) {
$cognome_utente = addslashes($cognome_utente);
$nome_utente = addslashes($nome_utente);
$pass = addslashes($pass);
$mail = addslashes($mail);
}// Controllo il Nome Utente
if(strlen($cognome_utente) < 4 || strlen($cognome_utente) > 12)
die('Cognome troppo corto, o troppo lungo');
if(strlen($nome_utente) < 4 || strlen($nome_utente) > 12)
die('Nome troppo corto, o troppo lungo');
// Controllo la Password
elseif(strlen($pass) < 4 || strlen($pass) > 12)
die('Password troppo corta, o troppo lunga');
// Controllo l'email
elseif(!eregi("^[a-z0-9][_.a-z0-9-]+@([a-z0-9][0-9a-z-]+.)+([a-z]{2,4})", $mail))
die('Email non valida');
// Controllo il nome utente non sia già occupato
elseif(mysql_num_rows(mysql_query("SELECT cognome_utente FROM utenti WHERE cognome_utente = '$cognome_utente' LIMIT 1")) == 1)
die('Cognome Utente non disponibile');
// Controllo l'indirizzo email non sia già registrato
elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1)
die('Questo indirizzo email risulta già registrato ad un altro utente');
// Registrazione dell'utente nel database
else
{// Crypt della password per garantire una miglior sicurezza
$pass = md5($pass);// Query per l'inserimento dell'utente nel database
$strSQL = "INSERT INTO utenti (cognome_utente, nome_utente, pass, mail)";
$strSQL .= "VALUES('$cognome_utente', '$nome_utente', '$pass', '$mail')";
mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());// Reindirizzo l'utente ad una pagina di conferma della registrazione
header('Location: registrato.php');
exit;
}
}
$query=mysql_query("SELECT id FROM utenti LIMIT 10");
$utenti=mysql_num_rows($query);
if($utenti < 10){
//esegui la registrazione
}else{
echo "<center><b><h3>SUPERATO IL LIMITE UTENTI REGISTRATI</h3></b></center><br><br>";
}?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registrazione</title>
</head>
<body>
<div align="center">
<form action="" method="post">
<table bgcolor="#bdd3ad" cellspacing="1" cellpadding="10" border="1">
<tr>
<th colspan=2>REGISTRATI ALL'AREA PRIVATA</th>
</tr>
<tr>
<td width="90" align="right"><font face="Verdana" size="2">COGNOME</font>:</td>
<td width="140"><input name="cognome_utente" type="text" id="cognome_utente" value="" size="15" align="middle onfocus="if(this.value=='Nome Utente') this.value='';" /><br /></td>
</tr>
<tr>
<td width="90" align="right"><font face="Verdana" size="2">NOME</font></td>
<td width="140"><input name="nome_utente" type="text" id="nome_utente" value="" size="15" align="middle onfocus="if(this.value=='Nome Utente') this.value='';" /><br /></td>
</tr>
<tr>
<td width="90" align="right"><font face="Verdana" size="2">PASSWORD</font></td>
<td width="140"><input name="pass" type="password" id="pass" value="" size="15" align="middle onfocus="if(this.value=='Password') this.value='';" /><br /><br /></td>
</tr>
<tr>
<td width="90" align="right"><font face="Verdana" size="2">E-MAIL</font></td>
<td width="140"><input name="mail" type="text" id="mail" value="" size="15" align="middle onfocus="if() this.value='';" /><br /><br /></td>
</tr>
<tr>
<td colspan="2" height="60" align="center">
<input name="registra" width=80 type="submit" value="REGISTRATI" align=middle onclick="check()">
<input name="reset" type="reset" value="ANNULLA" width=80 align=middle>
</td>
</tr>
</table>
</form>
</div>
</body>
</html>[/php]Praticamente mi avverte che non ci si può più registrare ma in realtà ci si può registrare ed entrare nell'area privata...
-
[php]
<?php
// Includo la connessione al database
require('config.php');// Se il modulo viene inviato...
if(isset($_POST['registra']))
{
// Dati Inviati dal modulo
$cognome_utente = (isset($_POST['cognome_utente'])) ? trim($_POST['cognome_utente']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
$nome_utente = (isset($_POST['nome_utente'])) ? trim($_POST['nome_utente']) : ''; // 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 ''
$mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : ''; // Metto nella variabile 'mail' 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()) {
$cognome_utente = addslashes($cognome_utente);
$nome_utente = addslashes($nome_utente);
$pass = addslashes($pass);
$mail = addslashes($mail);
}// Controllo il Nome Utente
if(strlen($cognome_utente) < 4 || strlen($cognome_utente) > 12)
die('Cognome troppo corto, o troppo lungo');
if(strlen($nome_utente) < 4 || strlen($nome_utente) > 12)
die('Nome troppo corto, o troppo lungo');
// Controllo la Password
elseif(strlen($pass) < 4 || strlen($pass) > 12)
die('Password troppo corta, o troppo lunga');
// Controllo l'email
elseif(!eregi("^[a-z0-9][_.a-z0-9-]+@([a-z0-9][0-9a-z-]+.)+([a-z]{2,4})", $mail))
die('Email non valida');
// Controllo il nome utente non sia già occupato
elseif(mysql_num_rows(mysql_query("SELECT cognome_utente FROM utenti WHERE cognome_utente = '$cognome_utente' LIMIT 1")) == 1)
die('Cognome Utente non disponibile');
// Controllo l'indirizzo email non sia già registrato
elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1)
die('Questo indirizzo email risulta già registrato ad un altro utente');
// Registrazione dell'utente nel database
else
{// Crypt della password per garantire una miglior sicurezza
$pass = md5($pass);// Query per l'inserimento dell'utente nel database
$strSQL = "INSERT INTO utenti (cognome_utente, nome_utente, pass, mail)";
$strSQL .= "VALUES('$cognome_utente', '$nome_utente', '$pass', '$mail')";
mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());// Reindirizzo l'utente ad una pagina di conferma della registrazione
header('Location: registrato.php');
exit;
}
}
$query=mysql_query("SELECT id FROM utenti LIMIT 10");
$utenti=mysql_num_rows($query);
if($utenti == 10)
die("<center><b><h3>SUPERATO IL LIMITE UTENTI REGISTRATI</h3></b></center><br><br>");?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registrazione</title>
</head>
<body>
<div align="center">
<form action="" method="post">
<table bgcolor="#bdd3ad" cellspacing="1" cellpadding="10" border="1">
<tr>
<th colspan=2>REGISTRATI ALL'AREA PRIVATA</th>
</tr>
<tr>
<td width="90" align="right"><font face="Verdana" size="2">COGNOME</font>:</td>
<td width="140"><input name="cognome_utente" type="text" id="cognome_utente" value="" size="15" align="middle onfocus="if(this.value=='Nome Utente') this.value='';" /><br /></td>
</tr>
<tr>
<td width="90" align="right"><font face="Verdana" size="2">NOME</font></td>
<td width="140"><input name="nome_utente" type="text" id="nome_utente" value="" size="15" align="middle onfocus="if(this.value=='Nome Utente') this.value='';" /><br /></td>
</tr>
<tr>
<td width="90" align="right"><font face="Verdana" size="2">PASSWORD</font></td>
<td width="140"><input name="pass" type="password" id="pass" value="" size="15" align="middle onfocus="if(this.value=='Password') this.value='';" /><br /><br /></td>
</tr>
<tr>
<td width="90" align="right"><font face="Verdana" size="2">E-MAIL</font></td>
<td width="140"><input name="mail" type="text" id="mail" value="" size="15" align="middle onfocus="if() this.value='';" /><br /><br /></td>
</tr>
<tr>
<td colspan="2" height="60" align="center">
<input name="registra" width=80 type="submit" value="REGISTRATI" align=middle onclick="check()">
<input name="reset" type="reset" value="ANNULLA" width=80 align=middle>
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
[/php]
-
Ti ringrazio molto Thedarkita
-
TI IMPLORO IN GINOCCHIO DI AIUTARMI!!!!
Senti sto avendo molti problemi con il tuo script e vorrei risolverli allora
- il $_SESSION['id'] non mi funziona
- il login non funziuona e ho scoperto che se metto il session_start() nel config.ini il login va se lo metto nella apgina privata il login non và ti posto il codice, in poche parole la pagina privata non mi riconosce come utente registrato...ti posto qui l'inizio del codice della pagina privata
[php]
<?
session_start();
// Se non è stata definita la variabile manda l'utente alla homepage
if(!isset($_SESSION['login']))
{
header('Location: index.php');
exit;
}
[/php]
-
Ciao Zomer,
Il codice che hai postato mi sembra corretto.
-
E allora perchè non mi funziona? Prova tu questo è la index metti accedi e poi account Zomer e pass tgbyhn vedi che ti rimanda alla index!
h**p://zomer.altervista.org/index.php
-
Posta il codice per intero della pagina privata e del file login.php da te usato.
-
login.php
[PHP]
<?php
// Includo la connessione al database
require('config.ini.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,attivazione 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); // L'account � attivo? if($login['attivazione'] == '') { // Creo una variabile di sessione $_SESSION['login'] = $login['id']; // reindirizzo l'utente header('Location: home.php'); exit; } else { die('Attiva il tuo account!!!'); } } // se non esiste da l'errore else die('Nome Utente o Password errati');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "hp://w.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="h**p://**w.w3.org/1999/xhtml">
<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='';" />
<input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" />
<input name="login" type="submit" value="Login" />
</form>
</body>
</html>[/PHP]
home.php
[PHP]
<?
session_start();
// Se non è stata definita la variabile manda l'utente alla homepage
if(!isset($_SESSION['login']))
{
header('Location: index.php');
exit;
}//controllo se sono presenti richieste sul utente
echo "<div id="richieste">";if(isset($_SESSION['user']) && isset($_SESSION['id']) && isset($_SESSION['nome']) )
{
$c=0;
echo "<script language='javascript'>
var richiesta = new Array();";
//si conette al database è trova l'id dell'amico
require('config.ini.php');
$query="SELECT id_amico FROM richieste".$_SESSION['id']." WHERE 1";
if($risultato = mysql_query($query))
{
while($row = mysql_fetch_array($risultato))
{
//if(strlen($row['amico'])>0)
echo "richiesta[".$c++."] = '".$row['id_amico']."';";
}
// riapre il database e con l'id_amico trova il nome e cognome associato all'id
$query = mysql_query("SELECT user,nome FROM utenti WHERE nome = '".$name."' LIMIT 1");
//chiude il database
mysql_close($db);if($c>0) //invia il messaggio al utente $testo = ''; if($row['tipo'] == "1") //o quello che hai deciso per le amicizie $testo = " L'utnete '$name' ti ha chiesto di essere suo amico "; //gli da la doppia chance echo " $testo <a href='amicizia.php?amico_aggiungi=".$_row['user']."'>Accetta</a> <a href='amicizia.php?amico_elimina=".$_row['user']."'>Ignora</a><br>"; } else errore('ERRORE QUERY'); echo "</script>"; }
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "hp://w.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>huiijl</title>
<link rel="stylesheet" href="stili/prof-menu/prof-menu.css">
<link rel="stylesheet" href="stili/barra/barra.css">
</head>
<body>
<table style="height: 16px; width: 1089px;" cellpadding="0"
cellspacing="0">
<tbody>
<tr>
<td> </td>
<td style="text-align: center;">
<script type="text/javascript">
//<![CDATA[
document.write('<s'+'cript type="text/javascript" src="h**p://ad.altervista.org/js.ad/size=728X90/r='+new Date().getTime()+'"></s'+'cript>');
//]]>
</script></td>
<td style="text-align: right;"><a href="logout.php"><img
style="border: 0px solid ; width: 82px; height: 18px;"
alt="Esci e buon divertiemnto :D"
src="immagini/button/button_esci.gif"></a>
<a href="ricerca1.php">Cerca amico</a>
</td>
</tr>
</tbody>
</table>
<table style="width: 1089px; height: 118px;" cellpadding="0"
cellspacing="0">
<tbody>
<tr>
<td> <a href="home.php"><img
style="border: 0px solid ; width: 300px; height: 110px;"
alt="Zomer-Home" src="/loghi/logo.png"></a><br>
</td>
<td> <li class="green">
<p><a href="#">Il mio profilo</a></p>
<p class="subtext"> </p>
</li>
<li class="yellow">
<p><a href="costruzione.html">MyBlog</a></p>
<p class="subtext"></p>
</li>
<li class="red">
<p><a href="costruzione.html">Messaggi</a></p>
<p class="subtext"></p>
</li>
<li class="blue">
<p><a href="amici.php">Amici</a></p>
<p class="subtext"></p>
</li>
</td>
</tr>
</tbody>
</table>
<br>
<br>
<br>
<br>
<br>
<table style="width: 109px; height: 35px;" cellpadding="0"
cellspacing="0">
<tbody>
<tr>
<td><a href="avatar/index.htm"><img style="border: 0px solid ; width: 92px; height: 26px;"
alt="Cairca una foto" src="immagini/button/button_carica.gif"></a>
</td>
</tr>
</tbody>
</table>
<br>
<br>
<div id="bottom">
Barra
</body>
</html>
[/PHP]
-
home.php
[php]
<?php
require('config.ini.php');
// Se non è stata definita la variabile manda l'utente alla homepage
if(!isset($_SESSION['login']))
{
header('Location: index.php');
exit;
}//controllo se sono presenti richieste sul utente
echo "<div id="richieste">";if(isset($_SESSION['user']) && isset($_SESSION['id']) && isset($_SESSION['nome']) )
{
$c=0;
echo "<script language='javascript'>
var richiesta = new Array();";
//si conette al database è trova l'id dell'amico$query="SELECT id_amico FROM richieste".$_SESSION['id']." WHERE 1"; if($risultato = mysql_query($query)) { while($row = mysql_fetch_array($risultato)) { //if(strlen($row['amico'])>0) echo "richiesta[".$c++."] = '".$row['id_amico']."';"; } // riapre il database e con l'id_amico trova il nome e cognome associato all'id $query = mysql_query("SELECT user,nome FROM utenti WHERE nome = '".$name."' LIMIT 1"); if($c>0) //invia il messaggio al utente $testo = ''; if($row['tipo'] == "1") //o quello che hai deciso per le amicizie $testo = " L'utnete '$name' ti ha chiesto di essere suo amico "; //gli da la doppia chance echo " $testo <a href='amicizia.php?amico_aggiungi=".$_row['user']."'>Accetta</a> <a href='amicizia.php?amico_elimina=".$_row['user']."'>Ignora</a><br>"; } else errore('ERRORE QUERY'); echo "</script>"; }
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "hp://w.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>huiijl</title>
<link rel="stylesheet" href="stili/prof-menu/prof-menu.css">
<link rel="stylesheet" href="stili/barra/barra.css">
</head>
<body>
<table style="height: 16px; width: 1089px;" cellpadding="0"
cellspacing="0">
<tbody>
<tr>
<td> </td>
<td style="text-align: center;">
<script type="text/javascript">
//<![CDATA[
document.write('<s'+'cript type="text/javascript" src="h**p://ad.altervista.org/js.ad/size=728X90/r='+new Date().getTime()+'"></s'+'cript>');
//]]>
</script></td>
<td style="text-align: right;"><a href="logout.php"><img
style="border: 0px solid ; width: 82px; height: 18px;"
alt="Esci e buon divertiemnto :D"
src="immagini/button/button_esci.gif"></a>
<a href="ricerca1.php">Cerca amico</a>
</td>
</tr>
</tbody>
</table>
<table style="width: 1089px; height: 118px;" cellpadding="0"
cellspacing="0">
<tbody>
<tr>
<td> <a href="home.php"><img
style="border: 0px solid ; width: 300px; height: 110px;"
alt="Zomer-Home" src="/loghi/logo.png"></a><br>
</td>
<td> <li class="green">
<p><a href="#">Il mio profilo</a></p>
<p class="subtext"> </p>
</li>
<li class="yellow">
<p><a href="costruzione.html">MyBlog</a></p>
<p class="subtext"></p>
</li>
<li class="red">
<p><a href="costruzione.html">Messaggi</a></p>
<p class="subtext"></p>
</li>
<li class="blue">
<p><a href="amici.php">Amici</a></p>
<p class="subtext"></p>
</li>
</td>
</tr>
</tbody>
</table>
<br>
<br>
<br>
<br>
<br>
<table style="width: 109px; height: 35px;" cellpadding="0"
cellspacing="0">
<tbody>
<tr>
<td><a href="avatar/index.htm"><img style="border: 0px solid ; width: 92px; height: 26px;"
alt="Cairca una foto" src="immagini/button/button_carica.gif"></a>
</td>
</tr>
</tbody>
</table>
<br>
<br>
<div id="bottom">
Barra
</body>
</html>
[/php]EDIT: non vedo dove dai valore a $_SESSION['user'] e $_SESSION['nome'].
EDIT2: Questa query:
[php]$query="SELECT id_amico FROM richieste".$_SESSION['id']." WHERE 1";[/php]
Dovrebbe generare errori di sintassi.
-
Ancora non funziona.
Come dovrebbe essere la query?
-
Non sò come hai strutturato la cosa dovrebbe essere cosi:
[php]$query="SELECT id_amico FROM richieste WHERE campo = '{$_SESSION['id']}'"; [/php]Al posto di:
[php]
if(!isset($_SESSION['login']))
{
header('Location: index.php');
exit;
}
[/php]
Metti:
[php]
echo $_SESSION['login'];
[/php]Nel file config.ini.php hai messo session_start?