- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Script] Login
-
Ho dovuto modificare lo script login.php
Ecco il codice:File login.php
[php]<?php//includo il file di Configurazione con session_start()) dentro
include "config.php";$userid=trim($_POST['username']);
$pass=trim($_POST['password']);//Eseguo una query nella tabella utenti verificando se esiste l'username con quella password.
// codice vulnerabile...converebbe introdurre codice anti inject codes..
$query = mysql_query("SELECT username FROM utenti WHERE username = '".$_POST['username']."' AND password = '".md5($_POST['password'])."'");
$var=mysql_num_rows($query);
//se esiste l'account registra la sessione
if($var==1)
{
//metto l'username nella variabile di sessione "username"
$_SESSION['username'] = $_POST['username'];
//Faccio il redirect nella pagine enter.php
echo "<script>
window.location = "enter.php"
</script>";
}
else
{
//Faccio il redirect nella pagine enter.php
//Questa sezione può contenere l'implementazione della parte di codice relativa al login errato.
echo "<script>
window.location = "enter.php"
</script>";
}
?>
[/php]
-
Grazie darkito sarà un utile feedback per altri utenti
-
scusami DARKITO ma a cosa ti servono
$userid=trim($_POST['username']);
$pass=trim($_POST['password']);e poi io ho un problema, ti scrivo i miei passi:
1)uso easyphp in locale e quindi ho scaricato il codice, unzippato nella cartella
WWW/Login/
2)ho creato il db con phpmyadmin creando un utente con tutti i privilegi
username= 'log'
password= 'log'
ed ho creato il db nominato 'logdb'
3)ho creato la tabella 'utenti' con campi 'username' e 'password'
4)inserito allinterno della tabella i valori 'renato','renato'
5)ho settato config.php cosi:<?php
session_start();$database_name = "logdb";
$nomeutente = "log";
$password = "log";$connection = mysql_connect( 'localhost', $nomeutente, $password) or die('Could not connect to server.' );
mysql_select_db($database_name, $connection) or die('Could not select database.');
?>6)ora quando vado a fare il login ed inserisco renato renato mi esce la pagina con
Non hai fatto il login correttamente, mi spiace riprova o iscriviti
Ora mi sai spiegare il perchè?
p.s. ho fatto tutte le modifiche sopra descritte
-
Ciao pizzet e benvenuto nel forumGT
Per quanto riguarda **trim **serve a togliere gli spazi all'interno della stringa.
Per quanto riguarda il secondo punto dovrebbe essere un problema di configurazione del server.
Potrebbero essere le sessioni non abilitate.
-
grazie per la tua velocità
cmq se non l'avessi capito non sono un veterano del php ma solo un dilettante.
Mi potresti spiegare come configurare le sessioni????
-
visto che non lo hai scritto... hai fatto l'iscrizione prima?
-
no ho inserito direttamente i campi nel database quindi dovrebbe trovare l'utente renato quando va a fare la query per il login
Sbaglio???
-
@pizzet said:
no ho inserito direttamente i campi nel database quindi dovrebbe trovare l'utente renato quando va a fare la query per il login
Sbaglio???Forse ho capito quale è il tuo errore...Nell'inserimento molto probabilmente hai inserito la passwordo senza la crittazione MD5 per questo quando cerchi renato renato non ti fa il log-in. Puoi risolvere in due modi:
1- Modificando la query originale togliendo la crittazione MD5[php]$query = mysql_query("SELECT username FROM utenti WHERE username = '".$_POST['username']."' AND password = '"$_POST['password']."'");[/php]2- Inserendo i dati in questo modo..riporto pure la tabella a cui fa riferimento l'inserimento
CREATE TABLE utenti ( id INT(4) NOT NULL AUTO_INCREMENT, username VARCHAR(65) NOT NULL DEFAULT '', password VARCHAR(65) NOT NULL DEFAULT '', PRIMARY KEY (id,username) ) ; INSERT INTO `utenti` VALUES (1, 'admin', md5('admin')); ```Spero di essere stato utile
-
Mi inchino a te!!!!!
Grazie sei stato grande
ora invece provo a vedere se riesco a fare la registrazione oppure esiste già lo script inoltre io volevo inserire la funzione in cui l'user volesse modificare dei suoi campi(es.email) hai qualche idea.
-
@pizzet said:
Mi inchino a te!!!!!
Grazie sei stato grande
ora invece provo a vedere se riesco a fare la registrazione oppure esiste già lo script inoltre io volevo inserire la funzione in cui l'user volesse modificare dei suoi campi(es.email) hai qualche idea.
Per la registrazione io uso questo script
[PHP]<?php
require 'config.ini.php';
require 'connection.php';$nome=trim($_POST['nome']); $cognome=trim($_POST['cognome']); $codice_fiscale=trim($_POST['codice_fiscale']); $via=trim($_POST['via']); $civico=intval($_POST['civico']); $telefono=trim($_POST['telefono']); $citta=trim($_POST['citta']); $regione=trim($_POST['regione']); $userid=trim($_POST['userid']); $pwd=trim($_POST['pwd']); $query = "INSERT INTO membro (nome,cognome,codice_fiscale,via,civico,telefono,citta,regione) VALUES ('$nome','$cognome','$codice_fiscale','$via',$civico,'$telefono','$citta','$regione')"; $result=mysql_query($query); if (!$result) { die("Impossibile inserire i dati" . mysql_error()); } $query= "INSERT INTO account (codice_fiscale,userid,pwd,,tipoacc,valido) VALUES ('$codice_fiscale','$userid','$pwd','user',0)"; $result=mysql_query($query); if (!$result) { die("Impossibile creare l'account" . mysql_error()); } echo "Dati Inseriti"; mysql_close();
?>[/PHP]
Nel tuo caso dovresti inserire un campo mail. Per quanto riguarda la modifica dei campi non saprei....potresti adottare varie strategie..Quella che mi viene in mente adesso è di cancellare il vecchio record ed inserire quello con i campi aggiornati..Ma per questo punto passo la palla a chi ne sa più di me visto che anche io sono alle prime armi con php e non lo conosco nel dettaglio..magari esiste qualche funzione che ti permette di modificare i valori di un record...
-
lo scrpt così com'era non mi girava.. ho apportato qualche piccola modifica: come faccio a postarlo?? se lo copio e incollo non me lo mostra...
-
ciao Gigi la Trottol e benvenuto nel forumGT.
riprova un CTRL-C CTRL-V dovrebbe funzionare ..poi racchiudi il codice cliccando sul tag php accanto a quello di youtube.
Se vuoi specifica anche casa era che non ti funzionava...
Grazie
-
sentite io l'ho risolta così e funziona
il primo file è config.php
[PHP]
<?php
session_start();$server = "localhost" ;
$username = "" ;//il tuo username per accedere al db
$password = "" ;//la tua password
$database = "" ;//ed il nome del tuo db$link = mysql_connect($server,$username,$password) or die("Connessione non riuscita: " . mysql_error()); // si collega al db generale
mysql_select_db($database, $link); //sceglie il database
?>
[/PHP]
poi ho creato un pulsante MODIFICA nella pannello dell'user che mi rimandasse al file modifyregister.php così fatto
[PHP]
<form action="modifyclient.php" method="post">
<input type="submit" value="Modifica account">
</form>
[/PHP]e questo è modifyclient.php
[PHP]
<?php
include ("config.php");
include ("basetop.php");
?>Modifica account<br/><br/> <div class="box_data" align="left">
<?php
$query = mysql_query("SELECT * FROM
tid_client
WHERE ID='".$_SESSION["id"]."'")or die("ID errato: " . mysql_error());
$numrows = mysql_num_rows($query);
for($x=0; $x<$numrows; $x++){//Recupero il contenuto di ogni record rovato
$resrow = mysql_fetch_row($query);
$id = $resrow[0];
$_SESSION["palid"] = $resrow[1];
$_SESSION["name"] = $resrow[2];
$_SESSION["surname"] = $resrow[3];
$_SESSION["email"] = $resrow[4];
$_SESSION["address"] = $resrow[5];
//Stampo il risultato
print "account ID: <b>" . $id . "</b><br>";
}
?><form action="modifyregister_client.php" method="post">
<input type="hidden" name="id" value=" <?php echo $_SESSION["id"] ?> ">
<input type="text" name="account" value=" <?php echo $_SESSION["palid"] ?> "> accont PayPal<br/>
<input type="text" name="name" value="<?php echo $_SESSION["name"] ?> "> nome<br/>
<input type="text" name="surname" value=" <?php echo $_SESSION["surname"] ?> "> cognome<br/>
<input type="text" name="email" value=" <?php echo $_SESSION["email"] ?> "> email<br/>
<input type="text" name="address" value=" <?php echo $_SESSION["address"] ?> "> indirizzo<br/>
<p><input type="submit" value="Modifica i tuoi dati"></p>
</form></div>
<?php
include ("basebottom.php");
?>[/PHP]
ed infine modifyregister_client.php
[PHP]
<?php
include ("config.php");$id=trim($_POST['id']); $account=trim($_POST['account']); $name=trim($_POST['name']); $surname=trim($_POST['surname']); $email=trim($_POST['email']); $address=trim($_POST['address']); include ("basetop.php"); $query = "DELETE FROM `tid_client` WHERE CONVERT( `ID` USING utf8 ) = '$id' LIMIT 1 ;
";
$result=mysql_query($query);
$query2 = "INSERT INTO tid_client VALUES('$id','$account','$name','$surname','$email','$address')";
$result=mysql_query($query2);
if (!$result) {
die("Impossibile inserire i dati" . mysql_error());
echo '<br/><form action="enter_client.php" method="post"> <input type="submit" value="Torna al tuo pannello"></form>';
}echo "Dati Inseriti"; echo '<br/><form action="enter_client.php" method="post"> <input type="submit" value="Torna al tuo pannello"></form>'; mysql_close(); include ("basebottom.php");
?>
[/PHP]
Ricordo che a me funge spero che possa servirvi
-
riprovo: a me funziona così:
[PHP]
<?php
session_start();
include ('code/config.php');
$account=$_POST[account];
$pw=$_POST[pw];$punt_db=mysql_connect($host,$user,$psw) or $punt_db="Errore nella connessione al database";
mysql_select_db($db,$punt_db) or die("Impossibile raggiungere il database".$db);
//Eseguo una query nella tabella utenti verificando se esiste l'username con quella password
$query = mysql_query("SELECT * FROMutenti
WHEREaccount
='$account' ANDpw
= '$pw'");
$ok_login = mysql_num_rows($query);
if($ok_login=="1")
{
unset($_SESSION['account']);
unset($_SESSION['pw']);
$_SESSION['account'] = $account;
$_SESSION['pw']= $pw;
echo "<script>
window.location = "enter.php"
</script>";
}
else
{
unset($_SESSION['account']);
unset($_SESSION['pw']);
echo "<script>
window.location = "enter.php"
</script>";
}?>[/PHP]
-
Ottimo ragazzi, tra un pò raccoglieremo le varie versioni funzionanti in modo che se ne posso fruire più facilmente..
-
prima non mi funzionava perchè, non "UNSETTANDO" le variabili di sessione, se all' interno della stessa sessione si faceva il login e poi si voleva entrare con un altro user, questo non era possibile dal momento che la variabile di sistema era già settata e pertanto anche se si entrava con un user erratto (ad esempio non registrato nel DB) per il server era tutto corretto essendo appunto settata la variabile nella pagina "enter".
La soluzione da me proposta prevede comunque il setting e l' unsetting delle variabili ad ogni accesso anche all' interno della stessa sessione.
Spero vi possa essere utile.
ciao a tutti
-
Anch'io ho un problema: ogni nick e pass che immetto mi da la frase di benvenuto. Quale potrebbe essere la soluzione?
Nelle pagine non ho modificto nulla, eccetto i valori del database in config.php...
PS: Avevo già postato un messaggio simile, ma sembra che hanno cancellato...
PPS: Scusate, ho visto adesso che mi hanno fatto un topic a parte...