Ti sei perso il VI Convegno gt? Forse puoi rimediare... www.convegnogt.it X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Php - Mysql > Scripting e Risorse utili
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 10-08-08, 20:16   #16 (permalink)
Moderatore
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,205
Invia un messaggio tramite Skype a Thedarkita
Cosa vedi invece di essere reindirizzato?

dopo la funzione header() hai messo exit; perchè con internet explorer senza quello da qualche problemino...
Thedarkita non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 07-10-08, 11:44   #17 (permalink)
 
Data di registrazione: Mar 2007
Ubicazione: Catania
Messaggi: 723
ma dopo questa istruzione
Codice PHP:
    if(mysql_num_rows($query) == 1){ 
non ci va un
Codice PHP:
session_start() 
?
a me senza quello non funzionava....
__________________
talkoman non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 07-10-08, 20:46   #18 (permalink)
Moderatore
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,205
Invia un messaggio tramite Skype a Thedarkita
è nel config session_start... se lo rimetti genera errore...
Thedarkita non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 07-10-08, 21:34   #19 (permalink)
 
Data di registrazione: Mar 2007
Ubicazione: Catania
Messaggi: 723
ok però ho un altro problema.
se accedo all'area privata da un server win 2003, salta la pagina di login ed entra direttamente.
come si può risolvere questo preblema??
__________________
talkoman non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 07-10-08, 21:45   #20 (permalink)
Moderatore
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,205
Invia un messaggio tramite Skype a Thedarkita
Cioè?
Thedarkita non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 07-10-08, 21:57   #21 (permalink)
 
Data di registrazione: Mar 2007
Ubicazione: Catania
Messaggi: 723
allora i miei siti hanno una pagina admin/index.php che, se non si è loggati, reindirizza su admin/login.php
Invio il form a admin/verifica.php che decide se autenticarmi o meno...come nel tutorial
ma se sto usando una macchina con Win2003 e vado per esempio su admin/index.php, ci accede tranquillamente senza reindirizzarmi su login.php
come mai?
__________________
talkoman non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 08-10-08, 00:05   #22 (permalink)
Moderatore
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,205
Invia un messaggio tramite Skype a Thedarkita
Allora se hai fatto precedentemente il login è normale fin quando non elimini i cookie o la sessione.
Se invece lo fa anche non facendo il login precedentemente, manca il controllo sulla pagina di amministrazione che ti reindirizzi al login
Thedarkita non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 08-10-08, 00:22   #23 (permalink)
 
Data di registrazione: Mar 2007
Ubicazione: Catania
Messaggi: 723
ripeto....sugli altri computer funziona alla perfezione. Solo da server Win2003

se hai la possibilità prova tu stesso....
è un grosso bug!
__________________
talkoman non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 08-10-08, 21:17   #24 (permalink)
Moderatore
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,205
Invia un messaggio tramite Skype a Thedarkita
Non ho la possibilità di provare, comunque il codice per me è scritto in modo corretto, forse hai sbagliato tu a implementare il codice nelle tue pagine...
Thedarkita non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 09-10-08, 18:33   #25 (permalink)
 
Data di registrazione: Mar 2007
Ubicazione: Catania
Messaggi: 723
l'ho provato anche creando nuove pagine interamente con i costri codici......
la cosa mi spaventa molto....
__________________
talkoman non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 18-12-08, 17:29   #26 (permalink)
User
 
Data di registrazione: Dec 2008
Ubicazione: Milano
Messaggi: 66
Attivazione tramite mail

Salve!
Sto impazzendo per riuscire ad aggiungere allo script un attivazione tramite link inviata per email dopo la registrazione.
Sono partito aggiungendo alla tabella utenti un campo "attivazione" con VARCHAR(1), con questo appena si invia il modulo di registrazione il valore rimane 0, e nella email segnalata nell'iscrizionein automatico dovrebbe arrivare un messaggio con un lnk per l'attivazione, e magari anche un riepilogo dei dati inviati..

Nel file registrati.php ho aggunto questo pezzo (quelli in neretto):

$strSQL = "INSERT INTO utenti (user,pass,mail,attivazione)";
$strSQL .= "VALUES('$user', '$pass', '$mail', '0')";

Non riesco a trovare i modo per creare la mail che crea un link di attivazione che cambia il valore su attivazione da 0 ad 1.
Gigi991 non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 18-12-08, 17:53   #27 (permalink)
Moderatore
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,205
Invia un messaggio tramite Skype a Thedarkita
Ciao Gigi991,

Benvenuto nel forum GT
Allora per far invaire un link di attivazione agiremo nel seguente modo: Creiamo un campo attivazione di tipo varchar come hai fatto tu, ma di lunghezza imposteremo 32 caratteri, in modo da generare un codice casuale che impsoteremo come valore del campo.
Nella pagina che avrà il compito di attivazione imposteremo il campo con valore "", quindi al login ci basterà controllare che il valore del campo sia uguale a "" se l'utente è stato attivato oppure no.


Registrati.php
Codice PHP:
<?php
// Includo la connessione al database
require('config.php');


// Se il modulo viene inviato...
if(isset($_POST['registra']))
{
    
    
// Dati Inviati dal modulo
    
$user = (isset($_POST['user'])) ? trim($_POST['user']) : '';    // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    
$pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : '';    // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    
$mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : '';    // Metto nella variabile 'mail' 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);
        
$mail addslashes($mail);
    }
    
    
    
// Controllo il Nome Utente
    
if(strlen($user) < || strlen($user) > 12)
        die(
'Nome Utente troppo corto, o troppo lungo');
    
// Controllo la Password
    
elseif(strlen($pass) < || strlen($pass) > 12)
        die(
'Password troppo corta, o troppo lunga');
    
// Controllo l'email
    
elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})"$mail))
        die(
'Email non valida');
    
// Controllo il nome utente non sia già occupato
    
elseif(mysql_num_rows(mysql_query("SELECT user FROM utenti WHERE user = '$user' LIMIT 1")) == 1)
        die(
'Nome Utente non disponibile');
    
// Controllo l'indirizzo email non sia già registrato
    
elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1)
        die(
'Questo indirizzo email risulta gi&agrave; registrato ad un altro utente');
    
// Registrazione dell'utente nel database
    
else
    {
        
        
// Crypt della password per garantire una miglior sicurezza
        
$pass md5($pass);
        
        
        
// Genero una stringa casuale di Attivazione
        
$attivazione '';
        for(
$x=1$x<=32$x++)
        
$attivazione.=rand(0,9);
        
$attivazione md5($attivazione);
        
$message 'Per attivare il Suo account deve visitare il seguente link:<br><a href="http://www.sito.ext/attivazione.php?code='.$attivazione.'">Attiva account</a>';
        
// Header dell'email, per madnarla in formato html
        
$headers "From: NomeSito <sito@sito.ext>\r\n";
        
$headers .= "Reply-To: sito@sito.ext\r\n";
        
$headers .= "Return-Path: sito@sito.ext\r\n";
        
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

        
// Invio L'email
        
mail($mail'Registrazione Tutorial TheDarkITA'$message$headers);
        
        
// Query per l'inserimento dell'utente nel database
        
$strSQL "INSERT INTO utenti (user,pass,mail,attivazione)";
        
$strSQL .= "VALUES('$user', '$pass', '$mail', '$attivazione')";
        
mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());
        

        
// Reindirizzo l'utente ad una pagina di conferma della registrazione
        
header('Location: registrato.php');
        exit;
    }
}
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registrazione</title>
</head>

<body>
<form action="" method="post">
 <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
 <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
 <input name="mail" type="text" id="mail" value="Em@il" onfocus="if(this.value=='Em@il') this.value='';" /><br />
 <input name="registra" type="submit" value="Registrati" /><br />
</form>
</body>
</html>
Attivazione.php
Codice PHP:
<?php
// Includo la connessione al database
require('config.php');

    
// Dati Inviati dal modulo
    
$code = (isset($_GET['code'])) ? trim($_GET['code']) : '';    // Metto nella variabile 'user' 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()) {
        
$code addslashes($code);
    }
   
// Controllo la validità del link  
   
if(strlen($code) != 32)
   die(
'Codice non valido');
   
// Aggiorno il record
   
$update mysql_query("UPDATE utenti SET attivazione = '' WHERE attivazione = '$code' LIMIT 1"); 
   
// Quanti record ha aggiornato la query
   
$attivato mysql_affected_rows($update);
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Area privata</title>
</head>

<body>
<?=($attivato == 1) ? 'Account Attivato' 'Errore, link non valido' ?><br />
<br />
<br />
<a href="index.php">Homepage</a><br />
</body>
</html>
Login.php
Codice PHP:
<?php
// Includo la connessione al database
require('config.php');


// Se il modulo viene inviato...
if(isset($_POST['login']))
{
    
    
// Dati Inviati dal modulo
    
$user = (isset($_POST['user'])) ? trim($_POST['user']) : '';    // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    
$pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : '';    // 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 id,attivazione FROM utenti WHERE user = '$user' AND pass = '$pass' LIMIT 1");
    
    
// Se ha trovato un record
    
if(mysql_num_rows($query) == 1)
    {
        
// prelevo l'id dal database
        
$login mysql_fetch_array($query);
        
// L'account è attivo?
        
if($login['attivazione'] == '')
        {
        
// Creo una variabile di sessione
        
$_SESSION['login'] = $login['id'];
        
        
// reindirizzo l'utente
        
header('Location: privata.php');
        exit;
        }
        else
        {
        die(
'Attiva il tuo account!!!');
        }
    }
    
// se non esiste da l'errore
    
else
        die(
'Nome Utente o Password errati');
}
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>

<body>
<form action="" method="post">
 <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
 <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
 <input name="login" type="submit" value="Login" /><br />
</form>
</body>
</html>

Non ho testato, facci sapere se funziona correttamente
Thedarkita non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 18-12-08, 19:30   #28 (permalink)
User
 
Data di registrazione: Dec 2008
Ubicazione: Milano
Messaggi: 66
Ho provato ora, mi inserisce l'utente nel database, blocca l'accesso alla pagina privata se l'account non è attivato però non invia la mail e quindi è impossibile attivarsi..
Ci sarà un prolema nel codice di invio mail..
Gigi991 non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 18-12-08, 23:47   #29 (permalink)
Moderatore
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,205
Invia un messaggio tramite Skype a Thedarkita
Il codice di invio mi sembra corretto, non stampa alcun errore?
Hai controllato la posta indesiderata?
Thedarkita non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 19-12-08, 01:02   #30 (permalink)
User
 
Data di registrazione: Dec 2008
Ubicazione: Milano
Messaggi: 66
Ho ricontrolato ora in posta, non c'è manco tra le indesiderate..
Non da errori, finita la registrazione reindirizza in registrato.php, ma la mail non arriva, mentre al login funziona perchè mi dice che l'account non è stato ancora attivato..
Gigi991 non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Rispondi
Tags: , , ,



Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 05:51.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.