login semplice con array

  • Creatore Discussione Creatore Discussione luigi777
  • Data di inizio Data di inizio

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
43
Massa, Italy
Salve, ho questi due codici.. ma non so perché non funziona. Su internet non riesco ad trovare nulla di pronto quindi mi sto scrivendo una picolissima chat solo per un'esperimento.

qui ci sono le password messe cosi:
PHP:
<?php
$USERS["username1"] = "password1";
$USERS["username2"] = "password2";
$USERS["username3"] = "password3";
?>

ed questo e i login:
PHP:
<?php

require_once(dirname(__FILE__) . '/inc.php'); 

if(isset($_POST["submit"]))
{
	$input_password = protect($_POST["password"]);
	$input_username = protect($_POST["username"]);
	
	if ($USERS[$input_username]==$USERS[$input_password]) { 
		  $_SESSION["logged"] = true;
          $_SESSION["username"]=$input_username;
		  header ("Location: chat.php");
     } else {
          $error = 'Incorrect username/password. Please, try again.';
		}
}

?>
<?php
 if(isset($error)){ echo $error;}
if(isset($msg)){ echo $msg;} else {
?>	
		<form class="form" action="login.php" method="post">
				<p>User</p>
				<input class="input" type="text" name="username" id="username" value="<?php if(isset($_POST['username'])){echo $_POST['username'];}?>" />
				<p>Password</p>
				<input class="input" type="password" name="password" id="password" />
			<input type="submit" name="Login" value="Login"   alt="submit" title="submit" />
			<br class="clear" />
		</form>
<?php
}
?>

la session start e messa in un file chiamato config.php che non ve lo mostro perché non serve farvelo vedere..perché tanto c'è solo
session_start();.

mi dite come posso fare?

grazie mille e buona domenica.

saluti,
luigi.
 
scusa .. ma sono scemo io.. non avevo cambiato il nome della form..
ora mi da questo errore:
Notice: Undefined index: password1 in D:\xampp\htdocs\chat\login.php on line 10
Incorrect username/password. Please, try again.

che vuole dire?
la linea dell'errore e questa:

PHP:
if ($USERS[$input_username]==$USERS[$input_password]) {

codice corretto:
PHP:
<?php

	require_once(dirname(__FILE__) . '/inc.php'); 

	if(isset($_POST["Login"]))
	{
		$input_password = protect($_POST["password"]);
		$input_username = protect($_POST["username"]);
		
		if ($USERS[$input_username]==$USERS[$input_password]) { 
			  $_SESSION["logged"] = true;
			  $_SESSION["username"]=$input_username;
			  header ("Location: chat.php");
		 } else {
			  $error = 'Incorrect username/password. Please, try again.';
			}
	}

	?>
	<?php
	 if(isset($error)){ echo $error;}
	if(isset($msg)){ echo $msg;} else {
	?>    
			<form class="form" action="login.php" method="post">
					<p>User</p>
					<input class="input" type="text" name="username" id="username" value="<?php if(isset($_POST['username'])){echo $_POST['username'];}?>" />
					<p>Password</p>
					<input class="input" type="password" name="password" id="password" />
				<input type="submit" name="Login" value="Login"   alt="submit" title="submit" />
				<br class="clear" />
			</form>
	<?php
	}
?>

grazie mille.
 
ciao, per l'array non lo so..

la funzione è questa:
PHP:
	function protect($value) {
    $value = (get_magic_quotes_gpc()) ? stripslashes($value) : $value;
    return $value;
}

ma gli utenti lo postati nel primo post.
come posso fare?
ho provato anche senza protezione degli apici che non so se serve in una chat senza database ..

serve o non serve la funzione protect?
grazie e scusa. ma ho un sito che non ha il database c'è solo php5.
ti ringrazio molto.

saluti e buona serata.
 
ciao
non utilizzando il db non ti serve, a parte che protect è una parola chiave di php (mi sembra che si uso per le classi) e NON è mai bene dare nomi a varibili e/o funzioni che siano parole chiave di php.
comunque ora ci do un occhio poi ti so dire
 
ok, ti ringrazio non lo sapevo che èra una parola risevata.

ora il codice è questo e funzionante..
vorrei sapere se si può che ogni utente a un sua immagine diversa sempre avendo questa struttura.
ecco il codice:
PHP:
if(isset($_POST["Login"]))
	{
	if ($USERS[$_POST["username"]]==$_POST["password"]) { 
			  $_SESSION["logged"] = true;
			  $_SESSION["username"]=$_POST["username"];
			
			  $msg ="Aspetta il redirezzamento";
			  redirect("chat.php", 5);	// mia funzione per aspettare secondi + redirect e levando il problema dell'html in alto quando ci sarà.
			  } else {
			  $error = 'Incorrect username/password. Please, try again.';
			}
	}

	?>
 
potresti provre in questo modo
PHP:
<?php
session_start();
$USERS["username1"]['pass'] = "password1";
$USERS["username1"]['img'] = "immagine1";

if (isset($_POST["Login"])) {
    if ($USERS[$_POST["username"]]['pass'] == $_POST["password"]) {
        $_SESSION["logged"] = true;
        $_SESSION["username"] = $_POST["username"];
        $_SESSION["immagine"] = $USERS[$_POST["username"]]['img'];

        $msg = "Aspetta il redirezzamento";
        redirect("chat.php", 5);    // mia funzione per aspettare secondi + redirect e levando il problema dell'html in alto quando ci sarà.
    } else {
        $error = 'Incorrect username/password. Please, try again.';
    }
}
?>
 
ciao
si è possibile, visto che non usi il db, basta creare un altro array simile a quello che hai fatto
(per le variabili usa le minuscole generalmente le maiuscole si usano per le costanti)
PHP:
<?php
$users["username1"] = "password1";
$users["username2"] = "password2";
$users["username3"] = "password3"; 
$img["username1"] = "pinco.jpg";//eventualmente anche il percorso
$img["username2"] = "pallo.jpg";
$img["username3"] = "sempronio.jpg";
?>
poi nella parte di login puoi mettere
PHP:
<?php
//.....
if ($USERS[$input_username]==$USERS[$input_password]) { 
          $_SESSION["logged"] = $img[$input_username];//non ti serve il true, nella pag riservata basta verificare che esistano
          $_SESSION["username"]=$input_username;
          header ("Location: chat.php");
		  exit();//sempre meglio mettere l'exit()
     } else {
          $error = 'Incorrect username/password. Please, try again.';
        } 
//....
?>
nella pagina riservata
PHP:
<?php
session_start();
//la parte dell'if serve per evitare accessi non autorizzati es www.tuo_sito.it/chat.php
if(!isset($_SESSION['logged']) || isset($_SESSION['username'])){//se non esistono
	header ("Location: index.php");//o dove vuoi rimendare
	exit();
}
// e qui fai quello che vuoi fare
echo "<img src=\"".$_SESSION['logged']."\"/> ciao ".$_SESSION['username']." chatta pure";
//ecc......
?>

inoltre piccolo accorgimento nel form
PHP:
<form class="form" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
così se cambi il nome della pagina non devi cambiarlo nell'action

edit
non mi ero accorto di criric
 
risolto e corretto ecco il codice a voi .. ho usato quello di criric:

PHP:
if(isset($_POST["Login"]))
	{
	if(empty($_POST["username"]))
	{
	
		$error = "Non hai inserito l'username";
			
	}elseif(empty($_POST["password"]))
	{
		$error = "Non hai inserita la password";
	}else
	{
		if ($USERS[$_POST["username"]]['pass'] == $_POST["password"]) {
			$_SESSION["logged"] = true;
			$_SESSION["username"] = $_POST["username"];
			$_SESSION["immagine"] = $USERS[$_POST["username"]]['img'];
			$msg ="Aspetta il redirezzamento";
			redirect("chat.php", 5);	
		 } else {
			  $error = 'Incorrect username/password. Please, try again.';
		}
	  }
	}
	?>

ora mi manca solo la grafica e l'invio dei messaggi e poi sono a posto.

vi ringrazio molto.
saluti e a domani.
 

Discussioni simili