login con indirizzo a pagine diverse

Marco196943

Utente Attivo
19 Ago 2012
66
0
0
Salve a tutti Vorrei rompervi ancora un pò le scatoline, ho creato un login e vorrei dare la possibilità al solo amministratore di accedere ad unaltra pagina tramite username e password, ora mi sto impicciando con gli if e gli else e le graffe e le tonde :hammer:potete aiutarmi a capire? grazie per l'attenzione vi posto il codice


PHP:
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['email'])) {
  $loginUsername=$_POST['email'];
  $password=$_POST['password'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "ok.php";
  $MM_redirectLoginFailed = "accesso ko.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_iscritti, $iscritti);
  
  $LoginRS__query=sprintf("SELECT email, password FROM iscrizioni WHERE email=%s AND password=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 
   
  $LoginRS = mysql_query($LoginRS__query, $iscritti) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
    
	if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;	      

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
 
ciao
potresti provare a procedere in due modi
se l'adm ha il suo user e pass (ti scrivo in pseudo codice)
if usn== userm_dell_admin e pass== pass_dell_admin
mandi alla pag dell admin
else
alla pagina utente

oppure metti nella tabella iscrizioni un campo chiamato autorizzazione
quando cerchi l'user e la pass estrai anche quel campo
if campo autorizzazione == 1
mandi alla pag dell admin
else
alla pagina utente

il sencondo, per me, è migliore
 
Si infatti meglio il secondo. Se vuoi creare un secondo admin in futuro o cambiare quello
Che c'è (oppure semplicemente cambiare password) dovresti modificare anche il codice. Invece con un altro campo nella tabella puoi fare tutto senza mettere mani alle pagine.
 
hehehe vi piace vincere facile è:mavieni: allora dunque se ho capito bene:
nel mio db aggiungo un campo autorizzazione i settaggi del campo varchar, null, 255, mysam come primo id creato da me? prima domanda.
poi la query diventerà
PHP:
 $LoginRS__query=sprintf("SELECT email, password FROM iscrizioni & autorizzazione WHERE email=%s AND password=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
grazie ragazzi per l'aiuto
 
ciao
no, no
PHP:
 $LoginRS__query=sprintf("SELECT email, password, autorizzazione  FROM iscrizioni  WHERE email=%s AND password=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));

poi devi etrarre il vcampo autorizzazione con un mysql_fetch_array o simile
 
no credo di non aver compreso pienamente, ho creato il campo nel db, ho rifatto la query includendo il campo ma non riesco ad andare avanti...

PHP:
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['email'])) {
  $loginUsername=$_POST['email'];
  $password=$_POST['password'];
  $MM_fldUserAuthorization = "autorizzazione";
  $MM_redirectLoginSuccess = "ok.php";
  $MM_redirectLoginFailed = "accesso ko.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_iscritti, $iscritti);
  	
  $LoginRS__query=sprintf("SELECT email, password, autorizzazione FROM iscrizioni WHERE email=%s AND password=%s",
  GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 
   
  $LoginRS = mysql_query($LoginRS__query, $iscritti) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
    
    $loginStrGroup  = mysql_result($LoginRS,0,'autorizzazione');
    
	if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;	      

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
 
ok così sembra che abbia risolto, certo da database è un altra cosa ma non riesco...
ora come posso applicare dei controlli mi spiego meglio se l'admin inserisce una password errata, o un email errata ma la password giusta, come posso con il php dire password errata o email errata?

PHP:
  $LoginRS__query=sprintf("SELECT email, password FROM iscrizioni WHERE email=%s AND password=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 
   
  $LoginRS = mysql_query($LoginRS__query, $iscritti) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
    
	if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;
		   
	 if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
	if ($loginUsername == '[email protected]' && $password== 'admin') {
header("Location: http://www.miosito.com" );
} 
else
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
 
ciao
volevo farti un'osservazione sulla sicurezza
PHP:
<?php
//.....
$loginUsername=$_POST['email'];
$password=$_POST['password']; 
//.....
?>
leggi http://hashphp.org/
in particolare sulle SQL injection http://en.wikipedia.org/wiki/SQL_injection
dacci un occhio e pensa se il tuo sistema (l'hai fatto tu ?) è sicuro
detto questo mi sembra che tu ti stia complicando inutilmente la vita, o usi le pdo facendo felice il sommo o le vecchie (sane) query

p.s.
questo l'eviterei
session_regenerate_id
 
ciao borgo, io uso dream e secondo il codice che mi dà lo adatto alle mie esigenze, ora leggo gli articoli e cerco di capirci qualcosa. grazie Marco
 

Discussioni simili