Salve Ragazzi,
sull mio sito web ho messo una funzione in php che permette la registrazione con email di conferma e Login.
Per fare connettere il sito al db ho dovuto fare questo script che si chiama connessionedb.php , che è compilato in questo modo:
Codice PHP:
<?php
$host="localhost"; // Host name
$username="starsun"; // Mysql username
$password=""; // Mysql password
$db_name="my_starsun"; // Database name
$tbl_name="user"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "data_insert.php"
session_register("myusername");
session_register("mypassword");
header("location:data_insert.php");
}
else {
echo "-";
}
?>
ho fatto le tabelle dell db con questo script che si chiama creatab.php :
Codice PHP:
<?php
require('connessionedb.php'); //o le vostre istruzioni per il collegaamento al db
$query = "CREATE TABLE user (
user_id INT(11) NOT NULL AUTO_INCREMENT,
user_firstname VARCHAR (50) NOT NULL,
user_lastname VARCHAR (50) NOT NULL,
user_username VARCHAR (11) NOT NULL,
user_password VARCHAR (32) NOT NULL,
user_email VARCHAR (50) NOT NULL,
user_reg TINYINT (1) NOT NULL default 0,
PRIMARY KEY (user_id))";
$users = mysql_query($query) or die(mysql_error());
$qry = "CREATE TABLE confirm (
confirm_id INT(11) NOT NULL AUTO_INCREMENT,
confirm_validator VARCHAR (32) NOT NULL,
confirm_userid INT (11) NOT NULL default 0,
PRIMARY KEY (confirm_id))";
$confirm = mysql_query($qry) or die(mysql_error());
?>
e per fare la Registarzione invece questo script che si chiama Registrazione.php :
Codice PHP:
<?php
session_start(); /* session_start - Inizializza i dati di sessione
creando una sessione (o riprendendo quella corrente).
N.B. session_start() va messo all'inizio delle pagine php e prima del codice HTML*/
/*$_SESSION['log'] è la prima variabile di sessione che utilizzeremo.
In questo esempio $_SESSION['log'] contiene un valore asseganto nella pagina di login,
che vedremo più avnti, che in pratica assume due valori (da noi stabiliti): 0 se
l'utente non ha effettuato il login e 1 se l'utente ha effettuato il login.
Nell'esempio concreto impediamo ad un utente logato di effettuare un'altra iscrizione*/
if ($_SESSION['log'] == 1)
{
echo "<p><b>Sei già registrato!</b><br>Per effettuare una nuova registrazione" .
"ritorna alla Home Page ed effettua il Logout.<br><br>";
echo "<a href=\"index.php\"><<< Clicca qui per ritornare alla Home Page</a></p>";
exit();
}
?>
<html>
<head>
<title>Registrazione</title>
<!-- Per comodita e completezza, nello svolgimento degli script,
utilizzeremo 2 javascript che ci permettono di contollare le seguenti azioni:
1. function ver() - la quale controlla che tuttti i campi del nostro form
di inserimento siano compilati.
2. function ControllaMail() - la quale controlla che l'email inserita sia
solo sintatticamente corretta (e non se realmente esistente).
Possiamo dire che il loro utilizzo in questo caso risulta
essere più adatto, rispetto a script equivalenti in php, in quanto gli javascript
vengono eseguiti sul lato client, mentre quelle php
passano al server (lato server) e poi restituite all'utente sotto forma di html. -->
<SCRIPT LANGUAGE="JavaScript">
function ver()
{
for (i=0; i<document.forms[0].elements.length; ++i)
if(document.forms[0].elements[i].value == "")
{
alert("Riempire tutti i campi!");
document.forms[0].elements[i].focus();
return false;
}
return true;
}
</SCRIPT>
<SCRIPT>
function ControllaMail()
{
EmailAddr = document.modulo.email.value;
Filtro = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-]{2,})+.)+([a-zA-Z0-9]{2,})+$/;
if (Filtro.test(EmailAddr))
return true;
else
{
alert("Controlla l'indirizzo e-mail inserito!");
document.modulo.email.focus();
return false;
}
}
</SCRIPT>
</head>
<body>
<p>
<!-- Procediamo costruendo il nostro form che passerà le informazioni inserite alla pagina data_insert.php.
Da notare:
1. action="data_insert.php?action=add&type=user" - che ci permette di passare le 2 variabili action e type,
con i loro rispettivi valori, add e user
2. il richiamo delle funzioni javascript al premere del pulsante "Conferma": onSubmit="return (ver() && ControllaMail());" -->
<form name="modulo" action="data_insert.php?action=add&type=user" method="post" onSubmit="return (ver() && ControllaMail());">
Nome<br>
<input name="firstname" type="text" size="25" maxlength="30"><br><br>
Cognome<br>
<input name="lastname" type="text" size="25" maxlength="30"><br><br>
Username<br>
<input name="user" type="text" size="20" maxlength="11"><br><br>
Password<br>
<input name="pass" type="password" maxlength="8"><br><br>
E-mail<br>
<input name="email" type="text" size="50" maxlength="50"><br><br>
<input type="submit" name="Submit" value="Conferma">
</form>
</p>
</body>
</html>
allora dopo la registrazione dovrebbe aprirsi un pagina che si chiama data_insert.php
Questo script dovrebbe inviare la mail di conferma all email inserita.
dentro ci deve essere un link che porta alla pagina confirm_reg.php
che conferma la registrazione.
ALLORA RAGAZZI Guardiamo il problema:
quando clicco su registrazione e mi porta alla pagina di registrazione,inserisco i dati e continuo mi arriva questo messaggio:
- You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '', 'user1@mail.com')' at line 11
Non sto capendo qualè il problema,forse sto sbagliando qualcosa in questi script?
Allora vi ringrazio per l'attenzione...
P.S:
Per vedere il problema dall vivo visita la homepage
http://www.starsun.altervista.org/index.php
Provate a registrarvi e uscira' il problema...
Grazie