Effettivamente ti mancano parecchie nozioni... vediamo che posso fare...
Prima di tutto, non ho capito che intendi per
"non so come restringere questa possibilità ad un solo utente e SOLO per il suo profilo."
Vuoi che un utente possa creare un profilo e modificarlo con un form (ad esmpio cambiare la password, modificare nfromazioni perosonali, ecc...) con un form, giusto?
In questo caso, la prima cosa da fare è creare una pagina php "registration_form.php", per il form di registrazione.
Potrebbe essere strutturata in questo modo:
Codice HTML:
<form method="post" name="registration" action="mail.php">
<table>
<tr>
<td>
E-mail:
</td>
<td>
<input type="text" name="mail" />
</td>
</tr>
<tr>
<td>
Password:
</td>
<td>
<input type="password" name="password" />
</td>
</tr>
<tr>
<td>
Conferma password:
</td>
<td>
<input type="password" name="re_password" />
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="submit" name="invia" value="registrati"/>
</td>
</tr>
</table>
</form>
Questa pagina è un smeplice form, con un campo "e-mail", e due campi per scegliere e confermare la passsword.
Ora, il rischio è che qualcuno si registri centinaia di volte per il puro gusto di rovinarti il database, dunque, è meglio creare un sistema che assicuri che l'email inserita dall'utente è vera, per questo, puoi inviargli dinamicamente un'e-mail, con un link che poi inserirà effettivamente l'utente nel database, in questo modo, se l'email non è vera, l'utente non riceverà il link è non potrà registrarsi.
Per questo, creiamo una pagina mail.php, destinataria del form di registrazione, che invierà la mail, e una pagina confirm.php, destinataria del link, che effettuerà la reistrazione vera e propria.
mail.php:
Codice PHP:
<?php
//Controllo che siano stati inseriti tutti i dati e che la password corrisponda alla conferma
if(isset($_POST["mail"])&&isset($_POST["password"])&&$_POST["password"]==$_POST["re_password"])
{
//Invio la mail
$mail = $_POST["mail"];
$password = md5($_POST["password"]);//codifico la password per questioni di sicurezza
$code = base64_encode(base64_encode($mail)."|".$password);//Il codice che, dal link, permetterà di recuperare i dati dell'utente. Ho usato base64_encode due volte, per rendre difficile all'utente risalire al contenuto originario del codice
$to = $_POST["mail"];//Il destinatario è l'indirizzo inserito
$subject = 'Registrazione effettuata';
$site = "http://mhtitalia.altervista.org";//indirizzo completo del TUO sito
$message = "Ciao! grazie di esserti registrato al mio sito web: $site
Per confermare la registarzione, e poter ottenere un account, clicca sull'indirizzo qui sotto, se l'indirizzo è su più righe, copialo e incollalo nella barra del tuo browser:
$site/confirm.php?c=$code";
//Ho scritto il messaggio dell'e-mail, con il link, che, attraverso il codice, permetterà di recuperare e inserire nel database i dati dell'utente.
$headers = 'From: noreply@mhtitalia.altervista.org . "\r\n" .
'Reply-To: noreply@mhtitalia.altervista.org' . "\r\n" .
'X-Mailer: PHP/' . phpversion();//Alcuni headers
mail($to, $subject, $message, $headers);//Invio l'e-mail
echo "Registrazione completata! Per attivare il tuo account, clicca sul link nell'e-mail che ti abbiamo inviato!";//Scrivo che la registrazione è andata a buon fine
}
?>
In questo modo, a meno che non si tratti di qualcuno di particolarmente esperto, sarà difficile per l'utente registrarsi in modo anomalo. Per ulteriori sistemi di sicurezza, servirebbero accorgimenti abbastanza complessi.
Ora ecco come potrebbe essere la pagina che, verificato il codice del link, registra l'utente.
confirm.php
Codice PHP:
<?php
$code = $_GET["c"];//Recupera il codice
$code = base64_decode($code);//Decodifico il codice
list($mail, $password) = explode("|", $code);//Suddivido il codice in mail e password, che erano state separate da |
$mail = base64_decode($mail);//Decodifico l'e-mail, che era stat codificata all'interno del codice codificato
//Non posso decodificare la password, per via dell'algoritmo irreversibile usato, ma potrò usarla comunque.
//Ora mi connetto al database ed inserisco il nuovo utente
$link = mysql_connect('localhost', 'mhtitalia', '');//Mi connetto a mysql
mysql_query('INSERT INTO my_mhtitalia.users VALUES ('.$mail.','.$password.')');//Eseguo la query, inserendo e-mail e password nella tabela utenti.
echo "Registarzione completata";
?>
A qusto punto non ti resta che creare una pagina di login (utilizzando select), a login completato mostri un form e poi, usi update per modificare i campi desiderati
Spero di esserti stato utile!