dovè l'errore nella pagina di login?

il var_dump messo qua
PHP:
	if(isset($_GET['azione']) && ($_GET['azione'] == 'login')){
				if(!isset($_POST['invia'])){
					var_dump($_POST['invia']);
Mi da questo errore
HTML:
Notice: Undefined index: invia

che però non capisco come risolvere visto che ho messo la voce isset() come dice il manuale.
 
il var_dump messo qua
PHP:
	if(isset($_GET['azione']) && ($_GET['azione'] == 'login')){
				if(!isset($_POST['invia'])){
					var_dump($_POST['invia']);
Mi da questo errore
HTML:
Notice: Undefined index: invia

che però non capisco come risolvere visto che ho messo la voce isset() come dice il manuale.
Si, ma in questo caso tu hai messo !isset quindi entrerà nella condizione se il risultato è falso, cioè se non è settata
 
Esattamente. In pratica la controlli solo quando non esiste (o non è settata, come dir si voglia) e infatti ti dice che è Undefined.

Ho letto tutto il thread ma non ho capito quale è il tuo problema cioè cosa non fa di quello che tu vorresti che facesse. Questo molto probabilmente è stato il motivo per cui non ricevevi risposte pur avendo ricevuto le visite che hai già constatato.
Se è solo la sessione che non si setta allora prova a fare più e più var_dump() per capire che combina con i tuoi dati.
 
ciao
penso di aver trovato l'inghippo (immagino che tu arrivi alla login3 in questa maniera)
fatti queste due paginette e provale
questa chiamala come vuoi
PHP:
<a href="login3.php?azione=login">loggati</a><br>
<a href="login3.php?azione=logout">esci</a>
e questa chiamala login3.php come l'hai chiamata tu
PHP:
<?php
if(isset($_GET['azione']) && ($_GET['azione'] == 'login')){ 
	if(!isset($_POST['invia'])){ 
?>
<form action="login3.php" method="post">
<input name="password" type="text"><br>
<input type="submit" name="invia" value="invia">

</form>
<?php
	}else{
		echo $_POST['password']."<br>";
	}
}else{
	echo "ho perso il get";
}
?>
provando (scrivi in password e dai l'invia) vedi il perchè il tutto non funzia
correggi
HTML:
<form action="login3.php" method="post">
in
HTML:
<form action="login3.php?azione=login" method="post">
e prova di nuovo
 
Ultima modifica:
Esattamente. In pratica la controlli solo quando non esiste (o non è settata, come dir si voglia) e infatti ti dice che è Undefined.

Ho letto tutto il thread ma non ho capito quale è il tuo problema cioè cosa non fa di quello che tu vorresti che facesse. Questo molto probabilmente è stato il motivo per cui non ricevevi risposte pur avendo ricevuto le visite che hai già constatato.
Se è solo la sessione che non si setta allora prova a fare più e più var_dump() per capire che combina con i tuoi dati.

Ciao, allora ti spiego in modo veloce e semplice, sperando che tutto sia chiaro.
Il form che vedi è una pagina di login, della quale ho postato sia il codice html sia il php con i controlli etc etc. Il mio problema è che quando clicco su entra cioè inserisco i dati di registrazione che ho fornito e che mi hanno confermato, al momento di cliccare su entra e quindi di loggarmi al mio sito la pagina rimane ferma! Non succede nulla, come se il segnale di loggin non venisse inviato o non passasse. Da qui il mio problema.
 
ciao
penso di aver trovato l'inghippo (immagino che tu arrivi alla login3 in questa maniera)
fatti queste due paginette e provale
questa chiamala come vuoi
PHP:
<a href="login3.php?azione=login">loggati</a><br>
<a href="login3.php?azione=logout">esci</a>
e questa chiamala login3.php come l'hai chiamata tu
PHP:
<?php
if(isset($_GET['azione']) && ($_GET['azione'] == 'login')){ 
	if(!isset($_POST['invia'])){ 
?>
<form action="login3.php" method="post">
<input name="password" type="text"><br>
<input type="submit" name="invia" value="invia">

</form>
<?php
	}else{
		echo $_POST['password']."<br>";
	}
}else{
	echo "ho perso il get";
}
?>
provando (scrivi in password e dai l'invia) vedi il perchè il tutto non funzia
correggi
HTML:
<form action="login3.php" method="post">
in
HTML:
<form action="login3.php?azione=login" method="post">
e prova di nuovo

Mi sono creato le due paginette consigliate da te. Con la prima zoluzione mi da errore mentre con la seconda tutto è ok. Il problema però mi rimane, ho provato a sostituire questo
PHP:
<form id="jform" action="login3.php" method="post">
con questo
PHP:
<form id="jform" action="login3.php?azione=login" method="post">
ma il risultato è lo stesso. Non succede nulla.
quanto al link delle pagine di login questo è il codice
PHP:
<?php if (isset($_SESSION['utente'])){
					echo "<li><font color=\"white\">Ciao,&nbsp</font> ".$_SESSION['utente']."<a href='login3.php?azione=logout'>Esci</a></li>";
				} else {
					echo "<font color=\"white\">Ciao utente,</font> <a href='login3.php?azione=login'>Entra</a> <font color=\"white\"> o </font><a href='TEST FORM REAL TIME.php'>Registrati</a>";
				}	?>
non so dove sbattere la testa!! :hammer::hammer::hammer::
 
Mi sono creato le due paginette consigliate da te. Con la prima zoluzione mi da errore mentre con la seconda tutto è ok. Il problema però mi rimane, ho provato a sostituire questo
PHP:
<form id="jform" action="login3.php" method="post">
con questo
PHP:
<form id="jform" action="login3.php?azione=login" method="post">
ma il risultato è lo stesso. Non succede nulla.
quanto al link delle pagine di login questo è il codice
PHP:
<?php if (isset($_SESSION['utente'])){
					echo "<li><font color=\"white\">Ciao,&nbsp</font> ".$_SESSION['utente']."<a href='login3.php?azione=logout'>Esci</a></li>";
				} else {
					echo "<font color=\"white\">Ciao utente,</font> <a href='login3.php?azione=login'>Entra</a> <font color=\"white\"> o </font><a href='TEST FORM REAL TIME.php'>Registrati</a>";
				}	?>
non so dove sbattere la testa!! :hammer::hammer::hammer::
Se hai sistemato tutto il codice di autenticazione forse ti sei scordato del session_start() nelle altre pagine? Il codice di borgo funziona correttamente, quindi il problema forse è differente?
 
Forse non mi è chiaro un passaggio. :incazz::incazz:
Il codice suggerito da borgo mi dice di creare da zero 2 pagine, una html con i due input, password ed invia, ed una php con il codice di controllo se viene inviato il comando GET. Ho controllato se nelle pagine index, registrazione e quella del login c'è la session_start() e ti confermo che c'è.

Ora non capisco se devo modificare qualcosa oppure se sbaglio qualcosa.
Rimetto il codice completo qua sia della pagina di login
PHP:
<?php
	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">
<!--#include virtual="/riservato/_private/logon.inc"-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Login</title>
<link rel="shortcut icon" href="images/logo biblionet tondo.jpg" />
<link href="css/reset.css" type="text/css" rel="stylesheet"/>
<link href="css/Master.css" type="text/css" rel="stylesheet"/>
<link href="css/formrealtime.css" type="text/css" rel="stylesheet"/>
<link href="css/style.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.YIWpasswordStrongTester.js"></script>
</head>
<body>
<div id="contenitore">

<?php

include 'header3.php';

?>
           <div id="contenuto_reg" class="clearfix">

<?php
		// Azione per il login3.php?azione=login
			if(isset($_GET['azione']) && ($_GET['azione'] == 'login')){
				if(!isset($_POST['invia'])){
?>
		    <div id="content">

            <form id="jform" action="login3.php?azione=login" method="post">
	            <fieldset>
                    <legend>Login</legend>
                    <p>
                		<label for="username" class="block">Username</label>
						<input type="text" name="username" id="username" value=""/>
                	</p>
                	<p>
                        <label for="password" class="block">Password:</label>
                        <input type="password" name="password" id="password" />
                    </p>
                	<p>
					<button type="submit" id="send" name="invia">Entra</button>
   					</p>
            </form>
<?php
				} else {

					$username = $mysqli->real_escape_string(stripslashes(strtolower($_POST['username']))); //salvo il nickname tutto in minuscolo onde evitare problemi.
					$password = $mysqli->real_escape_string(stripslashes($_POST['password']));


					if (empty($username)) {

						echo "Devi inserire il tuo username";

					} elseif (empty($password)) {

						echo "Devi inserire la password";

					} else {

						$password_crypt = md5($password);


						$recuperadati = $mysqli->query("SELECT * FROM biblionet_nuova_ok WHERE username = '$username' AND password = '$password_crypt'") or die($mysqli->error);


						if ($recuperadati->num_rows == 1){

							$sessione = $recuperadati->fetch_array();
							$_SESSION['utente'] = $sessione['username'];
							echo '<div id="login">
								<p><h3>Ciao, '.$username.'</h3></p>
								</div>';
							echo "Login effettuato con successo!";
							header("Refresh: 3; URL= Newindex.php");

						} else {

							echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto, Non abbiamo nessuno registrato con questi dati. Riprova
							 ad inserire i dati, oppure <a href="TEST%20FORM%20REAL%20TIME.php"> Registrati</a>, &egrave gratis!
							Grazie dallo staff Biblionet</h3></p></div>';
							echo "<meta http-equiv='Refresh' content='3; URL=Newindex.php'>";
						}

					}

				}
			 } else {

			 	// Azione del logout
				if(isset($_GET['azione']) && ($_GET['azione'] == 'logout')){

					$_SESSION=array();
					echo "Logout effettuato con successo!";
					header("Refresh: 3; URL= Newindex.php");

				}
			}


?>
		</div> <!--chiusura content-->

            <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" charset="utf-8"></script>
            <script type="text/javascript" src="js/validation2.js" charset="utf-8"></script>

        </div><!--contenuto-->

</div><!--contenitore-->
		<div class="vuoto"></div>
      	<div id="footer"><p>Copyright - Tutti i diritti sono riservati - E' vietata la riproduzione anche parziale</p></div>

</body>
</html>

sia dell'header
PHP:
<?php
	include_once 'config2.php';
?>
<div id="logo">	<img src="Images/logo nuovo biblio2tondo.jpg" width="974" height="200" alt="" /></div>
	<div class="menu">
		<ul class="primo">
			<li class='active'><a href='Newindex.php'><span>Home</span></a>
				<ul>
					
				</ul>
			</li>
			<li class="secondo"><a href='Foto.php'><span>Foto</span></a>
				<ul class="secondo">
					
				</ul>
			</li>
			<li class="terzo"><a href='Iniziative.html'><span>Iniziative</span></a>
				<ul class="terzo">
				</ul>
			</li>
			<li><a href="Modding.php"><span>Modding</span></a>
				<ul>
				</ul>
			</li>
				<li><a href='TEST FORM REAL TIME.php'><span>Contatti</span></a></li>

			<li><?php if (isset($_SESSION['utente'])){
					echo "<li><font color=\"white\">Ciao,&nbsp</font> ".$_SESSION['utente']."<a href='login3.php?azione=logout'>Esci</a></li>";
				} else {
					echo "<font color=\"white\">Ciao utente,</font> <a href='login3.php?azione=login'>Entra</a> <font color=\"white\"> o </font><a href='TEST FORM REAL TIME.php'>Registrati</a>";
				}	?>

			</li>

			<div class="facebook" >
		   <a href='http://www.facebook.com/MrChip63' target=_blank><img src="Images/facebook.png" width="30" height="30" alt="Facebook"></a></div>
	</ul>
</div>

Grazie!:o:o
 
ciao
mi è venuto un dubbio atroce (atroce perchè se è quello l'errore è una caz..ta, ma ci fa girare in tondo):
verifica ESATTAMENTE che ad ogni { aperta corrisponda una } chiusa.
guardando il tuo script (indentato da cani) mi sembra di non vedere una chiusura
 
ciao
mi è venuto un dubbio atroce (atroce perchè se è quello l'errore è una caz..ta, ma ci fa girare in tondo):
verifica ESATTAMENTE che ad ogni { aperta corrisponda una } chiusa.
guardando il tuo script (indentato da cani) mi sembra di non vedere una chiusura

Non programmo da molto, quindi l'indentazione non è certo il mio forte, anzi direi che di forte non ho nulla. L'unica cosa che sò è che per le mie conoscenze il codice php è corretto e le { sono state messe correttamente. Il codice che ho postato è intero non ci sono tagli od omissioni, se qualcuno sapesse dirmi quali errori trova lo apprezzerei moltissimo perchè io non ne vedo.

Quanto all'header non mi da errori ne nel codice ne sulla pagina via debug. Secondo voi tutto è corretto, ma il codice che ho postato non funziona. Naturalmente non so da dove partire per controllare il codice. Vorrà dire che riscriverò da zero la pagina :confused::confused::confused::confused:
 
ciao
prima di riscrivere il tutto come detto verifica {}, un sistema "quasi" rapido conta quante { e quante } il numero delle une deve essere uguale al numero delle altre, se diverso (anche di 1) ho non hai aperto o non hai chiuso
poi per l'indentazione dipende anche da che editor usi, comunque evita di lasciare righe vuote tra una riga e l'altra, più lo script si "allunga" e più difficile è seguirlo.
poi per l'indentazione ti dirò
 
Ciao, ho controllato le { e } e sono corrette. Uso come editor PHP il software PHPEdit che fa anche il controllo, e non mi da problemi.
 
Cercando in rete ho trovato questa soluzione che però non so se può andare bene.
Sostituire questo
PHP:
if(isset($_GET['azione']) && ($_GET['azione'] == 'login')){
conquesto
PHP:
if(isset($_REQUEST['azione']) && ($_REQUEST['azione'] == 'login')){
e daggiungere un campo nascosto al termine del form
PHP:
<input type="submit" id="send" name="invia" value="Entra" />
<input type="hidden" value="login" name="azione" />
 
Probabilmente ho risolto ma mi rimangono ancora alcuni problemini.
Ho rifatto il modello del fom di login ed ora cliccando sul tasto accedi mi conferma l'avvenuto accesso. Ho sistemato il codice così
PHP:
<?php
// Azione per il login3.php?azione=login
if(isset($_GET['azione']) && ($_GET['azione'] == 'login')){
	if(!isset($_POST['invia'])){
		?>
		    <div id="content">

            <form id="jform" action="controllologin.php" method="post">
	            <fieldset>
                    <legend>Login</legend>
                    <p>
                		<label for="username" class="block">Username</label>
						<input type="text" name="username" id="username" value=""/>
                	</p>
                	<p>
                        <label for="password" class="block">Password:</label>
                        <input type="password" name="password" id="password" />
                    </p>
                	<p>
                	<input type="submit" name="invia" id="login" value="accedi"/>
                	<button type="submit" name="invia" id="send">Accedi</button>
   					</p>
                 </fieldset>
            </form>
		<?php
	}
	// Azione del logout

} elseif(isset($_GET['azione']) && ($_GET['azione'] == 'logout')){

	$_SESSION=array();
	//session_destroy();
	echo "Logout effettuato con successo!";
	header("Refresh: 3; URL= Newindex.php");

}

?>
questo è il modello html mentre il motore è questo
PHP:
<?php

include_once('config2.php');

if(isset($_POST['invia'])){

	if($_SERVER['REQUEST_METHOD'] == 'POST'){


$username 	= 	$mysqli->real_escape_string(trim($_POST['username']));
$password 	= 	$mysqli->real_escape_string(trim($_POST['password']));

if (empty($username)) {

	echo "Devi inserire il tuo username";

} elseif (empty($password)) {

	echo "Devi inserire la password";

} else {

	$password_crypt = md5($password);

	 $recuperadati = $mysqli->query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_crypt'") or die($mysqli->error);
	if	($recuperadati->num_rows == 1) {

		$sessione = $recuperadati->fetch_array();
		$_SESSION['utente'] = $sessione['username'];
		echo '<div id="login">
			<p><h3>Ciao, '.$username.'</h3></p>
			</div>';
		echo "Login effettuato con successo!";
		header("Refresh: 3; URL= Newindex.php");

	} else {

		echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto, Non abbiamo nessuno registrato con questi dati. Riprova
		 ad inserire i dati, oppure <a href="TEST%20FORM%20REAL%20TIME.php"> Registrati</a>, &egrave gratis!
		Grazie dallo staff Biblionet</h3></p></div>';
		echo "<meta http-equiv='Refresh' content='3; URL=Newindex.php'>";
	}

	}
}
}

?>
fin qui abbastanza bene. Il problema è questo. Nel form html ho due voci che mi fanno loggare. Una è un input mentre la seconda è un botton. Quando clicco su input accedo, quando invece clicco sul botton no. se però al botton tolgo il riferimento all'id del css che mi da l'aspetto grafico e quindi mi appare come un input senza grafica accedo al database.

Infine quando ho l'ok che i dati sono corretti ed accedo non mi trovo la classica stringa del tipo Benvenuto Utente, ma rimane vuota. Ho sia nell'index sia nel login la session_start() all'inizio.

Sapreste darmi qualche dritta?
 
ciao
anche uno è un classico pulsante e l'altro un button entrambi di type "subit" si chiamano "invia" se permi l'uno o l'altro accedi a if(!isset($_POST['invia'])){
a che ti servono due pulsanti che fanno la stessa cosa?
 
No certo, due pulsanti che fanno la stessa cosa sono inutili, ma io volevo tenere il secondo pulsante che è associato alla linea grafica del form però non capisco dove sia l'errore, quando inserisco l'id "send" questo
Codice:
#send {
	background: #3f5a81;
	width: 45%;
	border: 5px solid #0F1620;
	font: bold 30px Verdana, sans-serif;
	color: #fafafa;
	text-shadow: 1px 1px 1px #0F1620;
	-webkit-border-radius: 7px;
	-moz-border-radius: 7px;
	border-radius: 7px;
}

#send:hover {
	background: #4d76b1;
	border: 5px solid #253750;
	color: #fff;
}

#send:active {
	text-indent: -10px;
}
la voce che fa riferimento al css il pulsante con tag button esteticamente funziona ma non invia i dati mentre se utilizzo la forma input senza dargli particolari aspetti grafici il form parte correttamente.

Altra storia invece è la questione della session!
 
ciao
perche dici che il button non funzia?
ho fatto questa piccola prova e la click sul button stampa pinco pallo
PHP:
<!DOCTYPE HTML ">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
<style type="text/css">
#send {
	background: #3f5a81;
	width: 45%;
	border: 5px solid #0F1620;
	font: bold 30px Verdana, sans-serif;
	color: #fafafa;
	text-shadow: 1px 1px 1px #0F1620;
	-webkit-border-radius: 7px;
	-moz-border-radius: 7px;
	border-radius: 7px;
}
#send:hover {
	background: #4d76b1;
	border: 5px solid #253750;
	color: #fff;
}

#send:active {
	text-indent: -10px;
}
</style>
</head>
<body>
<?php
if(isset($_POST['invia'])){
echo "pinco pallo";
}
?>
            <form id="jform" action="#" method="post">
                <fieldset>
                    <legend>Login</legend>
                    <p>
                        <label for="username" class="block">Username</label>
                        <input type="text" name="username" id="username" value=""/>
                    </p>
                    <p>
                        <label for="password" class="block">Password:</label>
                        <input type="password" name="password" id="password" />
                    </p>
                    <p>
                    <!--<input type="submit" name="invia" id="login" value="accedi"/>-->
                    <button type="submit" name="invia" id="send">Accedi</button>
                       </p>
                 </fieldset>
            </form> 
</body>
</html>
 

Discussioni simili