Visualizzazione risultati 1 fino 4 di 4

Discussione: Pagina php interrotta, senza alcun errore

  1. #1
    Guest

    Predefinito Pagina php interrotta, senza alcun errore

    Ho un problema che mi sta facendo diventare pazzo...
    ho un semplice sistema di login, parte da una pagina html con un form, per spedire via Post 3 variabili, nome cognome e password, a una pagina che si occupa di verificarli...
    la cosa curiosa, è che il mio script di autenticazione non produce risultati, nessun messaggio di errore, nessun output, nulla, è come fosse vuota...
    Ho provato a mettere diversi echo in punti diversi della pagina... qualunque echo messo dopo la dichiarazione delle prime 4 variabili viene completamente ignorato, per non parlare del codice che segue.

    E' una cosa molto strana, perche errori di sintassi nell'assegnazione credo di non averne fatti, e in caso li avessi fatti, dovrei ricevere qualche errore, mentre non vedo nulla, i due include a loro volta, in caso di fallimento visualizzano un messaggio di errore, che però non si presenta.
    è come se si interrompesse di sua spontanea volonta
    Vi posto il codice... magari c'è un errore banale che io per quanto mi sforzi non riesco a vedere... a me pare tutto a posto...

    Pagina di invio variabili:
    http://dharlet.altervista.org/metso/login.html
    Codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
      <title>Login</title>
      <link rel="stylesheet" type="text/css" href="stile.css"/>
      <style type="text/css">
      <!--
    							
    	 div#middleDiv {padding:0;}						
    							
    	 div#middleDiv table {width:100%;
    	 					 			 	}
    							
    	 div#middleDiv table thead tr td{background-color:#7554ac;
    	 					 			 			 			 text-align:center;
    															 font-weight:bold;}
    							
    	 div#middleDiv table {text-align:left;}
    	 
    	 div#middleDiv table tr td.first {width:200px;
    	 					 			 						 	text-align:right;}
    	 
    	 div#middleDiv table tr td.second {width:300px;}
    	
    	 div#middleDiv table tr td#tdEntra {text-align:center;}
    	 
      -->
      </style>
     </head>
     <body>
     <div id="middleDiv">
      <form method="post" action="autenticazione.php">
    	 <table cellpadding="4px" cellspacing="0">
    	  <thead>
    		 <tr>
    		  <td colspan ="2">Login</td>
    		 </tr>
    		</thead>
        <tr>
         <td class="first">Nome:</td>
    		 <td class="second"><input type="text" name="nome" size="25" maxlength="50"/></td>
        </tr>
    		<tr>
    		 <td class="first">Cognome:</td>
    		 <td class="second"><input type="text" name="cognome" size="25" maxlength="50"/></td>
    		</tr>
    		<tr>
    		 <td class="first">Password:</td>
    		 <td class="second"><input type="password" name="password" size="25" maxlength="50"/></td>
    		</tr>
    		<tr>
    		 <td colspan="2" id="tdEntra" ><input type="submit" value="Entra"/></td>
    		</tr>
       </table>
      </form>
     </div>
     </body>
    </html>
    Pagina di autenticazione
    http://dharlet.altervista.org/metso/autenticazione.php
    Codice PHP:
    <?php

    if(!@include('include/config.php'))
    die(
    'Inclusione dati Mysql fallita.');

    if(!@include(
    'include/fx_var.php'))
    die(
    'Inclusione dati Funzioni fallita.');

    $regolare = true;
    $nome = trim($_POST['nome']);
    $cognome = trim($_POST['cognome']);
    $password = $_POST['password'];

    echo
    "---";

    if(
    eregi("[a-z\ ']+",$nome))
    {
    $nome = filtra($nome);
    $nome_query = filtra($nome,true);
    }
    else
    $regolare = false;

    if(
    eregi("[a-z\ ']+",$cognome))
    {
    $cognome = filtra($cognome);
    $cognome_query = filtra($cognome,true);
    }
    else
    $regolare = false;

    if(!
    eregi("[a-z0-9]+",$password))
    $regolare = false;
    else
    $password = md5($password);

    if(!
    $regolare)
    {
    header("location:login.html");
    exit;
    }

    //inizio una nuova sessione
    session_start();

    //Connessione al database
    $connessione = @mysql_connect($db_host,$db_user,$db_password);

    if(
    $connessione)
    {
    if(@
    mysql_select_db($db_database, $connessione))
    {
    $query_string = "SELECT amministratore FROM $db_tabella WHERE nome='$nome_query' AND cognome='$cognome_query' AND password='$password'";
    $risultato = @mysql_query("SELECT * FROM $db_tabella", $connessione);
    if(
    $risultato)
    {
    if(
    $row = @mysql_fetch_array($risultato))
    {
    $successo = true;
    if(
    $row['amministratore'])
    $admin = true;
    else
    $admin = false;
    } else
    {
    $successo = false;
    $err = "I Dati inseriti Non corrispondono a nessun utente.";
    }
    } else
    {
    $successo = false;
    $err = "Impossibile effettuare la query. Verificare che il database sia accessibile.";
    }
    } else
    {
    $successo = false;
    $err = "Impossibile selezionare Il database necessario. Verificare la coerenza del nome con il file di configurazione.";
    }
    } else
    {
    $successo = false;
    $err = "Impossibile stabilire una connessione con il database Mysql. Verificare correttezza dei dati di configurazione";
    }

    //se la connessione non è avvenuta perchè si è verificato un errore, lo stampo a video,altrimenti,indirizzo alla pagina privata

    if($successo)
    {
    $_SESSION['nome'] = $nome;
    $_SESSION['cognome'] = $cognome;
    $_SESSION['autenticato'] = true;
    $_SESSION['amministratore']= $admin;
    $_SESSION['data_login'] = time();

    //la sessione ora contiene tutti i dati del login, tranne password
    header("location: pannello.php");
    exit;
    } else
    {

    ?>

    <html>
    <head>
    <title>Errore</title>
    <link rel="stylesheet" type="text/css" href="include/stile.css"/>
    </head>
    <body>
    <div id="middleDiv">
    <h3>Si è verificato un errore.</h3>
    <p><?php echo "$err"; ?></p>
    </div>
    </body>
    </html>

    <?php
    }


    ?>
    la riga echo "---"; l'ho messa come prova, e se provate a controllare, non la visualizza. Vi è mai capitato? :S

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Mettere un "@" davanti ad una espressione disabilita l'output dei messaggi di errore. Se non arrivi all' echo "---", l'errore è in uno dei due file inclusi o negli include(), ma non viene stampato.

    Mai mai mai usare "@" finché il codice non è a prova di bomba. Ed anche a quel punto, se ne dovrebbe poter fare a meno

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Mettere un "@" davanti ad una espressione disabilita l'output dei messaggi di errore. Se non arrivi all' echo "---", l'errore è in uno dei due file inclusi o negli include(), ma non viene stampato.

    Mai mai mai usare "@" finché il codice non è a prova di bomba. Ed anche a quel punto, se ne dovrebbe poter fare a meno
    Effettivamente l'errore stava nel secondo include... Terrò a mente la storia dei @... avevo tralasciato il fatto che se uno dei file inclusi avesse avuto errori di sintassi all'interno, l'include avrebbe portato con se un errore pur restituendo un valore diverso da false...

    errore veramente patetico xD grazie dell'illuminazione comunque

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    quel rigiro che fai con gli if e gli include non è necessario.

    <inserire qua ramanzina sulle guide e la gente che consigliano di usare la funzione include, senza spiegare perché>

    Dai un'occhiata a require() e require_once().

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •