Limite ai login

Bizio2009

Utente Attivo
12 Giu 2009
310
0
0
Ciao a tutti!

Per favore come faccio a mettere un limite al numero di iscritti? Vorrei che le registrazioni al sito non fossero illimitate ma solo 10.

Sò che devo usare mysql_num_rows...ma qual'è la sintassi per dare il limite massimo utenti registrati?

Grazie infinite!
 
Ultima modifica:
ciao
potresti fare così

$numero_registrati=mysql_num_rows($query);

if($numero_registrati <= 10){
//esegui la registrazione
}else{
//invii messaggio che non è possible registrarsi
}
 
Un sistema alternativo per effettuare un controllo sarebbe quello di prevedere in tabella un campo ENUM settabile solo su 0 o 1 da passare a 1 quando viene raggiunto il limite di iscritti.
Ma è solo un'alternativa, la soluzione di Borgo va benissimo
 
Un sistema alternativo per effettuare un controllo sarebbe quello di prevedere in tabella un campo ENUM settabile solo su 0 o 1 da passare a 1 quando viene raggiunto il limite di iscritti.
Ma è solo un'alternativa, la soluzione di Borgo va benissimo
Buono a sapersi, grazie! :fonzie:
 
un piccolo segreto: mi hanno telefaxato da stocolma...sono in odore di (non santità) premio nobel per il php:eek:
Un'immagine inedita di Borgo che ritira l'ambito premio:
Gallery-Nobel-Prize-Nobel-004.jpg
 
Ciao! In questo script di registrazione ho messo il limite 10 ma succede questo: me lo dice ma fà registrare ugualmente infinitamente.

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&agrave; 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>";
} 
 
?>
<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>

Lo script che ho aggiunto è questo:

PHP:
$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>";
}

Grazie!
 
ciao
per forza registra sempre, hai messo la condizione

SELECT id FROM utenti LIMIT 10");

per cui sei sempre entro i 10 anche se i record effettivi sono di più

togli LIMIT 10
 
Ho provato a lasciare LIMIT 10 e a mettere al posto di else DIE e mi funzia benissimo.
Magari era un'alternativa...perchè togliere il limite 10?

Grazie!
 
perchè togliere il limite 10?
perchè se wuoi limitare ad un massimo di 10 risulta (se lasci limt 10) per esempio:
1. se i record sono 5 la query estrae solo 5 record e mysql_num_rows($query) restituisce 5
2. se i record sono 20 la query ne estrae i primi 10 e mysql_num_rows ritorna 10, e sempre 10 anche se sono 30 o 40 o.....
 

Discussioni simili