[php]Login non funzionante

Stato
Discussione chiusa ad ulteriori risposte.

Torre1992

Utente Electrum
6 Febbraio 2008
104
22
5
104
Ciao a tutti, è un sacco che non vengo sul forum.
Beh sto facendo un sito per scuola e ho un problema nel login dell'amministrazione... Mi sembra una cosa altamente stupida e in locale funziona, ma una volta caricata su netsons non funziona :dodgy: boh...

Beh il problema è che quando clicco il submit nella form mi manda alla pagina controllo.php e si ferma li, dando pagina bianca, nessun errore, niente... invece quando sono sbagliati mi dovrebbe mandare indietro con un alert e quando sono giusti mi redirecta ad amministrazione.php
Boh, cmq posto il codice...

index.php
PHP:
<table>
<tr>
<td height="26" colspan="2" align="center" class="paginaNormale">
<a href="../index.php"> Homepage Flay Away </a>
</td>
</tr>

<form method="POST" action="controllo.php">
<tr>
<td class="paginaNormale">Username</td>
<td><input type="text" name="username">
</tr>

<tr>
<td class="paginaNormale">Password</td>
<td><input type="password" name="password"></td>
</tr>

<tr>
<td>
<input type="submit" value="Invia">
</td>

</form>
</table>

controllo.php
PHP:
	include_once("../function.php");

	$nome = $_POST['username'];
	$paslog=$_POST['password'];
	$psw = md5($_POST['password']);
	
	//le pass le ho modificate tranquilli...
	if (($nome == "Torre92" OR $nome=="torre92") AND ($psw == "3700fb87bceafc68ccdefadfddasfsebd072ea8a7" )) {
			logaccessiyes($nome);
		} else if (($nome=="Ciccio9222" OR $nome=="ciccio9222") AND ($psw == "7aec162bddadfaadsf98960e54ba50730fcf5e9772")) {
			logaccessiyes($nome);
		} else if (($nome=="Adam91" OR $nome=="adam91") AND ($psw == "a84b39ccfed0e49afgaer3d95d33ba02fe1a00")) {
			logaccessiyes($nome);
		} else {
			logaccessinot($nome, $paslog);
			header("Location: index.php?alert=true");
		}

e qui le due funzioni
PHP:
	function logAccessinot($userins, $passins) {
		$userins=htmlspecialchars($userins);
		$passins=htmlspecialchars($passins);
		
		$ip=$_SERVER['REMOTE_ADDR'];
		$data = date("F j, Y, g:i a");
		
		$testolog ="<p class=\"paginaNormale\"><font color=\"red\"> Login effettuato con nome " . strtoupper($userins) . 
" e con password $passins <br>Data e ora: $data <br>IP: $ip </font>";
		
		$documento=fopen("log.html", "a");
		fwrite($documento, $testolog);
	}
	
	function logAccessiyes($userins) {
		$userins=htmlspecialchars($userins);
		
		$ip=$_SERVER['REMOTE_ADDR'];
		$data = date("F j, Y, g:i a");
		
		$testolog ="<p class=\"paginaNormale\"><font color=\"green\"> Login effettuato con nome " . strtoupper($userins) . "<br>Data e ora: $data <br>IP: $ip </font>";
		
		$documento=fopen("log.html", "a");
		fwrite($documento, $testolog);
		header("Location: amministrazione.php");
	}

grazie in anticipo a tutti quelli che mi risponderanno...
 
Mmm.... scusami un attimo... ma questa pagina di autenticazione è senza l'utilizzo di un db?

Probabilmente su netsons prevede l'utilizzo di un db... spiegherebbe come mai il codice ti funzioni in locale....

Prova con questo codice (editalo a seconda di come vuoi tu)

index.php:

PHP:
<?php require_once('connessione_db.php');?>
<?php require_once('verifica.php');?>


<?php
//Controllo che l' utente sia loggato
if(IsSet($_SESSION['logged']))
{
	//L' utente e' loggato
	echo "Sei loggato";
	echo "<br><a href='index.php?logout=1'>Logout</a>";
	
	
}else{
	//L' utente non e' loggato
	echo "Non sei loggato";
}
?>

verifica.php:

PHP:
<?php
//Avvio o continuo la sessione
session_start();

//Controllo che la sessione sia attiva
if(!IsSet($_SESSION['logged']))
{
	//Controllo se l' utente vuole loggarsi
	//Recupero i valori da una Form
	$username = @$_POST['txt_username'];
	$password = @$_POST['txt_password'];
	
	//Controllo se l' username e la password non sono vuoti
	if((!strlen($username) == 0) and (!strlen($password) == 0))
	{
		//Effettuo il controllo dei dati
		$strSQL = "SELECT campo_1, campo_2, ... ,campo_n FROM Tabella WHERE campo_user = '".$username."' AND campo_pass = MD5('".$password."')";
		$result = mysql_query($strSQL);
		$row = mysql_fetch_row($result);
		//Controllo se l' utente e' stato trovato
		if(!strlen($row[0]) == 0)
		{
			//Effettuo il login
			$_SESSION['logged'] = $row[0];
		}
		//Libero la memoria
		mysql_free_result($result);
	}
}

if(@$_GET['logout'] == 1) //Effettuo il Logout
{
	$_SESSION = array(); //Desetto tutte le variabili di sessione
	session_destroy(); //Distruggo le sessioni
}
?>

Vedi. pure l'hash md5 :p
 
sisi l'hash md5 l'ho incasinato adesso (ci ho solo messo delle lettere a caso in più...) xkè un qualche genio non volesse decriptarlo, ahahha...

Comunque no non è possibile che netsons non accetti questo tipo di "login", a parte che è un server normale, cioè non può fare quello che vuole, accetare una cosa e non accettarne un'altra... e cmq ho un altro sito su netsons che usa un login simile e funziona perfettamente... quindi deduco che il problema sia da trovare altrove... Per il DB non lo uso x questioni secondarie anche se so che farei meglio a usarlo... tuttavia se qualcuno capisce perchè così non va mi date un grande aiuto ;)
 
Ahah tranquillo per l'md5!
Cmq il problema è questo... in locale ti funziona (immagino tu abbia testato con un server apposito installato in localhost) mentre su netsons non funziona...
Per capire meglio il problema dovresti isolarne le ipotesi...
Innanzitutto prova con un altro host.. magari altervista... giusto per vedere se li funziona...
Poi prova a confrontare il codice simile che mi hai citato che funziona e questo che hai postato...
Cmq nell'index php cm mai tutti quei tag tabella? Per garantire la corretta visualizzazione del form?
 
non credo proprio che netsons ti obblighi all'utilizzo del db...provato a vedere la console degli errori del browser?
 
Il problema può essere nell' action del controllo.php ma nn penso...
Controlla meglio la pagina controllo.php...
Cmq scusami un secondo.. forse potrei sbagliarmi io.. ma i tag di apertura e di chiusura nella pagina controllo.php dove sono?

Prova <?php include_once("../function.php");?>
e a mettere <? prima delle variabili nome ecc ecc
e l'opportuno tag di chiusura ovviamente
 
beh quindi? ahahha non ho ancora avuto una risposta concreta...
Si a parte il fatto che come dice malex non è che controllano se uso if $pass = ... ecc ecc...

Ho anche provato a confrontare con l'altro "sito" che ho ma è la stessa cosa... boh... non saprei...

PS. quanto tempo eh malex :D
 
Controlla i permessi del file log.
Codice:
  if (($nome == "Torre92" OR $nome=="torre92") AND ($psw == "3700fb87bceafc68ccdefadfddasfsebd072ea8a7" )) {
            logaccessiyes($nome);
        } else if (($nome=="Ciccio9222" OR $nome=="ciccio9222") AND ($psw == "7aec162bddadfaadsf98960e54ba50730fcf5e9772")) {
            logaccessiyes($nome);
        } else if (($nome=="Adam91" OR $nome=="adam91") AND ($psw == "a84b39ccfed0e49afgaer3d95d33ba02fe1a00")) {
            logaccessiyes($nome);
        } else {
            logaccessinot($nome, $paslog);
            header("Location: index.php?alert=true");
        }
Inutile tutte sta roba.. basta che fai, per renderlo case insensitive:
PHP:
<?php
if (strtolower ($nome) == "culo" && $pwd == "abcdefhijfkajdjskajgjdjajdjfjs83") {
    echo "Okay, sei loggato";
}
?>
Comunque, hai dimenticato i tag di apertura.
Quando ti da la pagina bianca, fai tasto destro -> visualizza codice sorgente. Se ti visualizza il sorgente del codice PHP, allora ecco che tutto e' spiegato, altrimenti mi pare strnao che in locale funzioni mentre invece in remoto no.

Prova a lanciare su Netsons questo script:
Codice:
echo ini_get ("display_errors");
Se ti dice che ini_get e' disabilitato amen.
DOpo il tag ti apertura (<?php) di controlla.php o come si chiama quella pagina, aggiungi:
Codice:
error_reporting (E_ALL);
E controlla se ti da qualche errore.
 
crystall86 ha detto:
Malex ha detto:
crystall86 ha detto:
non credo proprio che netsons ti obblighi all'utilizzo del db...

WHAT?

è uno script php, viene eseguito, mica ti controllano se hai un if(password=="miao")

appunto

scusa, volevo quotare l'altro

@Torre: infatti ho letto la discussione perché ho rivisto il tuo nick asd

cmq, fa come ti dice robertof e dicci
 
a parte i tag di apertura e chiusura php che mancano...hai posizionato nella giusta directory il file contenente le funzioni? comunque come detto sopra probabile sia un problema di permessi in scrittura su file perchè in locale anche a me funziona.
 
Stato
Discussione chiusa ad ulteriori risposte.