- Home
- Categorie
- Coding e Sistemistica
- Coding
- Convalida Form con PHP
- 
							
							
							
							
							
A me no, completamente, se metto dentro l'IF un alert per vedere se effettivamente è entrato, l'alert non spunta, quindi non entra nell'IF... 
 
- 
							
							
							
							
							
Prova a fare così: 
 [PHP]
 if(isset($_POST['login'])){
 echo "OK";
 }
 [/PHP]
 
- 
							
							
							
							
							
Nada, mi ricarica la pagina ma senza darmi alcun esito... 
 
- 
							
							
							
							
							
Scusa mi posti tutto il codice che utilizzi? 
 
- 
							
							
							
							
							
Eccolo! 
 [PHP]<?php
 // Includo la connessione al database
 require('config.php');
 // Se il modulo viene inviato...
 /echo "<script>alert('".$_POST['login']."');</script>";/
 if(isset($_POST['login'])){
 echo "OK";// Dati Inviati dal modulo $user = (isset($_POST['username'])) ? trim($_POST['username']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default '' $pass = (isset($_POST['password'])) ? trim($_POST['password']) : ''; // Metto nella variabile 'pass' 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()) { $user = addslashes($user); $pass = addslashes($pass); } // Crypto la password e la confronto con quella nel database $pass = md5($pass); // Controllo l'utente esiste $query = mysql_query("SELECT idUtente FROM utenti WHERE visibile='s' AND gesfin='s' AND eliminato='n' AND nomeUtente = '$user' AND PassUtente = '$pass' LIMIT 1"); // Se ha trovato un record if(mysql_num_rows($query) == 1){ // prelevo l'id dal database $login = mysql_fetch_array($query); // Creo una variabile di sessione $_SESSION['loginGesfin'] = $login['idUtente']; // reindirizzo l'utente header('Location: index.php'); exit; } // se non esiste da l'errore else{ echo "<script>alert('Nome Utente e/o Password errati');</script>"; session_start(); session_destroy(); header('Location: login.php'); exit; }} ?> 
 <!DOCTYPE html>
 <html>
 <head>
 <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
 <meta http-equiv="Content-Script-Type" content="text/javascript" />
 <noscript>
 </noscript>
 <title><?php echo $nomeSito;?></title>
 <link href="css/login.css" rel="stylesheet" type="text/css" />
 <link href="css/apple.css" rel="stylesheet" type="text/css" />
 <script type="text/javascript" src="/js/jquery-1.4.min.js"></script>
 <script type="text/javascript" src="/js/jquery.validate.min.js"></script>
 <script type="text/javascript">
 $(document).ready(function(){
 $('form[name=loginForm]').validMe({shaker: true});
 });function invia(){ document.loginForm.submit(); }</script> 
 </head><body style="overflow: hidden">
 <div class="sfumatura"></div>
 <div class="login" align="center"> <img style="position: relative;" src="http://www.giorgiotave.it/forum/images/logo.png" width="326" height="220" alt="FIN Sicilia" />
 <form id="loginForm" name="loginForm" action="" method="post" style="width: 640px; margin-top: -13px;">
 <div style="width: 266px; height: 59px; left: 1px; top: 33px; z-index: 0;">
 <div id="usernameRing" class="field-ring sprite" style="opacity: 0;"></div>
 </div>
 <div id="usernameContainer" class="field-container sprite">
 <input id="username" name="username" type="text" class="field eye-transparent-mouse-opaque required" spellcheck="false" maxlength="128" value="" placeholder="Username" />
 </div>
 <div style="width: 266px; height: 59px; left: 253px; top: 33px; z-index: 0;">
 <div id="passwordRing" class="field-ring sprite" style="opacity: 0;"></div>
 </div>
 <div id="passwordContainer" class="field-container sprite">
 <input id="password" name="password" type="password" class="field eye-transparent-mouse-opaque required" maxlength="128" value="" placeholder="Password" />
 </div>
 <div style="width: 130px; height: 62px; left: 506px; top: 32px; z-index: 0;">
 <div id="submitRing" class="button-ring" style="opacity:0; filter:alpha(opacity=0);">
 <div id="submitRingLeft" class="left-halffull left sprite"></div>
 <div id="submitRingRight" class="right-halffull right sprite"></div>
 </div>
 </div>
 <div id="submitContainer" class="button-container down" style="width: 130px;">
 <input id="submitButton" class="button-input" type="text" value="_" name="login">
 <div id="submitLabel" class="button-label shadowy" shadowopacity="0.64" shadowcolor="white" shadowblur="1"><a class="loginButton" href="#" onClick="document.loginForm.submit();">Accedi</a></div>
 <div id="submitBG" class="button-bg">
 <div id="submitBGLeft" class="left-halffull left sprite"></div>
 <div id="submitBGRight" class="right-halffull right sprite"></div>
 </div>
 </div>
 </form>
 </div>
 </body>
 </html>
 [/PHP]
 
- 
							
							
							
							
							
Ho provato il tuo codice, rimuovendo ovviamente[php] require ('config.php');[/php] e appena dopo [php]echo "OK";[/php] ho messo [php]exit();[/php] così da evitare il redirect. 
 Quindi l'if è corretto, come già ti avevo detto, non è che c'è qualche altro errore?
 Prova a fare come ho fato io, aggiungi l'exit, quindi:
 [php]if (isset($_POST ['login'])) {
 echo "OK";
 exit();[/php]
 
- 
							
							
							
							
							
Ho provando mettendo un exit() quasi in ogni riga per vedere dove si bloccava. 
 A quanto pare non gli piace l'header in questa porzione di codice:[PHP]if(mysql_num_rows($query) == 1){ 
 // prelevo l'id dal database
 $login = mysql_fetch_array($query);
 // Creo una variabile di sessione
 $_SESSION['loginGesfin'] = $login['idUtente'];
 // reindirizzo l'utente
 header('Location: index.php');
 exit;
 }
 // se non esiste da l'errore
 else{
 echo "<script>alert('Nome Utente e/o Password errati');</script>";
 session_start();
 session_destroy();
 header('Location: login.php');
 exit;
 }[/PHP]Hai suggerimenti? E' la prima volta che mi da questo problema. Sempre usato lo stesso script ovunque! 
 
- 
							
							
							
							
							
Quindi entra nell'IF. Il problema degli header è che devono essere usati prima di una qualsiasi istruzione di output, basta una andata a capo e ti da problemi. 
 
- 
							
							
							
							
							
Quindi? Che mi consigli? 
 
- 
							
							
							
							
							
Di verificare se esegui output prima dell'Header. 
 Se è così devi modificare il codice affinchè non ci siano autput prima dell'header.
 
- 
							
							
							
							
							
No, nessun output, lo vedi anche tu, hai il codice intero della pagina... 
 
- 
							
							
							
							
							
Ma nel codic ec'è ancora [php]echo "OK";[/php] 
 prova a toglierlo.
 
- 
							
							
							
							
							
Nel mio codice l'ho già tolto... 
 
- 
							
							
							
							
							
Io ho provato il codice in locale e funziona nel senso che viene eseguito il redirect. Non so proprio cosa pensare. Qual'è l'errore che ti restituisce? 
 
- 
							
							
							
							
							
Nulla, semplice refresh della pagina...ho verificato la query e viene eseguita tranquillamente con un risultato valido. Ho messo la @ davanti alle istruzioni mysql in modo da evitare output involontari di errori ma nulla....se metto l'exit prima dell'istruzione header funziona tutto....altrimenti ricarica la pagina...! 
 
- 
							
							
							
							
							
E tu cosa vuoi che faccia? 
 [PHP]header('Location: index.php'); [/PHP]esegue il redirect alla index. 
 
- 
							
							
							
							
							
Ma lui mi redirect su login.php, sia che entra nel caso vero, che nel falso... 
 
- 
							
							
							
							
							
Ma sei sicuro che allora non va nell'else? perche dovrebbe andare al login se l'istruzione di redirect è verso la index? 
 
- 
							
							
							
							
							
Perché se no dovrebbe eseguire questo 
 [PHP]echo "<script>alert('Nome Utente e/o Password errati');</script>";[/PHP]Cosa che fa se metto l'exit() prima dell'header 
 
- 
							
							
							
							
							
ma quale header? questo? 
 [PHP] header('Location: login.php');[/PHP]