- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Tutorial] Area privata
-
Ora va, dipendeva tutto da un errore banale, facendo copia incolla vari mi sono perso il pezzo dove includo il file di configurazione, messo quello è tutto perfetto, è tornato anche il tasto registrati.. x
Alla prossima... cagnata
-
Salve!
Dilemma di oggi:
Nella pagina registrati.php, all'invio del form vengo rendirizzato alla pagina registrato.php, è possibile eliminare la pagina registato.php e scrivere un breve codice html direttamente nella pagina registrati.php che si vede dopo l'invio del form?
in pratica penso si dovrebbe sostituire il comando
header('Location: registrato.php');
Purtroppo ora non ho i miei file perchè sto su un altro pc e non posso fare prove.
Chiedo: Se metto al posto di header un echo ottengo quello che voglio fare? Se è sbagliato illuminatemi please..
-
Ciao Gigi991,
Devi sostuire
[php]
header('Location: registrato.php');
exit;
[/php]con
[php]
echo 'codice html 1';
exit;
[/php]Se il codice è breve puoi anche usare die, che è come la funzione exit, ma ti permette di inviare un output.
[php]
die('codice html 1');
[/php]
-
Ottimo, e senti nella pagina di attivazione nel body c'è:
<?=($attivato == 1) ? 'Account Attivato' : 'Errore, link non valido' ?>
se metto:
<?php =($attivato == 1) ? 'Account Attivato' : 'Errore, link non valido' ?>
è la stessa cosa?
Che cambia a mettere <? e <?php ? Qual'è meglio usare?
-
Ciao Giggi991,
La sintassi <?=$variabile?> è un abbreviativo di <?php echo $variabile; ?>
<? è uno short tag, però il file di configurazione di php(php.ini) potrebbe disabilitare gli short tag, e invece di essere elaborati te li ritrovi mostrati a schermo.
-
In questo caso quindi è così:
[php]<?php ($attivato == 1) ? echo 'Account Attivato' : echo 'Errore, link non valido' ?>[/php]
?
-
Ciao Gigi991,
No la sintassi corretta è la seguente:
[php]
<?php echo (($attivato == 1) ? 'Account Attivato' : 'Errore, link non valido') ?>
[/php]
-
Facendo modifche mi sa ch ho combinato qualche casino, ho sistemato spero tutti gli errori ma ne rimane uno alla pagina di login, in pratica inserendo user e password giusti, con l'account già attivato mi dice sempre: Userame o password errati..
Ho provato a rivedere passo passo il codice come in guida ma non trovo l'errore..Il codice:
[PHP]
<?php require('config.php'); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php
if(isset($_POST['login'])) {
$user_name = (isset($_POST['user_name'])) ? trim($_POST['user_name']) : '';
$user_password = (isset($_POST['user_password'])) ? trim($_POST['user_password']) : '';
if(!get_magic_quotes_gpc()) {
$user_name = addslashes($user_name);
$user_password = addslashes($user_password);
}
$user_password = md5($user_password);
$query = mysql_query("SELECT user_id,user_active FROM users WHERE user_name = '$user_name' AND user_password = '$user_password' LIMIT 1");
if(mysql_num_rows($query) == 1) {
$login = mysql_fetch_array($query);
if($login['user_active'] == '') {
$_SESSION['login'] = $login['user_id'];
header('Location: profilo.php');
exit;
}
else {
die('<b>L'account non è ancora stato attivato</b><br>Per attivare l'account clicca sul link che ti è stato inviato tramite mail.<br>Se non ti è arrivata la mail, contatta l'amministratore.');
}
}
else die('Nome Utente o Password errati');
}
?>
<html>
<head>
<title>Login</title>
</head>
<body>
<table align="center" border="1" width="680">
<tr>
<td border="1" width="180" align="center" valign="top">
<b>Menu</b><br>
<a href="index.php">Homepage</a><br><a href="profilo.php">Profilo</a><br><a href="login.php">Login</a><br><a href="registrati.php">Registrati</a><br>
</td>
<td border="1" width="500" align="center" valign="top">
<form action="" method="post">
<input name="user_name" type="text" id="user_name" value="Username" onfocus="if(this.value=='Username') this.value='';"><br>
<input name="user_password" type="password" id="user_password" value="Password" onfocus="if(this.value=='Password') this.value='';"><br>
<input name="login" type="submit" value="Login"><br>
</form>
</td>
</tr>
</table>
</body>
</html>
[/PHP]Nome tabella: users
Campi: user_id, user_password, user_email, user_from, user_day, user_month, user_year, user_rank, user_avatar, user_activeContinuo a provare, se ci sono errori o pensate che dipende da un altra pagina scrivetemelo, grazie
-
Ciao Gigi991,
Non ho notato errori, sicuro che nella tabella sia presente l'utente con cui tenti di loggarti?
-
Neanche io trovavo errori, tant prima ho lasciato perdere prima di perderci la testa
Ho riegistrato anche 4-5 account, ogni volta li ho attivati con le varie email, ma niente dice sempre che username e password sono errati
E durante il log in comunque guardo nella tabella e i record ci sono..
-
Ciao gigi991,
Prova a stampare la query:
[php]
<?php require('config.php'); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php
if(isset($_POST['login'])) {
$user_name = (isset($_POST['user_name'])) ? trim($_POST['user_name']) : '';
$user_password = (isset($_POST['user_password'])) ? trim($_POST['user_password']) : '';
if(!get_magic_quotes_gpc()) {
$user_name = addslashes($user_name);
$user_password = addslashes($user_password);
}
$user_password = md5($user_password);
echo "SELECT user_id,user_active FROM users WHERE user_name = '$user_name' AND user_password = '$user_password' LIMIT 1";
$query = mysql_query("SELECT user_id,user_active FROM users WHERE user_name = '$user_name' AND user_password = '$user_password' LIMIT 1");
if(mysql_num_rows($query) == 1) {
$login = mysql_fetch_array($query);
if($login['user_active'] == '') {
$_SESSION['login'] = $login['user_id'];
header('Location: profilo.php');
exit;
}
else {
die('<b>L'account non è ancora stato attivato</b><br>Per attivare l'account clicca sul link che ti è stato inviato tramite mail.<br>Se non ti è arrivata la mail, contatta l'amministratore.');
}
}
else die('Nome Utente o Password errati');
}
?>
<html>
<head>
<title>Login</title>
</head>
<body>
<table align="center" border="1" width="680">
<tr>
<td border="1" width="180" align="center" valign="top">
<b>Menu</b><br>
<a href="index.php">Homepage</a><br><a href="profilo.php">Profilo</a><br><a href="login.php">Login</a><br><a href="registrati.php">Registrati</a><br>
</td>
<td border="1" width="500" align="center" valign="top">
<form action="" method="post">
<input name="user_name" type="text" id="user_name" value="Username" onfocus="if(this.value=='Username') this.value='';"><br>
<input name="user_password" type="password" id="user_password" value="Password" onfocus="if(this.value=='Password') this.value='';"><br>
<input name="login" type="submit" value="Login"><br>
</form>
</td>
</tr>
</table>
</body>
</html>
[/php]
-
Niente.. mi esce:
SELECT user_id,user_active FROM users WHERE user_name = 'nomeregistrato' AND user_password = 'passwordregistrato' LIMIT 1Nome Utente o Password errati
L'errore sembra sempre quello, però stampa a video la query..
-
Ciao Gigi991,
Infatti serve proprio a stampare la query, ora, se lanci la query ottenuta dal phpmyadmin cosa ti restituisce?
-
Inserendo quella query penso me lo trova, perchè mettendonome e password a caso mi da 0 righe trovate, mentre con quelli giusti mi da:
Visualizzazione record 0 - 0 (1 Totali, La query ha impiegato 0.0003 sec)
SELECT user_id, user_active
FROM users
WHERE user_name = 'nomegiusto'
AND user_password = 'passgiusta'
LIMIT 1N.B. La password messa nella query è quella già criptata, presente nel database.
Se metto la password che digito nel form di login mi da:MySQL ha restituito un insieme vuoto (i.e. zero righe). ( La query ha impiegato 0.0002 sec )
SELECT user_id, user_active
FROM users
WHERE user_name = 'nomegiusto'
AND user_password = 'passnoncriptata'
LIMIT 1E' giusto se fa così?
-
Ciao Gigi991,
Se eseguendo la query stampata dal file php, ti viene restituito 1 record, il tuo script dovrebbe funzionare correttamente.
Se ti viene restituito un insieme vuoto significa che c'è qualche problema nella query.Se la query ti restituisce 1 record, mi sembra strano, se non impossibile, che il controllo restituisca false
-
Si mi fa abbatere sto php
Facciamo così, entro oggi o domani appena ho tempo provo a rifarlo tutto, e ad ogni modifica provo tutto lo script dalla registrazione all'attivazine fino a login e logout.. Così spero di vedere cos'è che può creare il problema..
Poi vi faccio sapere..
-
Salve, volevo chiedere, se non disturbo troppo, se è possibile avere un aiuto per creare due pagine riguardo questo ottimo script..la prima per modificare la password, e la seconda per eliminare l'account. E' possibile? Mi potete aiutare? Grazie mille in anticipo siete grandi
-
Ciao MimmoNapoli,
Posta pure ciò che sei riuscito a fare, e vedremo di aiutarti.
-
Ciao ragazzi, ho preso spunto da questo script per farmi il login del mio sito. All'inizio della pagina che devo proteggere ho inserito questo codice:
[php]<?php
include "connessione.php";
If (!isset($_SESSION['Nickname'])) {
die("non risulti loggato");
exit;}
?>
[/php]c'è qualcosa che non va...ma lo script dovrebbe essere corretto....infatti se metto i dati di un utente registrato mi dice non risulti loggato, invece se uso dati sbagliati nella form mi da "nome utente o password errati".... ecco invece il login:[php]<?php
include "connessione.php";
session_start();
if(isset($_POST['Nickname'])) {
$nickname= trim($_POST['Nickname']);
$password= trim($_POST['Password']);$password= md5($password);
$query= mysql_query("SELECT * FROM lista_utenti WHERE Nickname = '$nickname' AND Password = '$password'");
$utente=mysql_num_rows($query);if($utente==1) {
$_SESSION['Nickname'] = $nickname;
header("Location: frames.php");
}
else {
die ('Nickname o Password errati');}
}
?>[/php]
Dove sbaglio stavolta?
-
Ragazzi, ho messo session_start (); nel file "connessione.php"... prima era in index.php (dove si effettua il login)...ora se metto i dati errati nella form, mi dice che sono tali...mentre se li metto giusti mi apre la pagina....frames.php ma mi resta bianca..da cosa può dipendere?
Scusate per il doppio post non mi faceva più editare