- Home
- Categorie
- Coding e Sistemistica
- PHP
- script login
-
non ho capito che intendi :():
-
ogni volta che mi connetto al database, tipo per controllare se l'utente esiste nel database mi incrementa di un valore nel campo id_user che è la mia chiave primaria nel db.
ora, siccome tutto è fatto con le sessioni che cominciano dall'inizio del test registrando valori e dati personali di quell'utente che puo' anche non essersi loggato, ma rimane univoco in quanto la sessione gli registra tutte le sue scelte fino alla pagina finale in cui vengono registrati i valori e i dati dell'utente 1 nel db.
se poi questo utente 1(valore nel campo id_user autoincrement nel db), volesse anche registrarsi al sito, per accedere a dei download o vedere altre pagine alle quali normalmente chi nn si registra nn puo' accedere, nel mmomento della registrazione, dopo aver inserito i dati e fatto il controllo che nn esista nessun altro col suo username, automaticamente diventa utente numero 2 in quanto è avvenuta la connessione al database per controllare username e password.
quindi la connessione sembra sia obbligatoriamente necessaria almeno 2 volte:
1 per controllare username e password
2 per inserirli
quindi, cosi' facendo mi incrementa sempre di uno il valore.
io vorrei che questo non accadesse porcapupazza, ma nn riesco a capire come.Spero di essere stato un po' piu' chiaro.hai qualche suggerimento?
grazie
-
il fatto strano, forse, è che l'utente deve effettuare tutto il test per potersi registrare, loggarsi all'inizio quando ha effettuato il test almeno 1 volta,registrarsi dunque solo verso la fine di tutto,(terzultima pagina, prima delle statistiche finali dei risultati al test) non all'inizio come nei "normali siti" .
grazie per la pazienza
-
Allora, ripetiamo che mi sono un po perso:
arrivo io che voglio fare il test e do' le mie risposte man mano alle varie pagine.
Già dalla prima pagina mi viene assegnato un SID che mi trasporto dietro nelle varie pagine e a cui viene associata la risposta pagina per pagina man mano che vado avanti nel test.
Arrivato alla fine del test:- o mi loggo (se sono già registrato) e quindi a login effettuato procedo alla prossima pagina enter.php
- oppure mi registro. E a registrazione effettuata mi loggo e arrivo nuovamente alla pagina enter.php
a questo punto possiamo immettere i dati relativi alle risposte dentro al Db, essendo io già registrato NON devo fare un nuovo INSERT INTO, ma un UPDATE (dimenticavo, nel Db metti l'username come chiave univoca
quindi nella pagina enter.php metterai:
[php]<?php
//includo il file di Configurazione
include "config.php";
//se esiste la variabile $_SESSION['username'] è loggato
session_start();
if($_SESSION['username'] != "")
{
$sql="UPDATE messaggi SET campo10='".$_SESSION['risposta1']."', campo11=etc etc etc WHERE username='".$_SESSION['username']."'";
$query=@mysql_query($sql) or die (mysql_error());
echo "Benvenuto ".$_SESSION['username']." hai effettuato il login con successo<br>Puoi effettuare il <a href="logout.php">logout</a>.";
}
//Altrimenti non è loggato
else
{
echo "Non hai fatto il login correttamente, mi spiace <a href="index.html">riprova</a> o <a href="register.php">iscriviti</a>";
}
?> [/php]
Quindi, riepilogando:
All'atto della registrazione utilizzo l'INSERT INTO per registrare nome utente, password, compleanno e tutto cio' che non c'entra con il test, l'inserimento dei dati del test invece lo faro' solo dopo, a log effettuato, utilizzando l'UPDATE del record che riguarda l'utente loggatoFacci sapere se così risolvi
-
innanzitutto grazie di nuovo per la pazienza e per segurmi passo passo in questo ostico passaggio "linguistico" e concettuale.
il fatto è che il login lo effettua all'nizio e puo' anche non effettuare il test e passare direttamente alla pagina finale con le statistiche, se effettua il test come registrato reinserirà di nuovo i valori nel database, compresi username e password, solo pero' corrispondenti ad un id_user differente, per questo vorrei lasciare id_user autoincrement come chiave primaria, è corretto come ragionamento?
poi, per adesso ho risolto piu' o meno tutto, solo che, come ho postato in un altra discussione, dice alla fine di tutta la registrazione che la query è vuotax.posto le ultime 2 pagine:
alla fine del sito, dopo aver mantenuto determinati dati attraverso una sessione, decido di far registrare l'utente quindi:
<?php
session_start();
?><html>
<head><p align="left">
<title>prueba emociones</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head><body>
<BR>
<BR>
<p align="center"> <font size="+4"><BR> <BR><A HREF="localhost/">values </A><html>
<head>
<title>Iscriviti</title>
</head>
<body>
<form action="register2.php" method="POST" name="register">
Username<input type="text" name="username"><br>
Password<input type="password" name="password"><br>
Verifica password<input type="password" name="repassword"><br>
<input type="submit" value="Iscriviti"></body>
</html>
<?php
$_SESSION['test_valence_photo10'] = $_GET['test_valence_photo10'];?>
poi l'utente si registra e vorrei che inserisca tutto nel database, compresi i dati di sessione, quindi gli dico che le variabili di sessione che ho portato avanti con $_GET vengano immesse nel database con $_SESSION e il nome di ogni variabile, pero' vorrei inserire anche le utlime due variabili passate con $_POST della registrazione quindi:
. $_POST['username']. "','" . $_POST['password'].alla fine pero' di tutto, mi dice che l query è vuota.
<?php
session_start();
?>
<?
include "config";
// inizializza sempre le variabili che usi in uno script
$username="";
$psw="";
$repsw="";
// assegna i valori POSTati a queste variabili hashando la password
$username=$_POST['username'];
$psw=md5($_POST['password']);
$repsw=md5($_POST['repassword']);
$ver = "SELECT * FROM messaggi WHERE username= '$username'";
$tabver = @mysql_query ($ver) or die (mysql_error());
$veruser = mysql_num_rows ($tabver);
if ($username=='' || $psw=='' || $repsw=='')
{
echo '<br>Compila correttamente tutti i campi';
}
else if ($psw !== $repsw)
{
echo "<br>Controllare la password digitata.";
}
else if ($veruser !== 0)
{
echo "<br>L'username richiesto risulta già registrato";
}
else if (eregi=()]", $username))
{
echo "<br>Il nickcontiene caratteri non validi.";
}
else
{
$inserimento=mysql_query( "insert into messaggi (id_user,username,password,user,gender,date_of_bir th,country,test_arousal_photo1,test_valence_photo1 ,test_arousal_photo2,test_valence_photo2,test_arou sal_photo3,test_valence_photo3,test_arousal_photo4 ,test_valence_photo4,test_arousal_photo5,test_vale nce_photo5,test_arousal_photo6,test_valence_photo6 ,test_arousal_photo7,test_valence_photo7,test_arou sal_photo8,test_valence_photo8,test_arousal_photo9 ,test_valence_photo9,test_arousal_photo10,test_val ence_photo10,date) values ('" . $_POST['username']. "','" . $_POST['password']. "','" . $_SESSION['id_user']. "', '" . $_SESSION['user']. "','" . $_SESSION['gender'] . "','" . $_SESSION['year'] . "-" . $_SESSION['month'] . "-" . $_SESSION['day'] . "','" . $_SESSION['country'] . "','" . $_SESSION['test_arousal_photo1'] . "','" . $_SESSION['test_valence_photo1'] . "','" . $_SESSION['test_arousal_photo2'] . "','" . $_SESSION['test_valence_photo2'] . "','" . $_SESSION['test_arousal_photo3'] . "','" . $_SESSION['test_valence_photo3'] . "','" . $_SESSION['test_arousal_photo4'] . "','" . $_SESSION['test_valence_photo4'] . "','" . $_SESSION['test_arousal_photo5'] . "','" . $_SESSION['test_valence_photo5'] . "','" . $_SESSION['test_arousal_photo6'] . "','" . $_SESSION['test_valence_photo6'] . "','" . $_SESSION['test_arousal_photo7'] . "','" . $_SESSION['test_valence_photo7'] . "','" . $_SESSION['test_arousal_photo8'] . "','" . $_SESSION['test_valence_photo8'] . "','" . $_SESSION['test_arousal_photo9'] . "','" . $_SESSION['test_valence_photo9'] . "','" . $_SESSION['test_arousal_photo10'] . "','" . $_SESSION['test_valence_photo10'] . "', now())" );
$query= @mysql_query($sql) or die (mysql_error());
echo "<br>Registrazione effettuata.";
}
@mysql_close($connection);
?>
</body>
</html>come correggo lo script di inserimento?
grazie
-
Ah, l'utente si logga (quindi deve essere registrato) ad inizio test e pur facendo più volte il test inserirai un nuovo record?
Se si allora rifacciamo tutto
Devi usare almeno due tabelle a questo punto, una per gli utenti e l'altra per i risultati dei test
-
se l'utente è già registrato si logga all'inizio.
oppure si registra alla fine del test.
dici che devo creare una seconda tabella?:o
sono pronto a tutto;)
pero' devo lasciare la chiave primaria id_user autoincrementativo, quindi creare una chiave esterna per la seconda tabella.
-
come posso procedere?
-
ti prego non mi abbandonare mia guida:D:D
-
eccolo
Beh si, a questo punto devi fare due tabelle
una utenti
id(primary-key, auto-increment), username (Unique key), password, e-mail e quello che ti serve ancora riguardo all'utentel'altra test
id (primary-key, auto-increment), id_user (join to utenti.id), e tutti i risultati del testalmeno io la farei così
-
certo, questa credo sia la struttura migliore.
prima devo risolvere alcuni problemucci con il login che mi affliggono da stamattina..
ho postato il problema in un'altra discussione