- Home
- Categorie
- Coding e Sistemistica
- PHP
- Aiuto con script registrazione utenti
-
Aiuto con script registrazione utenti
Ciao a tutti ho un problema con il mio script per la registrazione utenti..
Vorrei far ricevere, in caso di smarrimento password, un'e-mail con i dati dell'utente ke lo richiede inserendo la sua e-mail nell' apposito campo..questi sono i miei file...Questo e' il mio file register.php
[php]
<?include 'db.php';
if(!eregi("^[a-z]{5,15}$",$first_name)){
echo "Nome non valido ";
echo "<a href="./join_form.php">Torna</a>";
exit;
}if(!eregi("^[a-z]{5,15}$",$last_name)){
echo "Cognome non valido ";
echo "<a href="./join_form.php">Torna</a>";
exit;
}if (!eregi( "^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$",$email_address)){
echo "E-mail non valida ";
echo "<a href="./join_form.php">Torna</a>";
exit;
}if(!eregi("^[0-9a-z]{4,10}$",$username)){
echo "Username non valido ";
echo "<a href="./join_form.php">Torna</a>";
exit;
}// Define post fields into simple variables
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email_address = $_POST['email_address'];
$username = $_POST['username'];/* Lets strip some slashes in case the user entered
any escaped characters. */$first_name = stripslashes($first_name);
$last_name = stripslashes($last_name);
$email_address = stripslashes($email_address);
$username = stripslashes($username);/* Let's do some checking and ensure that the user's email address or username
does not exist in the database */$sql_email_check = mysql_query("SELECT email_address FROM users WHERE email_address='$email_address'");
$sql_username_check = mysql_query("SELECT username FROM users WHERE username='$username'");$email_check = mysql_num_rows($sql_email_check);
$username_check = mysql_num_rows($sql_username_check);if(($email_check > 0) || ($username_check > 0)){
if($email_check > 0){
echo "<strong>La tua E-mail risulta gia' registrata nel nostro database. Inserisci una diversa E-mail!<br />";
unset($email_address);
}
if($username_check > 0){
echo "L' Username risulta gia' registrato nel nostro database. Inserisci un diverso Username!<br />";
unset($username);
}
include 'join_form.php'; // Show the form again!
exit(); // exit the script so that we do not create this account!
}/* Everything has passed both error checks that we have done.
It's time to create the account! *//* Random Password generator.
http://cimo.altervista.org/file_reg.../passRandom.phpWe'll generate a random password for the
user and encrypt it, email it and then enter it into the db.
*/function makeRandomPassword() {
bla bla =P
}$random_password = makeRandomPassword();
$db_password = md5($random_password);
// Enter info into the Database.
$info2 = htmlspecialchars($info);
$sql = mysql_query("INSERT INTO users (first_name, last_name, email_address, username, password, info, signup_date, decrypted_password)
VALUES('$first_name', '$last_name', '$email_address', '$username', '$db_password', '$info2', now(), '$random_password')") or die (mysql_error());if(!$sql){
echo 'Errore nel creare il tuo account!! Contatta il WebMaster.';
} else {
$userid = mysql_insert_id();
$activatepath = "activate.php?id=$userid&code=$db_password";
// Let's mail the user!
$subject = "Richiesta registrazione $sitename";
$message = "$first_name $last_name,
Hai inviato la registrazione su $sitepathPer attivare il tuo account, clicca qui: $sitepath$activatepath I tuoi dati: Username: $username Password: $random_password CONSERVA QUESTI DATI XCHE' PER LA TUA PRIVACY E QUELLA DEGLI ALTRI I DATI SONO CRIPTATI!! Grazie! WebMaster, $sitename Questa E-mail viene generata automaticamente quindi non rispondere!"; mail($email_address, $subject, $message, "From: $sitename <$adminemail>\nX-Mailer: PHP/" . phpversion()); echo 'La tua richiesta e' stata inviata alla tua E-mail controlla!';
}
?>
[/php] Questo e' il file rec<font size="2">[php]
<?include 'db.php';
/* Let's do some checking and ensure that the user's email address or username
does not exist in the database */$sql_email_check = mysql_query("SELECT email_address FROM users WHERE email_address='$email_address'");
$email_check = mysql_num_rows($sql_email_check);if($email_check > 0){
echo "<html>
<head>
<meta http-equiv="refresh" content="3;url=./index.htm">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div align="center" class=tit>I dati richiesti sono stati inviati a $email_address</div>
</body>
</html>";
}else{
echo "Si è verificato un errore<br>non è stato possibile inviare i dati richiesti a $email_address";
}
$message="Ciao $username_check,\n ecco i dati di accesso che hai richiesto:\n
nick: $username\n
password: $random_password\n
A presto!!\n
Staff di $nomesito.\n\n\n\n\n";mail($email_address, $subject, $message, "From: $sitename <$adminemail>\nX-Mailer: PHP/" . phpversion());
?>
[/php]Quando vado per inserire l'e-mail mi dice ke nn e' possibile esegurire l'operazione...Nn calcola l'email di striscio..eppure le va' a salvare nel db?!?!Ho notato ke in questo pezzo di codice dove verifica se nel db ci sono usernmane e password gia' registrati ( e quindi nega la registrazione se gia' esistenti ) l'username mi funziona ma l'e-mail no...e' allora ho pensato ke nn le va' a cercare proprio nel database...e mi sembra strano xche' e' uguale come l'username ma cambiano solo le variabili ma nn funziona...
Uff aiutatemi vi prego nn so' piu' dove sbattere la testa...[php] $sql_email_check = mysql_query("SELECT email_address FROM users WHERE email_address='$email_address'");
$sql_username_check = mysql_query("SELECT username FROM users WHERE username='$username'");$email_check = mysql_num_rows($sql_email_check);
$username_check = mysql_num_rows($sql_username_check);if(($email_check > 0) || ($username_check > 0)){
if($email_check > 0){
echo "<strong>La tua E-mail risulta gia' registrata nel nostro database. Inserisci una diversa E-mail!<br />";
unset($email_address);
}
if($username_check > 0){
echo "L' Username risulta gia' registrato nel nostro database. Inserisci un diverso Username!<br />";
unset($username);
}
include 'join_form.php'; // Show the form again!
exit(); // exit the script so that we do not create this account!
}
[/php]Tnx
-
Ho risolto tutto ho riffatto tutto d'accapo e ora va'....
L'unica cosa e' il codice di restituzione della password se viene dimenticata...
Invia l'e-mail e tutto ma le variabili .. nada...
Come faccio per richiamarle visto che stanno nel file reg.php
Questo e' il codice della restituzione password...
Help tnx<? include 'db.php'; $sql_email_check = mysql_query("SELECT email FROM utenti WHERE email='$email'"); $email_check = mysql_num_rows($sql_email_check); $sql_username_check = mysql_query("SELECT username FROM utenti WHERE username='$username'"); $username_check = mysql_num_rows($sql_username_check); if($email_check > 0){ echo "<html> <head> <meta http-equiv=\"refresh\" content=\"3;url=./login.php\"> <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\"> </head> <body> <div align=\"center\" class=tit>I dati richiesti sono stati inviati a $email</div> </body> </html>"; }else{ echo "Si è verificato un errore<br>non è stato possibile inviare i dati richiesti a $email"; } $soggetto = "Richiesta password dimenticata $nomesito"; $messaggio="Ciao $username,\n ecco i dati di accesso che hai richiesto:\n nick: $username_\n password: $password_random\n A presto\n Staff di $nomesito.\n\n\n\n\n"; mail($email, $soggetto, $messaggio, "From: $nomesito <$emailadmin>\nX-Mailer: PHP/" . phpversion()); ?>
-
Mi puoi spiegare come si fa questa cosa??
io ho bisogno di un form di registrazione in script ed di un login.
e di un database dove si inseriscono automaticamente i dati.
Grazie
-
Cimo posta i due files come sono ora.
Lukas_922
è semplice, crei il form in html poi da php fai una query(se hai problemi a farla chiedi)
dopodiche devi fare il login. fai il tuo form in html e poi fai una query per controllare gli utenti se esiste e la password è corretta fai $_SESSION['loggato'] = $username; poi per vedere se è "loggato" guardi se esiste $_SESSION['loggato'].È molto semplice da fare basta impegnarsi un po e conoscere un po di PHP.
ciao ciao (ti ho spiegato la teoria, la pratica devi farla te o almeno provarci e poi ti diamo una mano)
-
Ciao ascolta io non ho capito niente di quello che hai detto. Scusa!!
io la tabella e il query le ho già fatte e anche il login e dopo???
io vorrei fare in modo che il login si connettesse al mio database, per controllare se esiste l'username e la password del account!!
Tutto qui!
-
se hai già fatto le query che problema c'è?
devi istanziare una connessione mysql(o qualche altro DB) e poi fai la query con i dati presi in post o in get.
-
e quello volevo sapere!!
il mysql!! come si fà ad instanziare???
Spiegami la procedura.
-
puoi cercare qua http://ch2.php.net/manual/it/ref.mysql.php
pe istanziare una connession mysql devi inserire i tuoi dati così
$connessione = mysql_connect("localhost", "utente_mysql", "password_mysql") or die("Connessione non riuscita: " . mysql_error());
e le query fai
mysql_query("SELECT * FROM Tabella WHERE username = $_POST['username']");
-
dove??
-
nel file.php
-
-
ma di cosa?
-
di tutta questa roba!!
login, database e form per la registrazione...
grazie!!
a [EMAIL="[email protected]"][email protected][/EMAIL]
-
ma scusa impegnati un po se te lo faccio io tu non impari nulla
-
eh ma cio provato mille volte...
alla fine non ci riesco!!
se mi puoi fare questo!!
-
almeno lo script per il login e la registrazione????
eh dai!!
Grazie..
-
posta il codice che hai fatto che proviamo ad aiutarti
-
questo è per la registrazione: controllate se è tutto ok!!
creato con frontpage2003.
<%
' FP_ASP File ASP generato automaticamente da un componente di FrontPage. Non modificarlo.
On Error Resume Next
Session("FP_OldCodePage") = Session.CodePage
Session("FP_OldLCID") = Session.LCID
Session.CodePage = 1252
Session.LCID = 1040
Err.Clear
strErrorUrl = "regerr.htm"
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
If Request.Form("VTI-GROUP") = "0" Then
Err.Clear
Set fp_conn = Server.CreateObject("ADODB.Connection")
FP_DumpError strErrorUrl, "Impossibile creare la connessione."
Set fp_rs = Server.CreateObject("ADODB.Recordset")
FP_DumpError strErrorUrl, "Impossibile creare il set di record."
fp_conn.Open Application("Nuova_pagina_1_ConnectionString")
FP_DumpError strErrorUrl, "Impossibile aprire il database."
fp_rs.Open "Risultati", fp_conn, 1, 3, 2 ' adOpenKeySet, adLockOptimistic, adCmdTable
FP_DumpError strErrorUrl, "Impossibile aprire il set di record."
fp_rs.AddNew
FP_DumpError strErrorUrl, "Impossibile aggiungere nuovi set di record al database."
Dim arFormFields0(4)
Dim arFormDBFields0(4)
Dim arFormValues0(4)
arFormFields0(0) = "Password"
arFormDBFields0(0) = "Password"
arFormValues0(0) = Request("Password")
arFormFields0(1) = "Username"
arFormDBFields0(1) = "Username"
arFormValues0(1) = Request("Username")
arFormFields0(2) = "EmailAddress"
arFormDBFields0(2) = "EmailAddress"
arFormValues0(2) = Request("EmailAddress")
arFormFields0(3) = "PasswordVerify"
arFormDBFields0(3) = "PasswordVerify"
arFormValues0(3) = Request("PasswordVerify")
FP_SaveFormFields fp_rs, arFormFields0, arFormDBFields0fp_rs.Update
FP_DumpError strErrorUrl, "Impossibile aggiornare il database."
fp_rs.Close
fp_conn.Close
Session("FP_SavedFields")=arFormFields0
Session("FP_SavedValues")=arFormValues0
Session.CodePage = Session("FP_OldCodePage")
Session.LCID = Session("FP_OldLCID")
Response.Redirect "regok.htm"
End If
End If
Session.CodePage = Session("FP_OldCodePage")
Session.LCID = Session("FP_OldLCID")
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta http-equiv="Content-Language" content="it">
<title>Registrazione utente</title>
</head>
<body>
<h1>Registrazione utente</h1>
<hr>
<p>Per registrarsi automaticamente come utenti, compilare e inviare il modulo.
L'accesso è consentito ai soli utenti registrati. Impostare il proprio nome
utente, ad esempio il proprio cognome, evitando di inserire spazi, e una
password personale. D'ora in poi sarà possibile accedere tramite questi due
elementi, che verranno memorizzati in un database di registrazione accessibile
solo al webmaster.</p>
<p>Dopo la registrazione, al primo accesso verrà chiesto di digitare il nome
utente e la password. Il browser conserverà tali informazioni per tutta la
sessione di lavoro, in modo da consentirvi di accedere a qualsiasi documento
senza dover fornire nuovamente tali dati.</p>
<hr>
<form method="POST" name="Register" action="--WEBBOT-SELF--">
<!--webbot bot="SaveDatabase" SuggestedExt="asp" S-DataConnection="Nuova_pagina_1" S-RecordSource="Risultati" U-Database-URL="fpdb/Nuova_pagina_1.mdb" U-Confirmation-Url="regok.htm" U-Validation-Error-Url="regerr.htm" S-Form-Fields="Password Username EmailAddress PasswordVerify" S-Form-DBFields="Password Username EmailAddress PasswordVerify" U-ASP-Include-Url="_fpclass/fpdbform.inc" startspan --><input TYPE="hidden" NAME="VTI-GROUP" VALUE="0"><!--#include file="_fpclass/fpdbform.inc"--><!--webbot bot="SaveDatabase" i-checksum="40548" endspan --> <h2>
Modulo di registrazione</h2>
<p>Nome utente:<br>
<input type="text" size="25" maxlength="256" name="Username"> <br>
Password:<br>
<input type="password" size="25" maxlength="256" name="Password"> <br>
Digitate nuovamente la password:<strong><br>
</strong>
<input type="password" size="25" maxlength="256" name="PasswordVerify"> <br>
Digitate il vostro indirizzo di posta elettronica:<strong><br>
</strong><input type="text" size="25" maxlength="256" name="EmailAddress">
</p>
<p><input type="submit" value="Invia registrazione">
<input type="reset" value="Cancella"></p>
</form>
<hr>
<h5> </h5>
</body>
</html>
-
Questo è per il login:
**<?php
include "config.php";
include "funzioni.php";
$DB = new DB();
session_start();
unset($_SESSION['login']);
unset($_SESSION['psw']);
// Si connette
$DB->connect();
$login = trim(addslashes($_POST[login]));
$pass = trim(addslashes($_POST[psw]));
if ($login=='' or $pass==''){
echo"<form name='login' action='' method='post'>
<table>
<tr><td>Login</td><td><input type='text' name='login'></td></tr>
<tr><td>Password</td><td><input type='password' name='psw'></td></tr>
<tr><td><input type='submit' name='Accedi' value='Accedi'></td><td></td></tr></table>";}
else
{
$psw_per_db = criptpass($pass);
$verifico_user = mysql_query("SELECT *
FROMutenti
WHEREnick
='$login'
ANDpass
= '$psw_per_db' andstato
= '1'
LIMIT 0 , 1");
$ok_login = mysql_num_rows($verifico_user);
if($ok_login=="1")
{
$_SESSION[login] = $login;
$_SESSION[psw]= $psw_per_db;
Echo "<meta http-equiv="Refresh" content="3; URL=set.php">Login effettuato correttamente . <a href=set.php>Clicca qui per entrare</a>";
}
else
{
Echo "<meta http-equiv="Refresh" content="3; URL=login.php">Login incorretto o utente che non ha ancora completato il processo di registrazione. In questo caso controlla la tua email<a href=login.php>Premi qui per riprovare</a>";
}
}
**
-
Ciao Lukas_922,
@Lukas_922 said:
di tutta questa roba!!
login, database e form per la registrazione...
grazie!!
a [EMAIL="[email protected]"][email protected][/EMAIL]
Ti faccio notare alcuni punti del regolamento:
**10. Uso dei Messaggi Privati
Ogni forumista ha diritto di leggere il forum senza essere tempestato di richieste di assistenza, spam, autopromozione o proposte varie non richieste.
Domande (e risposte) a tema devono essere fatte sul forum e deve essere rispettata la Privacy degli utenti.
**
10.0. Incitazione all'invio di PVT e/o email
Salvo nelle Aree Annunci o dove specificatamente consentita, è vietata la richiesta di contatto privato in e-mail o pvt.
Le risposte ed i suggerimenti ai messaggi devono essere pubbliche, in modo da essere d'aiuto a tutta la comunità del forum.Ma sopratutto vorrei ricordare che il forum è condivisione e non help desk: I messaggi devono essere di aiuto a tutta la comunità.Grazie a Skyline per la cortesia.
Continuiamo pure nel rispetto del regolamento.