Problema di login

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

sto cercando di fare un sito dinamico con l'aiuto di jquery e ajax. Vengo subito al punto. Ho sviluppato la parte riguardante all'iscrizione e alla verifica immediata dei dati presenti nel db. Ad esempio, username, email, password, vengono verificati immediatamente se sono presenti nel db e se sono scritti correttamente (mi hanno aiutato). Però, ora non riesco a far partire il login. ossia la parte di login è già fatta, vado ad inserire i dati username e password e mi dice login errato. Nel db sono sicuro che i dati sono presenti ed esistenti. La tabella è sviluppata in questo modo 0 = account disattivato ed 1 = account attivato. Questo si attiva tramite un'invio dell'email e cliccando su un link. Il tutto funziona la parte riguardante la registrazione. Ora posta sia la tabella utenti e sia la parte riguardante il login. Ah una cosa essenziale, la funzione my_num, al mio editor o al browser non so chi lo gestisce, non gli piace e mi da il seguente eerrore:

Fatal error: Call to undefined function mysql_num() in /volume1/web/utenti/testjquery/login.php on line 13

Tabella utenti:

PHP:
create table utenti (

id		INT UNSIGNED NOT NULL AUTO_INCREMENT,
nome		VARCHAR(30) NOT NULL,
cognome 		VARCHAR(30) NOT NULL,
username 		VARCHAR(30) NOT NULL,
email                          VARCHAR(40) NOT NULL,
password    	VARCHAR(255) NOT NULL,
id_immagine	INT(255) NOT NULL,
attivo          	ENUM('1', '0') DEFAULT '0',
PRIMARY KEY (id)
);

login.php

PHP:
<?php
ob_start();//visto che usi header popo l'l'uotput html
session_start();//aggiungi questa e
require_once("connetti.php");

//una volta connesso al server  prelevo le variabili
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string(md5($_POST['password']));

//faccio i controlli LOOL
$query = "SELECT * FROM utenti WHERE username='$username' AND password='$password' AND attivo = 1";
$result = mysql_query($query);
$num = mysql_num_rows($result);
//if($num > 0) {

if(mysql_num_rows($num) > 0){
    
    $riga=mysql_fetch_array($num);//aggiungi questa e

        $_SESSION['id'] = $riga['id'];
        
        $_SESSION['nome'] = $riga['nome'];

        echo "Ti sei loggato!";
}
else
{
	//se non ti sei loggato dar� errore
	echo "Login errato."; 
}
//proviamo

ob_end_flush();
?>

index.php

PHP:
<?php
session_start();
        require_once("connetti.php");

if(isset($_SESSION['log']))//nel caso fosse presente già una sessione log mostrerà un messaggio e poi chiuderà la lettura dei codici, proviamo se va
{
	echo "Sei già loggato!";
	session_destroy();
	exit();
}
?>
<script src='jquery-1.8.3.min.js'></script>
<script>
$(document).ready(function(){
	//mi dava fastidio il colore
	$('#login').click(function(){
		//prelevo le variabili
		var username = document.getElementById('username').value;
		var password = document.getElementById('password').value;
		
		//invio le variabili
		$.ajax({
			type: 'POST',
			url: 'login.php',
			data: 'username='+username+'&password='+password,
			success: function(done){
				$('#r').html(done);
			}
		});
	});
});
</script>
<input type='text' id='username' placeholder='Username'/>
<input type='password' id='password' placeholder='password'/>
<button id='login'>Loggati</button>
<div id='r'></div>

Questo è il file ch emi sono scaricato direttamente: jquery-1.8.3.min.js

Qualcuno mi può aiutare a risolvere il problema ????? Spero di ricevere consigli e sopratutto soluzioni. Grazie.
 
L'md5 è un algoritmo alfanumerico quindi non hai bisogno di fare l'escape dopo
PHP:
$password = md5($_POST['password']);

Inoltre sistema qui
PHP:
if(mysql_num_rows($result) > 0){ 
     
    $riga=mysql_fetch_array($result);//aggiungi questa e 

        $_SESSION['id'] = $riga['id']; 
         
        $_SESSION['nome'] = $riga['nome']; 

        echo "Ti sei loggato!"; 
}
 
ciao

Ragazzi,

Ho fatto la sostituzione da voi suggerita, ma mi da sempre lo stesso risultato. "Login errato." Posto le modifiche fatte:

index.php

PHP:
<?php
ob_start();//visto che usi header popo l'l'uotput html
session_start();//aggiungi questa e
require_once("connetti.php");

//una volta connesso al server  prelevo le variabili
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string(md5($_POST['password']));

//faccio i controlli LOOL
$query = "SELECT * FROM utenti WHERE username='$username' AND password='$password' AND attivo = 1";
$result = mysql_query($query);
$num = mysql_num_rows($result);
if ($num > 0) {  

    if(mysql_num_rows($result) > 0){ 
     
    $riga=mysql_fetch_array($result);//aggiungi questa e 

        $_SESSION['id'] = $riga['id']; 
         
        $_SESSION['nome'] = $riga['nome']; 

        echo "Ti sei loggato!"; 
}  
	//se ha trovato qualcosa si registra, mettiamo per caso con i cookie no facciamo le sessioni
	echo "Ti sei loggato!";
	$_SESSION['log'] = true; 
}
else
{
	//se non ti sei loggato darà errore
	echo "Login errato."; 
}
//proviamo

ob_end_flush();
?>


Questa va tenuta o tolta ????:

PHP:
$_SESSION['log'] = true;
 
Non so cosa vuoi fare cmq se hai un area di login, chi è già loggato non vi può accedere invece chi si deve loggare compila il form ed invia i dati.
PHP:
ob_start();
session_start();
require_once("connetti.php"); 

if( ! isset( $_SESSION['online'] ) ):

	$username = mysql_real_escape_string($_POST['username']); 
	$password = mysql_real_escape_string(md5($_POST['password'])); 
	
	$query = 'SELECT * FROM utenti WHERE username="'.$username.'" AND password="'.$password.'"';
	
	$result = mysql_query($query); 
	
	if( $result && mysql_num_rows($result) == 1 ):
		
		$obj = mysql_fetch_object( $result );
		
	    $_SESSION['id'] = $obj -> id;  
	      
	    $_SESSION['nome'] = $obj -> nome;  
		
		$_SESSION['online'] = 1; 
		
	    echo "Login avvenuto con successo !"; 
			
	else:
		
		echo "Login errato."; 
		
	endif;

else:
	
	echo "Impossibile visualizzare per utenti già attivi";
	
endif;

ob_end_flush();
 
Ciao

Ciao Mr. PHP,

Il concetto è esattamente il contrario di quello che hai postyato tu. ossia una volta registrati al sito e ottenuto l'account attivato, l'utente devo continuare ad aggiornare il suo profilo. E' questo che non riesco a fare. ossia ad aggiornare il profilo.
 
Ciao Mr. PHP,

Il concetto è esattamente il contrario di quello che hai postyato tu. ossia una volta registrati al sito e ottenuto l'account attivato, l'utente devo continuare ad aggiornare il suo profilo. E' questo che non riesco a fare. ossia ad aggiornare il profilo.
Che dati devi aggiornare ???
 
Ciao

I da ti da aggiornare sono parecchi, te li elenco in una botta e via:

PHP:
create table utenti (

id		INT UNSIGNED NOT NULL AUTO_INCREMENT,
nome		VARCHAR(30) NOT NULL,
cognome 		VARCHAR(30) NOT NULL,
username 		VARCHAR(30) NOT NULL,
email           	VARCHAR(40) NOT NULL,
password    	VARCHAR(255) NOT NULL,
id_immagine	INT(255) NOT NULL,
attivo        	 ENUM('1', '0') DEFAULT '0',	
accettatermini	 ENUM('1', '0') DEFAULT '0',	
datadinascita 	date  NOT NULL,
sesso 		varchar(8) NOT NULL,	
Occupazione 	varchar(50)NOT NULL,
statocivile		varchar(12) NOT NULL,
citta 		varchar(30) NOT NULL,
provincia 		varchar(3) NOT NULL,
titolo_studio 	varchar(30) NOT NULL,
anno_diploma 	year  NOT NULL,
titolo_laurea 	varchar(30) NOT NULL,
anno_laurea 	year  NOT NULL,
PRIMARY KEY (id)
);

Questi quelli ch emi sono venuti in mente. + l'avatar da aggiunre ma quello è un altro discorso.
 
Allora per effettuare l aggiornamento di una tabella ci vuole la query UPDATE.
PHP:
$query = 'UPDATE utenti SET id="value", nome="value", ecc...';
 
Ciao

Ciao ho fatto come dici te, ma non mi si aggiorna un piffero, ti posto la query magario non è corretta:

PHP:
$qry = "UPDATE utenti SET datadinascita='$datadinascita', citta='$citta', provincia='$provincia' WHERE email='$email'";
 
Ciao ho fatto come dici te, ma non mi si aggiorna un piffero, ti posto la query magario non è corretta:

PHP:
$qry = "UPDATE utenti SET datadinascita='$datadinascita', citta='$citta', provincia='$provincia' WHERE email='$email'";
La sintassi che usi puo dare problemi poi se non va cosi vul dire ch è altro il problema.
PHP:
$qry= 'UPDATE utenti SET datadinascita="'.$datadinascita.'", citta="'.$citta.'", provincia="'.$provincia.'" WHERE email="'.$email.'"';
 
Ciao

Ciao PhP,

Ho eseguto il tuo consiglio della query, eccola qua:

PHP:
     $query = 'UPDATE utenti SET id="id", datadinascita= "datadinascita, citta="citta",  provincia="provincia"';

Ma non mi aggiorna un bel piffero di nuovo. Un dubbio, ma ci vuole il simbolo del $ ????
 
Ciao PhP,

Ho eseguto il tuo consiglio della query, eccola qua:

PHP:
     $query = 'UPDATE utenti SET id="id", datadinascita= "datadinascita, citta="citta",  provincia="provincia"';

Ma non mi aggiorna un bel piffero di nuovo. Un dubbio, ma ci vuole il simbolo del $ ????

Scusa ma non è che devi inserire i campi e non aggiornare ???
PHP:
$query = 'INSERT INTO utenti (id,nome,ecc..) VALUES ( "'.$id.'", "'.$nome.'", ecc..)';
perche la query che ti ho scritto di aggiornamento e funzionante !
 
Ciao

Scusa ma non è che devi inserire i campi e non aggiornare ???
PHP:
$query = 'INSERT INTO utenti (id,nome,ecc..) VALUES ( "'.$id.'", "'.$nome.'", ecc..)';
perche la query che ti ho scritto di aggiornamento e funzionante !


I dati già ci sono nella tabellaasp, forze hai ragione. Ma se io inserisco conj insert citta, provincia ecc nella stessa tabella dove già ci sono i dati non è più un aggiornamento così o sbaglio ???? I dati principale per la registrazione sono i seguenti:

Nome
Cognme
Username
Password
Email
Dopo di che, ti arriva un'email di conferma per attivare l'account. Una volta attivato l'account, c'è il riepilogo dei dati inseriti (tranne l apassword) perchè è criptata con il metodo md5, e sotto successivamente, c'è il profilo da compilare. Ti mostro un screen così capisci meglio quello che voglio dire.
 
Inserisci lo script completo dell aggiornamento dei dati compreso il linguaggio HTML ecc.. e probalile che l errore stia li da qualche parte nel form.
 
Ciao

Questa è l'area riservata (chiamata paginaris.php):

PHP:
<link rel="stylesheet" type="text/css" href="coloredisfondo.css">
 <link rel="stylesheet" type="text/css" href="thumb.css">
    <?php
require_once("connetti.php");
    session_start();
if(isset($_COOKIE["ultimoaccesso"])) {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $ultimo_cookie = $_COOKIE["ultimoaccesso"];
    $me= "Il tuo ultimo accesso è stato il:  $ultimo_cookie";
} else {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $me= "Non ti sei mai collegato a questa pagina";
}

session_start();

if(isset($_SESSION['nome'])) {

$array = mysql_query("SELECT * FROM utenti WHERE id=".$_SESSION['id']." '");

 
 //  $array=mysql_fetch_array($array);  
    
}


  ?>
<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>benvenuto</title>

<body>
    
<?php



$array =  strtoupper($_SESSION['nome'] );     
 if(isset($_SESSION['nome']))  {   

    echo "<div class=\"messaggio\"><h1>";

    
echo "BENVENUTO ".$array."<br />";
    
    echo $me;
    echo "</h1></div>";
    echo "</body></html>";

}else{
    header("Location:failed.php");      
    exit();   
 
//}

}

//Visualizza l'avatar contenuto nel db

//$query =mysql_query("SELECT immagine FROM immagine WHERE id = $id");
 
// Codice che unisce due o più tabelle

$query =mysql_query("SELECT utenti.id, utenti.nome, immagine.immagine FROM utenti INNER JOIN 
 immagine ON utenti.id =  immagine.id_nome WHERE id_nome = ".$_SESSION['id']);


while($foto=mysql_fetch_array($query))
    
{

 ?>
    <br> <br>        
    <img src="immages/<?php echo$foto["immagine"]?>" class="immages">
    
    <?php
}
?>

<!--Inizio procedura per accettazione dei termini e visualizzazione della seconda e terza pagina -->
  
<html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <title></title> 
    </head> 
    <body> 
 <center> <br> <br> 
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js'></script>
<!--  <body style='background:#000'> -->

<link rel="stylesheet" type="text/css" href="coloredisfondo.css">



    <style>
        
        input[type='button']{padding:10px;}
    </style>
 <?php 
require_once("connetti.php"); 
$id_user = $_GET['id']; # o $_GET['username']; 
$page = (int)$_GET['page']; 
if(EMPTY($page)) $page = 1; 
$query_user = "SELECT * FROM utenti WHERE id='$id_user'"; 
$result_query = mysql_query($query_user);
$assoc_rows = mysql_fetch_assoc($result_query);
switch($page)
{
    case 1:
?>
     <div style='width:600px;  font-family:Comic Sans MS'> 

    <!--Inizio bordatura testo arrotondato-->
    
  <style type="text/css">
.bordato{
	border:2px solid #000000;
	border-radius: 80px 80px 80px 80px;
	-moz-border-radius: 80px 80px 80px 80px;
	-webkit-border-radius: 80px 80px 80px 80px;
}
</style>
<body>
<div class="bordato">
<center>BENVENUTI NEL SOCIAL NETWORK PIU' LIBERO DEL MONDO 
================================================================= 
</center>  

<p align="left">  

Se stai leggendo questo regolamento è perchè ti sei iscritto a tale sito e di conseguenza, prima di andare avanti, devi accettare tre regole fondamentali. <br/> 

Tali regole, servono per non creare dispute e conversazioni spiacevoli sia con gli utenti, sia con gli amministratori.  

Non bisogna essere maggiorenni per iscriversi. Basta avere un'età dai 12 anni in su. Le tre regole fondamentali sono le seguenti:  <br></p> 
<p align="left"> 
1) Vietato bestemmiare pena si viene automaticamente cancellati dal sito senza possibilità di registrarsi con un ulteriore username; <br/></p> 
<p align="left">  

2) Vietato parlare di politica. La politica è causa di discussioni e punti di vista differenti l'uno dall'altro. Ci saranno tre avvisi,  
dopo di che pena esclusione dal sito e cancellazione perenne dal database;<br/> </p> 

<p align="left">  
3) Rispettare gli utenti iscritti. <br/> </p> 

<p align="left">          

Se accetti le seguenti regole, clicca su "avanti" altrimenti su "cancella", e sarai automaticamente cancellato dal database.  

Grazie di aver letto il regolamento e buon divertimento. 
</p>    
<input id='regolamento' type='checkbox' value='Accetta il regolamento'>Accetta il regolamento 

<br><br>
<input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />
<input type="button" onClick="window.location.href='cancellazione.php';" style='padding:10px' value="Cancellati" />

<input type='button' onclick='getpage("<?=$page+1?>")' value='Avanti' disabled='disabled'/>  



</div>
 
    

<?php
    case 2:
        
        //break;
    ?>
<link rel="stylesheet" type="text/css" href="coloredisfondo.css">


    <?php

// Ricerca e visualizza l'utente che si è connesso con le info

$query = mysql_fetch_array(mysql_query("SELECT * FROM utenti WHERE id='".$_SESSION['id']."'"));


echo "<br> <br>";
        echo '<p align="left">';
        echo " Cognome: ". $query['cognome']; 
        echo '<p align="left">';
        echo '<p align="left">';
        echo "Nome: ". $query['nome']; 
        echo "<br> ";
        echo '<p align="left">';
        echo "Username: ". $query['username']; 
        echo "<br>";
        echo '<p align="left">';
        echo "EMail: ".$query['email'];

?>
    
<p align="left">          

Data di Nascita Giorno: 

<?php 

//giorno

echo "<select name=\"giorno\">";
echo "<option value=\"\"> seleziona </option>";
for($gg=1; $gg<=31; $gg++){
 if(strlen($gg)< 2){$gg = "0".$gg;}  
 echo "<option value=\"$gg\"> $gg </option>";
}
echo "</select>";
?>

<align="left">

<?php
require_once("arraylistecitta.php");
?>

Mese:

<?php

echo "<select name=\"mese\">";
foreach($mese as $chiave => $valore){
    echo "<option value=\"$chiave\">$valore";
echo "</option> ";
}
 echo "</select>";

 echo " Anno: ";
 
//anno
$da=1960;
$al=2014;
echo "<select name=\"anno\">";
echo "<option value=\"\"> seleziona </option>";
for($aa=$da; $aa<=$al; $aa++){
    echo "<option value=\"$aa\"> $aa </option>";
}
echo "</select>" 
 ?>
<align="left">          

<br>
<p align="left">          

Città:

<?php

echo "<select name=\"citta\">";
foreach($citta as $chiave => $valore){
    echo "<option value=\"$chiave\">$valore";
echo "</option> ";
}
 echo "</select>";
 ?>
<align="left">          

Provincia:

<?php
echo "<select name=\"province\">";
foreach($province as $chiave => $valore){
    echo "<option value=\"$chiave\">$valore";
echo "</option> ";
}
 echo "</select>";
 
?>




<br><br> <center>
   <!--$mail->MsgHTML('Grazie di esserti iscritto.  <a href="http://utenti/iscrizionebymarco92jq/attivautente.php?email=' . $email-->
        <input type='button' onclick='getpage("<?=$page-1?>")' value='Indietro' ?> 
        <input type='button' onclick='getpage("<?=$page+1?>")' value='Avanti' ?>
<input type="button" onClick='getpage("<?=$page+1?>")' style='padding:10px' value="Aggiorna Profilo" />
    
       

<?php

case 2:
   
        
        <input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />

    
    </center>
    <?php
    break;
    case 3:
    ?>
        <input type='button' onclick='getpage("<?=$page-1?>")' value='Indietro' ?> 
    <?php
    break;
}
?>
<script> 
$('input[id=regolamento]').click(function(){
    var input = $('input[value="Avanti"]');
    if($(this).is(':checked')) input.removeAttr('disabled');
    else input.attr('disabled','disabled');
});
function getpage(page)
{
    location.href = '?page='+page;
}
</script>

aggiornamentoprofilo.php

PHP:
<?php
require_once("connetti.php"); 
//inizializzi le sessioni
session_start();
if(isset($_POST['citta']))
    $_SESSION['citta'] = $_POST['citta'];  
echo $_SESSION;


$datadinascita = mysql_real_escape_string(strtolower(trim ($_GET['datadinascita'])));   
$citta = mysql_real_escape_string(strtolower(trim ($_GET['citta']))); 
$provincia = mysql_real_escape_string(strtolower(trim ($_GET['provincia']))); 
$email = mysql_real_escape_string(strtolower(trim ($_GET['email']))); 
  
$qry = "UPDATE utenti SET datadinascita='$datadinascita', citta='$citta', provincia='$provincia' WHERE email='$email'"; 

//qry = "UPDATE utenti SET nome='" . $nome_m . "', cognome='" . $cognome_m . "', 
                               // indirizzo='" . $indirizzo_m . "', mail='" . $mail_m . "', pwd='" . $pwd_m . "' 
                           // WHERE user='" . $_SESSION['user'] . "'";  

if (mysql_query($qry)) { 
    echo "Aggiornamento effettuato"; 
     
} else { 
    echo "Errore: nell'aggiornamento ".mysql_error(); 
}  
?>
 
Ho letto il codice e mi sembra un po incasinato Cmq il tuo aggiornamento non avverrà mai:
1) Form non definito per il metodo Get
PHP:
echo '<form method="get" action="percorso/aggiornamentoprofilo.php">';
/* Tutti i dati che vuoi aggiornare Gli Input e i Select ecc..  */
echo '</form>';

2) Anche facendo cosi lo script ti reinderizza alla pagina aggiornamentoprofilo.php
3) Per fare cio che rimanga tutto in una pagina e buon utilizzo di Javascript o Jquery
Cliccando su aggiorna profilo non fai altro che caricare la 3 Pagina e niente più. Forse sbaglio ma per me e cosi.
 
Questo e un esempio del Form con Jquery. Effettuare i controlli nel file aggiornamentoprofilo.php per far si che se il profilo e aggiornato continui e vada alla pagina 3 altrimenti stampa l errore ! E consigliabile usare il metodo POST.
PHP:
<!-- Inserire nel case 2 -->
<script type="text/javascript">
$(document).ready(function(){
	
	$('#update form').submit(function(){
		
		
		$.post( 'percorso/aggiornamentoprofilo.php', $(this).serialize(), function(data){
			
                         if( data == 'update' )
                            return $(location).attr( 'href', 'pagina 3' );

			alert(data);
			
		});
		
		return false;
		
	});
	
});
</script>
<div id="update">
	<form>
		<label>Giorno</label>
		<select name="giorno">
			<option value="">** Selezionare **</option>
			<?php
			
				$day = 0;
				$days = 31;
				
				while ( $day < $days )
					echo '<option>'.++$day.'</option>';
			
			?>
		</select>
		<label>Mese</label>
		<select name="mese">
			<option value="">** Selezionare **</option>
			<?php
				
				$months = array( 'Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre' );
				
				foreach ( $months as $month )
					echo '<option>'.$month.'</option>';
				
			?>
		</select>
		<label>Giorno</label>
		<select name="giorno">
			<option value="">** Selezionare **</option>
			<?php
			
				$year = date('Y') - 17;
				$years = date('Y') - 90;
				
				while ( $years < $year )
					echo '<option>'.--$year.'</option>';
			
			?>
		</select>
		<input type="submit" value="Aggiorna Profilo" />
	</form>
</div>
 
Ultima modifica:

Discussioni simili