- Home
- Categorie
- Coding e Sistemistica
- Coding
- Modificare metodo di registrazione nel forum
-
Adesso impostiamo il controllo sulla variabile $codice / attivazione:
$q_l_entra=quera("SELECT id,nome,livello FROM ".$tblprefix."users WHERE nome='$username' AND psw='".md5($passw)."' LIMIT 1");
diventa
$q_l_entra=quera("SELECT id,nome,livello*,attivazione*
FROM ".$tblprefix."users WHERE nome='$username' AND psw='".md5($passw)."' LIMIT 1");In questo modo nell'array risultato della query abbiamo a disposizione anche il valore del campo attivazione
Ora dobbiamo vedere se attivazione è uguale a "1" che è il valore che imposteremo quando l'utente si è attivato (se non lo fa in quel campo ci sarà ancora il codice di attivazione che è di sicuro diverso da "1"
$arr_entrato=mysql_fetch_assoc($q_l_entra);
$l_id=$arr_entrato['id'];
$l_nome=$arr_entrato['nome'];
$l_livello=$arr_entrato['livello'];Sfruttiamo l'assoc che c'è già e ci garantisce anche che il controllo sul valore di attivazione lo faremo solo se l'utente esiste e ha messo la password giusta, e aggiungiamo:
$l_attivazione=$arr_entrato['attivazione'];A questo punto dobbiamo prevedere una casistica totalmente diversa da quelle che hai tu nel ciclo if else della pagina...
Infatti il tuo ciclo si basa sul fatto che la query di login abbia 1 risultato (e ti fa entrare).
Se la query non ha 1 risultato scatta un else if che chiede se è impostata per caso la variabile $act_logout e infine una terza opzione che indica che non c'è 1 risultato e nemmeno $act_logoutNoi dobbiamo metterci prima del riconoscimento iniziale, ma dopo il controllo del risultato positivo
if(mysql_num_rows($q_l_entra)==1){
$arr_entrato=mysql_fetch_assoc($q_l_entra);
$l_id=$arr_entrato['id'];
$l_nome=$arr_entrato['nome'];
$l_attivazione=$arr_entrato['attivazione'];
if($l_attivazione == '1') {
.
.
.
.
.
<table width="880" border="0" align="center" cellpadding="5" cellspacing="1" class="tabcat">
<td colspan="2" class="tabstat"><div align="center">
<p class="testo11"><a href="resetpsw.php">".psw_persa."</a></p>
</div></td>
</tr>
</table><br />";
}
} else {
header("Location: index.php");
}
}questa aggiunta controlla dopo il primo if e l'assegnazione a variabili dei valori estratti, se $l_attivazione == '1'.
Se lo è va avanti col login, tutto a posto. Se non lo è ricarica la index.php.Se riesci a far funzionare la cosa fin qui poi possiamo personalizzare il ritorno sulla index.php passando un messaggio che dica che l'account non è attivato e per questo non l'hai fatto entrare
ovviamente il tutto funziona se hai creato quel campo che ti ho detto nella tabella mysql, di tipo varchar con 200 caratteri di spazio assegnato
keiske
edit: adesso cava quel file txt subito, che è il miglior modo per sbandierare ai 4 venti come effettui le chiamate al db esponendoti a rischi
-
aiutoooo:o
non capisco più nulla, ma il messaggio di thedakita è giusto o non devo seguire quello che mi dice di fare?
-
Dovrebbe essere giusto, credo non abbia visto che ho postato prima di lui
-
Sono giusti tutti e due... nel suo caso ha aggiunto il campo alla query come me... poi gestisce la cosa con un controllo che porta a un die(), nel mio caso un controllo if che chiama un header().
Ma col die() poi come gestisci la cosa dark? Il tipo che non ha attivato deve ricaricare il sito manualmente, mentre col mio sistema lo rimandiamo alla index.php e poi imposteremo un messaggio che lo aiuti a risolvere il problema...
keiske
-
@Privacy-Impresa said:
Sono giusti tutti e due... nel suo caso ha aggiunto il campo alla query come me... poi gestisce la cosa con un controllo che porta a un die(), nel mio caso un controllo if che chiama un header().
Ma col die() poi come gestisci la cosa dark? Il tipo che non ha attivato deve ricaricare il sito manualmente, mentre col mio sistema lo rimandiamo alla index.php e poi imposteremo un messaggio che lo aiuti a risolvere il problema...
keiske
beh puoi fare in quel modo, io sono andato sul metodo più veloce
-
bene keiske il login funziona come dici e ho fatto tutte le modifiche che hai richiesto, ora come dici bisogna mettere a posto l'index cioè bloccare poichè non è attivata..;)
-
Adesso dobbiamo creare il codice da inserire al posto di "1111"
Una buona idea è quella che ha detto dark...
$codice = md5(microtime());
al posto di
$codice = '1111';
A questo punto torniamo all'header..
*} else {
header("Location: index.php");
}Qui aggiungiamo:} else {
header("Location: index.php?ko=1");
}*Detto questo dobbiamo andare in index.php e aggiungere qualcosa:
All'inizio aggiungiamo dentro un tag php:
*<?php
if(isset($_GET['ko'])
$ko = $_GET['ko'];
else
$ko = '';$messaggio = '';
if($ko == '1') {
$messaggio = 'Per accedere al forum devi confermare la tua iscrizione cliccando nel link che hai ricevuto via email';
}
?>*E così diciamo alla pagina che se stiamo tornando con ko=1 di assegnarlo alla variabile $ko e nel caso sia 1 diamo un valore a $messaggio (questo per evitare di passare al browser prima un messaggio lungo kilometri.
Adesso nel corpo della pagina da qualche parte, dove vuoi che appaia il messaggio devi mettere
*
<?=$messaggio?>*Se la variabile non è settata non appare nulla, altrimenti appare il messaggio
Hai trovato dove viene inviata la mail se viene inviata al momento dell'iscrizione?
keiske
-
@Privacy-Impresa said:
Detto questo dobbiamo andare in index.php e aggiungere qualcosa:
All'inizio aggiungiamo dentro un tag php:
<?php
if(isset($_GET['ko'])
$ko = $_GET['ko'];
else
$ko = '';$messaggio = '';
if($ko == '1') {
$messaggio = 'Per accedere al forum devi confermare la tua iscrizione cliccando nel link che hai ricevuto via email';
}
?>E così diciamo alla pagina che se stiamo tornando con ko=1 di assegnarlo alla variabile $ko e nel caso sia 1 diamo un valore a $messaggio (questo per evitare di passare al browser prima un messaggio lungo kilometri.
Adesso nel corpo della pagina da qualche parte, dove vuoi che appaia il messaggio devi mettere
<?=$messaggio?>
Se la variabile non è settata non appare nulla, altrimenti appare il messaggio
Hai trovato dove viene inviata la mail se viene inviata al momento dell'iscrizione?
keiske
la parte che ho quotato non mi risulta, nel senso che se inserisco le parti di codice mi da errore :
Parse error: syntax error, unexpected T_VARIABLE in /membri/globalmeteo/forum/index.php on line 3
ti posto la pagina index.php originnale e quella da me modificata:
[php]
<?php
if(!file_exists("install/install.lock")){
header("Location: ./install/index.php");
exit();
}
require_once "includes/config.php";
require_once "header.php";
require_once "cathome.php";
require_once "footer.php";
?>
[/PHP][php]<?php
if(isset($_GET['ko'])
$ko = $_GET['ko'];
else
$ko = '';
$messaggio = '';
if($ko == '1') {
$messaggio = 'Per accedere al forum devi confermare la tua iscrizione cliccando nel link che hai ricevuto via email';
}
?>
<?php
if(!file_exists("install/install.lock")){
header("Location: ./install/index.php");
exit();
}
require_once "includes/config.php";
require_once "header.php";
require_once "cathome.php";
require_once "footer.php";
?>
<?=$messaggio?>[/php]
-
[php]if(isset($_GET['ko'])[/php]
in
[php]if(isset($_GET['ko']))[/php]
-
Giusto... mancava una parentesi... ad ogni modo puoi mettere la prima parte senza <?php e ?>
<?php
if(isset($_GET['ko']))
$ko = $_GET['ko'];
else
$ko = '';
$messaggio = '';
if($ko == '1') {
$messaggio = 'Per accedere al forum devi confermare la tua iscrizione cliccando nel link che hai ricevuto via email';
}if(!file_exists("install/install.lock")){
header("Location: ./install/index.php");
exit();
}
require_once "includes/config.php";
require_once "header.php";
require_once "cathome.php";
require_once "footer.php";
?>
<?=$messaggio?>
-
ok adesso ho provato a fare una nuova registrazione ma me la completa sempre subito e mi torna poi all'index e già loggato anche...
se invece mi sloggo e provo a rientrare mi dice che nick o password sono non corretti
magari se vuoi prova anche tu a registrarti così vedi cosa succede
ps: non viene più inviata nemmeno la mail come mai
-
controlla nel database che fatta la registrazione, venga inserito nel campo "attivazione" il codice...
La registrazione la completa subito, certo... evidentemente la board è impostata per fare il login automatico...
l'importante è che crei la variabile e la metta nel database... per ora devi sloggarti, riloggarti e deve rimandarti alla index.php
Cmq non è facile fare modifiche così articolate via forum... ci sono 200 motivi per cui potrebbero esserci errori...
Devi per forza leggerti anche un po' come funziona perchè devi capirci tu di più...
keiske
-
eh si affermativo dalla tabella mysql appare proprio il codice alfanumerico!;)
quindi come fare...
-
Andiamo per gradi... se fai login non torni a index.php?ko=1 suppongo...
Intanto prova a mettere a mano index.php?ko=1 e assicuriamoci che almeno il messaggio si veda...
Poi riposta il codice del login...
keiske
-
@Privacy-Impresa said:
Andiamo per gradi... se fai login non torni a index.php?ko=1 suppongo...
Intanto prova a mettere a mano index.php?ko=1 e assicuriamoci che almeno il messaggio si veda...
Poi riposta il codice del login...
keiske
allora si così facendo si vede il messaggio proprio sotto al forum a sinistra
ti riposto login.php:
stesso link di prima
w.w.w.globalmeteo.altervista.org/login.txt
-
Una cosa al volo
if($actlog=="entra"){
if(user_esistente=="si"){
if(my_bannato=="si"){è normale che user_esistete e my_bannato siano senza $?
keiske
-
@Privacy-Impresa said:
Una cosa al volo
if($actlog=="entra"){
if(user_esistente=="si"){
if(my_bannato=="si"){è normale che user_esistete e my_bannato siano senza $?
keiske
ah guarda casco dalle nuvole, in teoria si perchè lì non ho mai modificato nulla, il file originale non ha il $
-
Togli questo da dov'è ora e prova a metterlo dove dico:
} else {
header("Location: index.php?ko=1");
}Lo metti in:
if(!isset($_POST['prov']) || trim($_POST['prov'])=="" || strpos($_POST['prov'],"resetpsw.php")!==false || strpos($_POST['prov'],"login.php")!==false || strpos($_POST['prov'],"registrazione.php")!==false){
$locain="index.php";
}else{
$locain=$_POST['prov'];
}
*} else {
header("Location: index.php?ko=1");
}
*
Sicuramente il problema è nell'annidiamento degli if... spostandolo lo metti nel primo caso dell'if aperto prima... dov'era prima l'if si apriva dopo il primo if e si ciudeva dopo la chisura del primo if...keiske
-
@Privacy-Impresa said:
Togli questo da dov'è ora e prova a metterlo dove dico:
} else {
header("Location: index.php?ko=1");
}Lo metti in:
if(!isset($_POST['prov']) || trim($_POST['prov'])=="" || strpos($_POST['prov'],"resetpsw.php")!==false || strpos($_POST['prov'],"login.php")!==false || strpos($_POST['prov'],"registrazione.php")!==false){
$locain="index.php";
}else{
$locain=$_POST['prov'];
}
} else {
header("Location: index.php?ko=1");
}Sicuramente il problema è nell'annidiamento degli if... spostandolo lo metti nel primo caso dell'if aperto prima... dov'era prima l'if si apriva dopo il primo if e si ciudeva dopo la chisura del primo if...
keiske
adesso quando faccio il login non succede nulla rimane sempre su index.php
-
e non passa il ko=1? facendoti vedere il messaggio?
Cmq devi provare a modificare la voce nel database in "1" per vedere se funziona...
keiske