Script PHP con MySQL

matthew85

Nuovo Utente
9 Feb 2013
12
0
0
Buon giorno a tutti,
recentemente, ho sistemato un codice per la registrazione e il login, ma mi da questo errore:

"Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /web/htdocs/www.cosmomakeup.it/home/register.php on line 26"

Il codice utilizzato è:

PHP:
<?php  

include("config.php");  

// connect to the mysql server 
$link = mysql_connect($server, $db_user, $db_pass) 
or die ("Could not connect to mysql because ".mysql_error()); 

// select the database 
mysql_select_db($database) 
or die ("Could not select database because ".mysql_error()); 
if($_POST["username"]!="" && $_POST["password"]!="" && $_POST["conferma_password"]!="" && $_POST["nome"]!="" && $_POST["cognome"]!="" && $_POST["partita_iva"]!="" && $_POST["codice_fiscale"]!="" && $_POST["indirizzo"]!="" && $_POST["cap"]!="" && $_POST["citta"]!="" && $_POST["provincia"]!="" && $_POST["mail"]) 
{ 
    // check if the username is taken 
    $check = "select id from $table where username = '".$_POST['username']."';";  
    $qry = mysql_query($check) 
    or die ("Could not match data because ".mysql_error()); 
    $num_rows = mysql_num_rows($qry);  
    if ($num_rows != 0) {  
    echo "Sorry, the username $username is already taken.<br>"; 
    echo "<a href=register.html>Try again</a>"; 
    exit;  
    } else { 

    // insert the data 
    $insert = mysql_query("insert into user (username,password,conferma_password,nome,cognome,partita_iva,codice_fiscale,indirizzo,cap,citta,provincia,mail,newsletter) values ('".$_POST["username"]!="" && $_POST["password"]!="" && $_POST["conferma_password"]!="" && $_POST["nome"]!="" && $_POST["cognome"]!="" && $_POST["partita_iva"]!="" && $_POST["codice_fiscale"]!="" && $_POST["indirizzo"]!="" && $_POST["cap"]!="" && $_POST["citta"]!="" && $_POST["provincia"]!="" && $_POST["mail"]"") 
    or die("Could not insert data because ".mysql_error()); 

    // print a success message 
    echo "Your user account has been created!<br>";  
    echo "Now you can <a href=login.html>log in</a>";  
    } 
}  
else echo "Sorry, you have to insert all the fields.<br><a href=register.html>Try again</a>"; 
?>

Il problema è di questa riga:

PHP:
    $insert = mysql_query("insert into user (username,password,conferma_password,nome,cognome,partita_iva,codice_fiscale,indirizzo,cap,citta,provincia,mail,newsletter) values ('".$_POST["username"]!="" && $_POST["password"]!="" && $_POST["conferma_password"]!="" && $_POST["nome"]!="" && $_POST["cognome"]!="" && $_POST["partita_iva"]!="" && $_POST["codice_fiscale"]!="" && $_POST["indirizzo"]!="" && $_POST["cap"]!="" && $_POST["citta"]!="" && $_POST["provincia"]!="" && $_POST["mail"]"")

cosa ho sbagliato?
 
ciao
scusa ma che razza d query hai fatto?
se vuoi inserire i vari valori dei $_POST
PHP:
<?php
//......
$insert = mysql_query("INSER INTO user (username,password,conferma_password,nome,cognome,partita_iva,codice_fiscale,indirizzo,cap,citta,provincia,mail,newsletter) VALUES('".$_POST["username"],"', '".$_POST["password"]."', '".$_POST["conferma_password"]."', '".$_POST["nome"]."', '".$_POST["cognome"]."', '".$_POST["partita_iva"]."', '".$_POST["codice_fiscale"]."', '".$_POST["indirizzo"]."', '".$_POST["cap"]."', '".$_POST["citta"]."', '".$_POST["provincia"]."', '".$_POST["mail"]."'") or die("Could not insert data because ".mysql_error());
//......
?>
che comunque DEVI verificare prima dell'inserimento e non solo come fai di verificare che non fossere vuoti, es. se uno abita a l'aquila ti manda in pallino il record

p.s.
quando le query sono così lunghe ti converrebbe dividere la queryystringa da mysql_query in modo con un var_dump verificarla se c'è qualcosa che non va
 
Ok. Ma nel codice che mi hai scritto tu in questo momento la posso mettere già nello script?
 
ciao
si potresti comunque da verificare perche non ho la tua tabella e quindi non l'ho testato, ci possono essere (sperp di no) degli errori di digitazione
 
Mi esce fuori questo errore:

"Parse error: syntax error, unexpected T_ELSE in /web/htdocs/www.cosmomakeup.it/home/register.php on line 35".

Cosa intendi con questo: "ci possono essere (sperp di no) degli errori di digitazione"?
 
ciao
intanto l'errore
syntax error, unexpected T_ELSE in /web/htdocs/www.cosmomakeup.it/home/register.php on line 35"
probabulmente in un if-elese non hai chiuso una graffa o manca una parentesi o un ;
verifica perche spesso questo tipo di errore non nasce alla riga indicata, ma a monte.

per errore di digitazione intendo (non avendolo testato) aver messo (es) una , al posto di un .
 
Non potrebbe essere i punti che sono stati inseriti nel valore della query?
Intendo la riga $insert, sia la prima parte sia la seconda?

PHP:
<?php 

include("config.php"); 

// connect to the mysql server
$link = mysql_connect($server, $db_user, $db_pass)
or die ("Could not connect to mysql because ".mysql_error());

// select the database
mysql_select_db($database)
or die ("Could not select database because ".mysql_error());
$insert = mysql_query("INSER INTO user (username,password,conferma_password,nome,cognome,partita_iva,codice_fiscale,indirizzo,cap,citta,provincia,mail,newsletter) VALUES('".$_POST["username"],"', '".$_POST["password"]."', '".$_POST["conferma_password"]."', '".$_POST["nome"]."', '".$_POST["cognome"]."', '".$_POST["partita_iva"]."', '".$_POST["codice_fiscale"]."', '".$_POST["indirizzo"]."', '".$_POST["cap"]."', '".$_POST["citta"]."', '".$_POST["provincia"]."', '".$_POST["mail"]."'") or die("Could not insert data because ".mysql_error());
{
	// check if the username is taken
	$check = "select id from $table where username = '".$_POST['username']."';"; 
	$qry = mysql_query($check)
	or die ("Could not match data because ".mysql_error());
	$num_rows = mysql_num_rows($qry); 
	if ($num_rows != 0) { 
	echo "Sorry, the username $username is already taken.<br>";
	echo "<a href=register.html>Try again</a>";
	exit; 
	} else {

	// insert the data
	$insert = mysql_query("insert into user (username,password,conferma_password,nome,cognome,partita_iva,codice_fiscale,indirizzo,cap,citta,provincia,mail,newsletter) values ('".$_POST["username"].="" && $_POST["password"].="" && $_POST["conferma_password"].="" && $_POST["nome"].="" && $_POST["cognome"].="" && $_POST["partita_iva"].="" && $_POST["codice_fiscale"].="" && $_POST["indirizzo"].="" && $_POST["cap"].="" && $_POST["citta"].="" && $_POST["provincia"]!="" && $_POST["mail"]."'")
	or die("Could not insert data because ".mysql_error());
	echo $insert;

	// print a success message
	echo "Your user account has been created!<br>"; 
	echo "Now you can <a href=login.html>log in</a>"; 
	}
} 
else echo "Sorry, you have to insert all the fields.<br><a href=register.html>Try again</a>";
}
?>
 
ciao
scusa una cosa: ma è lo script completo? non vedo alcuni if (vedo le parentesi {, ma non gli if).
poi a che cosa ti serve la seconda insert?
mi sembra (ma posso sbagliarmi) che tu abbia le idee un po' confuse riguardo alla sintassi delle query.
spiega bene cosa vuoi fare/ottenere

p.s.
i punti servono per concatenare la stringa
 
Buon giorno,
vorrei inserire su un sito di e-commerce la possibilità di registrarsi e di fare acquisti sul sito internet. Però mi servirebbe uno script che mi permetta di registrarsi e di loggarsi nel momento in cui si decide di fare l'acquisto o di guardare il proprio storico prodotti.
 
ciao
@matthew85
non ti accodare così ad altri post, poi se sai qualcosa di php/mysql guarda nelle varie discussioni trovi script atti a loggarsi butti giu uno script che ualche utente ti aiuta a eventualmente correggerlo/migliorarlo.
se invece vuoi tutto fatto fai un post nella bacheca annunci.
 
@borgo italia, vorrei essere aiutato, se è possibile, se no posso tranquillamente guardare, come lei ha detto, su altre discussioni.
 
ciao
non avevo evidentemente capito il tuo ultimo post.
comunque il problema va diviso in due parti
1) un utente non registrato si registra (qui devi dire tu se si puo registrare un pinco pallo qualsiasi o vuoi tu confermare la registrazione)
2) un utente già registrato si logga e quindi puo accedere alle pagine riservate
comunque vedo che hai già messo qualcosa cioè ha definito la tabella user?
username
password #questa dovrà essere salvata codificata
conferma_password #a che ti serve questo
nome
cognome
partita_iva
codice_fiscale
indirizzo
cap
citta
provincia
mail
newsletter # cosa e?
essendo la tabella il perno di tutto, posta il dump

p.s.
:) guarda che nessuno usa il lei qui nel forum :)
 
ciao
non avevo evidentemente capito il tuo ultimo post.
comunque il problema va diviso in due parti
1) un utente non registrato si registra (qui devi dire tu se si puo registrare un pinco pallo qualsiasi o vuoi tu confermare la registrazione)
2) un utente già registrato si logga e quindi puo accedere alle pagine riservate
comunque vedo che hai già messo qualcosa cioè ha definito la tabella user?
username
password #questa dovrà essere salvata codificata
conferma_password #a che ti serve questo
nome
cognome
partita_iva
codice_fiscale
indirizzo
cap
citta
provincia
mail
newsletter # cosa e?
essendo la tabella il perno di tutto, posta il dump

p.s.
:) guarda che nessuno usa il lei qui nel forum :)

Innanzitutto vorrei che il tizio deve prima confermare la sua richiesta di registrazione tramite un link, secondariamente la password è codificata, come giustamente hai già detto tu, "conferma_password" io la intendevo la conferma della password che sui siti che ci sono richiedono la conferma della password e la newsletter è la possibilità di ricevere aggiornamenti sulle varie promozioni o non dell'attività.

Ecco qua il dump:

Codice:
CREATE TABLE IF NOT EXISTS `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` int(11) NOT NULL,
  `password` int(11) NOT NULL,
  `conferma_password` int(11) NOT NULL,
  `nome` int(11) NOT NULL,
  `cognome` int(11) NOT NULL,
  `partita_iva` int(11) NOT NULL,
  `codice_fiscale` int(11) NOT NULL,
  `indirizzo` int(11) NOT NULL,
  `cap` int(11) NOT NULL,
  `citta` int(11) NOT NULL,
  `provincia` int(11) NOT NULL,
  `mail` int(11) NOT NULL,
  `newsletter` int(11) NOT NULL,
  `times` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

penso, però, che le voci partita_iva e codice_fiscale verranno unificate.

Chiedo scusa se davo del lei e non del tu, da oggi inizierò a dare del tu.
 
ciao
la tabella in generale va bene come concetto ma non come attributi, ti metto i commenti ai campi
Codice:
CREATE TABLE IF NOT EXISTS `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT, //questo è ok
  `username` int(11) NOT NULL, //l'username non è un numero intero ma una stringa `username` varchar(50) NOT NULL,
  `password` int(11) NOT NULL,//c.s. in più poi va codificata `password` varchar(100) NOT NULL
  `conferma_password` int(11) NOT NULL,//c.s. e in più non serve
  `nome` int(11) NOT NULL,//c.s.`nome` varchar(50) NOT NULL,
  `cognome` int(11) NOT NULL,//c.s.`cognome` varchar(50) NOT NULL,
  `partita_iva` int(11) NOT NULL,// attento sembra un numero ma non lo è, se lasci cosi es. 00325 diventa 325, quindi varchar(25) NOT NULL,
  `codice_fiscale` int(11) NOT NULL,//c.s. comunque lo lascerei, privato non p.IVA ma C.F., ditta individuale p.IVA+C.F.
  `indirizzo` int(11) NOT NULL,//c.s.`indirizzo` varchar(100) NOT NULL,
  `cap` int(11) NOT NULL,//stesso discorso della partita_iva
  `citta` int(11) NOT NULL,//c.s. `citta` varchar(50) NOT NULL,
  `provincia` int(11) NOT NULL,//c.s. `provincia` varchar(2) NOT NULL, basta 2 provincia es. PD TN PA....
  `mail` int(11) NOT NULL,//c.s.`mail` varchar(50) NOT NULL
  `newsletter` int(11) NOT NULL,// questo non so cosa sia
  `times` datetime NOT NULL,// questo se è la data in cui uno si registra, io generalemte uso il timestamp quindi meglio `times` int(15) NOT NULL
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

se poi vuoi essere tu a autorizzare la registrazione devi aggiungere un campo
`autorizzato` enum( '0', '1' ) NOT NULL ;
che può assumere solo i valori 0 e 1 per cusi es se 0=> NON autorizzato, se 1=> autorizzato
 
Ho ricreato la tabella, ma il problema mi persiste sull'else finale. Cosa dovrei fare?

L'errore che mi dice è:

"Parse error: syntax error, unexpected T_ELSE in /web/htdocs/www.cosmomakeup.it/home/register.php on line 35"

e lo script è quello che avevo inserito qualche giorno fa.
 
ciao
lo script che hai fatto all'inizio (diciamo) è un po' un ca..no.
quindi ripartiamo dall'inizio.
mi hai detto che hai rifatto la tabella: ok
per prima cosa butta giu il form con cui l'utente si iscrive, poi vediamo lo script (potrebbe essere tutto in una stessa pagina col form, o se preferisci su due)che strutterei in questo modo
verifica dei dati inviati in particolar modo user e pass perche se la pass e/o l'user non la dai tu ma la sceglie l'utente si deve indicare come devono essre fatti (es min 6 max 12 caratteri e quali) e, anche se improbabile ma non impossibile, verificare che non esistano di gia per un altro utente
una volta verificati i dati inviati dal form se corretti si fa l'inserimento nel db altrimenti l'utente viene riinviato al form per ripetere l'immissione.

ti sto dicendo questo perchè da quello che capisco questo scrip ti serve per lavoro e non per hobby, quindi a mio parere deve essere accurato
quindi posta per prima cosa come faresti il form poi come per la tabella ti faccio le mie osservazioni
 

Discussioni simili