Notice: Undefined index: azione in

  • Creatore Discussione Creatore Discussione simon83
  • Data di inizio Data di inizio

simon83

Nuovo Utente
13 Mag 2014
15
0
0
Salve, sono nuovo del forum e sto cercando di imparare a programmare in php. Vorrei fare un sito con login. Ho visto alcuni tutorial su youtube; Sono stati abbastanza chiari e ho provato a rifarlo anche io (seguendo comunque il codice del tutorial). Però quando provo ad aprire la pagina dove effettuare il login ho questo errore: Notice: Undefined index: azione in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\soho\loginadmin.php on line 32

Il codice nella pagina di login è questo (in particolare è questa la parte di codice che da l'errore: $p = $_GET['azione']; )

PHP:
<?php

	include 'config.php';
	connect();
	session_start();
	
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link rel="stylesheet" type="text/css" href="stile.css">
<title>MySiteWeb | login</title>

<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<script type="text/javascript" src="js/controlloregistrazione.js"></script>

</head>

<?php 

	include 'header.php';

?>

	<div id="wrapper">
	
		<?php
		
			$p = $_GET['azione'];
			
			//login.php?azione=login;
			if($p == "login"){
			
				if(!isset($_POST['invia'])){ ?>
					
					<form method="post" action="#" id="formlogin">
					
						<label for="username">Username</label>
						<input type="text" name="username" id="username" /><br>
						<label for="password">Password</label>
						<input type="password" name="password" id="password" /><br>
						<input type="submit" name="invia" id="login" value="Accedi" />
					
					</form>
					
<?php 			} else {

					$username = mysql_real_escape_string($_POST['username']);
					$password = mysql_real_escape_string($_POST['password']);
					
					if($username == "" || $password == ""){
					
						echo "Attenzione, devi compilare tutti i campi";
					
					} else {
					
						//$password_cript = md5($password);
						
						$recuperadati = mysql_query("SELECT * FROM admin WHERE username = '$username' AND password = '$password'");
						
						$verificadati = mysql_num_rows($recuperadati);
						
						if($verificadati == 1){
						//apro la sessione
							$sessione = mysql_fetch_array($recuperadati);
							$_SESSION['admin'] = $sessione['username'];
							
							echo "Login effettuato con successo!";
							// Con header() reindirizzo la pagina dopo il login 
							header("Refresh: 2; URL= gestioneadmin.php");
						
						} else {
						
							echo "Dati non presenti nel database!";
						
						}
					
					}
				
				}
			
			// login.php?azione=logout
			} elseif ($p == "logout"){
			
				session_destroy();
				echo "Logout effettuato con successo!";
				header("Refresh: 2; URL= index.php");
			
			}
		?>
	</div>
	</div>
</body>
</html>

Tuttavia se accedo alla pagina dal link del menu riesco ad accedere alla pagina senza problemi. Vi allego anche il codice del menu:
PHP:
<?php if(isset($_SESSION['utente'])){
			
				echo "Ciao <strong>".$_SESSION['utente']."</strong>";
				echo "Ciao <strong>".$_SESSION['luogo']."</strong>";
			} else {
			
				echo "Ciao,<a href='loginadmin.php?azione=login' class='login'>accedi</a>";
			} ?>

Potreste aiutarmi? Grazie
 
Ultima modifica di un moderatore:
PHP:
$p = $_GET['azione'];

credo e ripeto credo che sia perchè se apri la pagina login.php e basta, la variabile $p non viene valorizzata cioè non contiene niente di niente, nel momento in cui invece scrivi login.php?azione=login la variabile $p assume il valore di login come se fosse $p = 'login'; e quindi essendo valorizzata non ti appare la notice :D
 
ciao
akuma ha ragione
dovresti fare es.
PHP:
<?php
if(isset($_GET['azione'])){
	$p = $_GET['azione']; 
	//ecc tutto quello che devi fare
}else{
	//quello che serve se il get non è valorizzatp es.
	echo "non puoi accedere";
	//riinviare dove vuoi
}
?>
 
ciao anch'io come simon83 sto cercando di imparare il php e provando ad eseguire de codice che ho sul libro che sto leggendo ho come risultato "undefined index.......line 10 e 11"
ecco il codice:


PHP:
<html>
 <head>
     <title>conversione misura</title>
 </head>

 <body>
 <?php 
  //verifico se la form è stata consegnata

       $feet=htmlentities($_GET["feet"]);
	  if ($_GET["feet"] !=NULL){ 
       echo "<strong>$feet</strong> metri equivalgono a <strong> ";
	   echo $feet * 0,3048;
	   echo "</strong> meters.</br>";
	}
?>

<form action="<?php echo(htmlentities($_SERVER['PHP_SELF']));?>"
	  method="GET">
	  <label>Feet:
         <input type="text"	 name"feet" value="<?php echo $feet;?>" />
	  </label>
	  <input type="submit" value="Convert" />
</form>
</body>
</html>

ho capito che l'indice $_GET['feet'] non esiste e che quidi devo eseguire un controllo con isset()
ma provando a correggere il codice non riesco a far funzionare la form:
ecco come ho modificato:

PHP:
<html>
 <head>
     <title>conversione misura</title>
 </head>

 <body>
 <?php 
  //verifico se la form è stata consegnata
    
     if (isset($_GET["feet"])){
       $feet=htmlentities($_GET["feet"]);
	  
       echo "<strong>$feet</strong> metri equivalgono a <strong> ";
	   echo $feet * 0,3048;
	   echo "</strong> meters.</br>";
	}
	else{
	$feet="inserisci misura";
	}
?>

<form action="<?php echo(htmlentities($_SERVER['PHP_SELF']));?>"
	  method="GET">
	  <label>Feet:
         <input type="text"	 name"feet" value="<?php echo $feet;?>" />
	  </label>
	  <input type="submit" value="Convert" />
</form>
</body>
</html>


credo il problema sia nel form..... essendo value="<?php echo $feet;?>" che mi rimanda sempre alla stessa pagina
ma non riesco a risolvere.....
 
Ultima modifica di un moderatore:
ciao
così di fretta, ho notato che hai scritto name"feet" ma la sintassi è name="feet"
poi dimenticavo:
i decimali si scrivono col punto 0.3048 non con la virgola 0,3048
 
Ultima modifica:

Discussioni simili