- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Tutorial] Area privata
-
Ciao danny1975,
nella variabile di sessione $_SESSION['login'] c'è l'id dell'utente loggato, quindi puoi utilizzare quello.
-
Salve,
Ho un po' personalizzato questo script ed ho creato una paginetta che subito dopo il login preleva l'IP dell'utente e me lo mette nel database.[PHP]<?php
// Includo la connessione al database
require('config.php');// Se non è stata definita la variabile manda l'utente alla homepage
if(!isset($_SESSION['login']))
{
header('Location: index.php');
exit;
}else
{
//Metto l'ID del'utente in una variabile
$id_utente = $_SESSION['login'];
//Metto l'IP dell'utente in una variabile
$ip_utente = $_SERVER['REMOTE_ADDR'];//Prendo l'orario e o metto nella variabile $a=time(); $b=date('d M y - H:i:s', $a);
//Metto la query in una variabile
$query_ip = "INSERT INTO ip_utenti (id_utente, ip_utente, data) VALUES ('$id_utente', '$ip_utente', '$b')";
//Eseguo la query
mysql_query($query_ip) OR die("Query non eseguita correttamente. ".mysql_error());header('Location: privata.php');
exit;
}?>[/PHP]
In questo metodo però nel Database mostra l'id dell'utente, cosa piuttosto scomoda, come posso fare a mette il Nome Utente accanto all'IP?
-
Basta salvare l'username nel databse o dove salvi il messaggio...
-
Ciao RCayla,
solitamente è sempre consigliato mettere l'id e non il nome utente, il nome utente puoi ottenerlo dopo facendo un join nella query.
-
Una domandina riguardo lo script di attivazione.
Premessa: sono io che inserisco le credenziali di tutti gli accout.
A loro arriverà semplicemente una email in cui c'è scritto che sono stati aggiunti al database e se accettano tutte le condizioni possono attivare il loro account. A questo punto però mi trovo il problema di recapitargli nel messaggio anche le credenziali da me inserite. Ho fatto qualche prova ad intuito ma non essendo esperto non mi ci ritrovo. Come posso inserire nel [PHP]$message = [/PHP] in html una funzione che mi riporti nella email i valori inseriti e sopratutto la password prima che venga criptata md5?
Grazie
-
niente ancora non va ecco cosa mi dice:
Parse error: syntax error, unexpected $end in /membri/zomer/attivazione.php on line 79
e questo è il codice modificato, quarda che quelle query nell echo devono funzionare!
h**p://zomer.altervista.org/attivazione.txt
-
Glaximous utilizza la variabile prima di fare l'hash in md5, oppure fai fare l'hash mettendolo in un altra variabile che va al database.
Zomer prova cosi:
[php]<?php
// Includo la connessione al database
require('config.ini.php');
require('errore.php');
session_start();// Dati Inviati dal modulo
$code = (isset($_GET['code'])) ? trim($_GET['code']) : '';// 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');//prelevo l'id
$query = " SELECT * FROM utenti WHERE attivazione='$code'";
$risult = mysql_query($query);
$row = mysql_fetch_array($risult);
$id = $row['id'];
$user = $row['user'];function nick(){ global $user;
// 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();?>
<!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>
<?php if($attivato == 1){
echo'
Abbiamo attivato il tuo account ora puoi entrare in Zomer!';//creo la tabella dove veranno memorizzati tutti gli amici
$query="CREATE TABLE amici".$user."(id INT UNSIGNED NOT NULL AUTO_INCREMENT, user VARCHAR(255),tipo_richiesta VARCHAR(100),data_amicizia VARCHAR(13),primary key(id))";
if(!mysql_query($query))
errore('Errore nella creazione della tabella amici errore: 0001 contattare l'amministratore');//viene creata la tabella dove vengono memorizzate le richieste
$query="CREATE TABLE richieste".$user." (id INT UNSIGNED NOT NULL AUTO_INCREMENT, user VARCHAR(255), tipo_richiesta VARCHAR(255), data_amicizia VARCHAR(13),primary key(id))";
if(!mysql_query($query))
errore('Errore nella creazione della tabella delle richieste erorre: 0002 contattare l'amministratore!');//viene creata la tabella dove vengono memorizzati i gruppi a cui l'utnete fà parte
$query="CREATE TABLE gruppi".$user." (id INT UNSIGNED NOT NULL AUTO_INCREMENT, id_gruppo VARCHAR(255), id_logo VARCHAR(255), info_gruppo VARCHAR(255), data_nascita VARCHAR(13), id_utenti VARCHAR(255), primary key(id))";
if(!mysql_query($query))
errore('Errore nella creazione della tabella delle richieste erorre: 0002 contattare l'amministratore!');//creo la cartella per il blog
mkdir( $user , 0777);//creo la index nella cartella $s = fopen("./".$user."/index.htm","w"); //crea il layout della pagina! fwrite($s,file_get_contents("code.txt"));
}else{
echo 'Errore, link non valido';}?>
<br />
<br />
<br />
<a href="index.php">Homepage</a><br />
</body>
</html>[/php]
-
Zomer manca anche la } che chiude la funzione nick.
-
ok ho eliminato la funzione nick (ho capito che non mi serviva a un BI) comunque mi dice sempre lo stesso errore credo sia inutile dirti quale righa...
-
Non hai messo la modifica che ti ho detto prima?
Cosi:
[php]
<?php
// Includo la connessione al database
require('config.ini.php');
require('errore.php');
session_start();// Dati Inviati dal modulo
$code = (isset($_GET['code'])) ? trim($_GET['code']) : '';// 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');//prelevo l'id
$query = " SELECT * FROM utenti WHERE attivazione='$code'";
$risult = mysql_query($query);
$row = mysql_fetch_array($risult);
$id = $row['id'];
$user = $row['user'];// 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();?>
<!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>
<?php if($attivato == 1){
echo'
Abbiamo attivato il tuo account ora puoi entrare in Zomer!';//creo la tabella dove veranno memorizzati tutti gli amici
$query="CREATE TABLE amici".$user."(id INT UNSIGNED NOT NULL AUTO_INCREMENT, user VARCHAR(255),tipo_richiesta VARCHAR(100),data_amicizia VARCHAR(13),primary key(id))";
if(!mysql_query($query))
errore('Errore nella creazione della tabella amici errore: 0001 contattare l'amministratore');//viene creata la tabella dove vengono memorizzate le richieste
$query="CREATE TABLE richieste".$user." (id INT UNSIGNED NOT NULL AUTO_INCREMENT, user VARCHAR(255), tipo_richiesta VARCHAR(255), data_amicizia VARCHAR(13),primary key(id))";
if(!mysql_query($query))
errore('Errore nella creazione della tabella delle richieste erorre: 0002 contattare l'amministratore!');//viene creata la tabella dove vengono memorizzati i gruppi a cui l'utnete fà parte
$query="CREATE TABLE gruppi".$user." (id INT UNSIGNED NOT NULL AUTO_INCREMENT, id_gruppo VARCHAR(255), id_logo VARCHAR(255), info_gruppo VARCHAR(255), data_nascita VARCHAR(13), id_utenti VARCHAR(255), primary key(id))";
if(!mysql_query($query))
errore('Errore nella creazione della tabella delle richieste erorre: 0002 contattare l'amministratore!');//creo la cartella per il blog
mkdir( $user , 0777);//creo la index nella cartella $s = fopen("./".$user."/index.htm","w"); //crea il layout della pagina! fwrite($s,file_get_contents("code.txt"));
}else{
echo 'Errore, link non valido';
}
?><br />
<br />
<br />
<a href="index.php">Homepage</a><br />
</body>
</html>
[/php]
-
Scusate, sono ancora poco pratico
Io adesso dovrei creare una pagina in cui mi mostra l'IP degli utenti.
E deve prendere dati da due tabelle una è "utenti" in cui deve prendere l'username l'altra si chiama "ip_utenti" composta da id, id_utente, ip_utente e data.Il risultato dovrebbe essere NomeUtente - IP - Data.
Quindi dovrei prendere l'id e l'UserName dalla tabella "utenti" poi l'id_utente dalla seconda tabella che va confrontato con i campi della prima tabella, come dovrebbe essere strutturata quindi la query?
-
Ciao la query dovrebbe essere tipo cosi:
SELECT username,ip,data FROM tabella1 INNER JOIN tabella2 ON tabella1.id_utente=tabella2.id_utente
-
Ora funziona tutto ma, è normale che il campo attivazione nel database è vuoto?
-
Una volta che il recupero è avvenuto quel campo non ti serve più quindi puoi benissimo lasciarlo vuoto.
-
Ho provato...
Ecco cosa ho fatto:
[PHP]<?php
//Includo la connessione al database
require('config.php')$query_ip = "SELECT id_utente,ip_utente,data FROM ip_utenti INNER JOIN utenti ON ip_utenti.id_utente=utenti.user";
$result_query_ip = mysql_query($query_ip) OR die("Query non eseguita correttamente. ".mysql_error());
while($a = mysql_fetch_array($result_query_ip))
echo ''.$a['user'].' - '.$a['ip_utente'].' - '.$a['data'].'
?>[/PHP]
Ed ovviamente c'è un errore
Parse error: syntax error, unexpected T_VARIABLE in /membri/rcayla/ip_utenti.php on line 12
Potete aiutarmi??
-
Prova cosi:
[php]
<?php
//Includo la connessione al database
require('config.php')$query_ip = "SELECT id_utente,ip_utente,data FROM ip_utenti INNER JOIN utenti ON ip_utenti.id_utente=utenti.user";
$result_query_ip = mysql_query($query_ip) OR die("Query non eseguita correttamente. ".mysql_error());
while($a = mysql_fetch_array($result_query_ip))
echo $a['user'].' - '.$a['ip_utente'].' - '.$a['data'];
?>
[/php]
-
Non va, da quest'errore ancora:
Parse error: syntax error, unexpected T_VARIABLE in /membri/rcayla/ip_utenti.php on line 12
-
Manca un ; nel require sarebbe cosi:
[php]
<?php
//Includo la connessione al database
require('config.php');$query_ip = "SELECT id_utente,ip_utente,data FROM ip_utenti INNER JOIN utenti ON ip_utenti.id_utente=utenti.user";
$result_query_ip = mysql_query($query_ip) OR die("Query non eseguita correttamente. ".mysql_error());
while($a = mysql_fetch_array($result_query_ip))
echo $a['user'].' - '.$a['ip_utente'].' - '.$a['data'];
?>
[/php]
La sintassi del resto è corretta, io non vedo nessun errore.
Sicuro di aver salvato il file prima di aver riprovato ad eseguirlo?
-
Salve,
Mi sono fatto questo script per aggiornare la password però non va, potete dirmi dove sbaglio?[PHP]<?php
// Includo la connessione al database
require('config.php');//Metto l'id utente in una sessione
$id_utente = $_SESSION['login'];// Se il modulo viene inviato...
if(isset($_POST['modifica']))
{
// Dati Inviati dal modulo
$old_pass = (isset($_POST['old_pass'])) ? trim($_POST['old_pass']) : ''; // Metto nella variabile 'old_pass' il dato inviato dal modulo, se non viene inviato dò di default ''
$new_pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
$new_pass2 = (isset($_POST['pass2'])) ? trim($_POST['pass2']) : ''; // Metto nella variabile 'pass2' il dato inviato dal modulo, se non viene inviato dò di default ''// Controllo i dati inviati
if(strlen($new_pass) < 4)
die('Password troppo corta');
elseif(strlen($new_pass) > 12)
die('Password troppo lunga');
elseif ($new_pass != $new_pass2)
die('Le due Password non coincidono');else
{
// Cerco se c'è un utente registrato con questa email
$query_cambio = mysql_query("SELECT pass FROM utenti WHERE id = '$id_utente' LIMIT 1");// L'utente esiste? if(mysql_num_rows($query_cambio) == 0) die('Nessun utente registrato con questa password');
// Query per l'aggiornamento della password
$sql_update = 'UPDATEutenti
SETpass
=.$new_pass.
WHEREid
=.$id_utente.
LIMIT 1;';
mysql_query($sql_update) OR die("Errore 001, contattare l'amministratore ".mysql_error());// Esegue il logout cancellando la sessione
session_destroy();header('Location: login.php');
exit;}
?>[/PHP]Grazie
-
Al posto di:
[php]$sql_update = 'UPDATEutenti
SETpass
=.$new_pass.
WHEREid
=.$id_utente.
LIMIT 1;'; [/php]
Metti:
[php]$sql_update = 'UPDATEutenti
SETpass
= '$new_pass' WHEREid
= '$id_utente' LIMIT 1'; [/php]Posta eventuali problemi, altrimenti devo controllarmi proprio tutto ogni volta, e amgari non mi accorgo del problema subito.