login pdo [RISOLTO]

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

login pdo [RISOLTO]

Messaggio da treled »

Salve, è corretto usare questo login scritto cosi:

non mi interessa la criptazione della password essendo che ho solo 100 mb e poi questo login lo uso solo io..

ecco il codice:

idee? e vulnerabile ??

[code2=php]<?php
include_once("../config.php");
include_once("inc.php");
?>
<?php
if (isset($_POST['submit']))
{
if(empty($_POST["username"]))
{
$message = "Non inserito utente";
}elseif(empty($_POST["password"]))
{
$message= "Non inserito la password";
}else
{

$username = $_POST["username"];
$password = $_POST["password"];

$sql = "select COUNT(*) from users where username=:username and password=:password LIMIT 1";

$stmt = $pdo->prepare($sql);
$stmt->execute(array(
'username' => $username,
'password' => $password));




if($stmt->fetchColumn() == 0)
{

$message = "No records found";

}
else{


$sql = "select * from users where username=:username and password=:password LIMIT 1";

$stmt = $pdo->prepare($sql);
$stmt->execute(array(
'username' => $username,
'password' => $password));

session_start();

$rows = $stmt->fetchAll();

foreach($rows as $row)
{
$_SESSION['name']=$row["username"];
$_SESSION['login']=true;
$_SESSION['ruolo'] = $row["ruolo"];
}
header("location: index.php");
}
}

}

?>
<!DOCTYPE html>
<html>
<head>
</head>
<style>
.tableheader {
background-color: #95BEE6;
color:white;
font-weight:bold;
}
.tablerow {
background-color: #A7D6F1;
color:white;
}
.message {
color: #FF0000;
font-weight: bold;
text-align: center;
width: 100%;
}</style>
<body>
<form name="frmUser" method="post" action="login.php">
<div class="message"><?php if(isset($message)) { echo $message; } ?></div>
<table border="0" cellpadding="10" cellspacing="1" width="500" align="center">
<tr class="tableheader">
<td align="center" colspan="2">Login</td>
</tr>
<tr class="tablerow">
<td align="right">Username</td>
<td><input type="text" name="username"></td>
</tr>
<tr class="tablerow">
<td align="right">Password</td>
<td><input type="password" name="password"></td>
</tr>
<tr class="tableheader">
<td align="center" colspan="2">
<input type="submit" name="submit" value="Submit"></td>
</tr>
</table>
</form>[/code2]
Ultima modifica di treled il lunedì 23 giugno 2014, 22:15, modificato 1 volta in totale.
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: login pdo

Messaggio da treled »

ciao ho ricorretto la parte del for ed e diventato:

Codice: Seleziona tutto

$row = $stmt->fetch(PDO::FETCH_ASSOC);
$_SESSION['name']=$row["username"];
$_SESSION['login']=true;     
$_SESSION['ruolo'] = $row["ruolo"];
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: login pdo

Messaggio da Zoff »

Perché fai due volte la query?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: login pdo

Messaggio da treled »

perché se no non recupero i dati dal db in questa parte:

Codice: Seleziona tutto

	$row = $stmt->fetch(PDO::FETCH_ASSOC);
					
            $_SESSION['name']=$row["username"];
            $_SESSION['login']=true;     
            $_SESSION['ruolo'] = $row["ruolo"];
come mai?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: login pdo

Messaggio da Zoff »

Scusa ma non fai la stessa query cambiando solo le colonne lette?
Puoi recuperare i dati con la prima
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: login pdo

Messaggio da treled »

no perché la prima ha:
$sql = "select COUNT(*)

e che mi serve per vedere se c'è o non c'è il dato..

tu come faresti perché e delle ore , giorni, mesi , che cerco una cosa funzionante da prendere spunto.. anche se ho visto i manuali su internet e poi tutti scrivono codice errato.

tu come fai?

grazie mille e buona serata.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: login pdo

Messaggio da Zoff »

Perché il login non puoi farlo senza count?

Se tu fai solo la seconda query e il fetch ti dà un array non vuoto, non sei già certo che il login sia valido?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: login pdo

Messaggio da treled »

dimmi che era cosi:

Codice: Seleziona tutto

<?php 
if(isset($_POST['submit'])) 
{ 
 if(empty($_POST["username"]))
 {
  $message = "Non inserito utente";
 }elseif(empty($_POST["password"]))
 {
   $message= "Non inserito la password";
 }else
 {
  
	$username = $_POST["username"];
	$password = $_POST["password"];
	
    $sql = "select  *  from users where username=:username and password=:password LIMIT 1";
    
    $stmt = $pdo->prepare($sql);
    $stmt->execute(array(
            'username'  => $username,
            'password'    => $password));
        



    $num = $stmt->rowCount();

	if($num>0){ 
			
			session_start();
        
			$row = $stmt->fetch(PDO::FETCH_ASSOC);
					
            $_SESSION['name']=$row["username"];
            $_SESSION['login']=true;     
            $_SESSION['ruolo'] = $row["ruolo"];

            header("location: index.php");    
        }
		else
		{
			$message =  "No records found";
		}
    }
   
}
  
?>
il il rowCount();

perché facendo le prove funziona..

mi dici se ora e giusto?.

grazie mille per il supporto..
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: login pdo

Messaggio da Zoff »

In linea di massima potrebbe esserlo ma il funzionamento di rowCount non è garantito per le query SELECT.
Con MySQL funziona, per cui potresti anche lasciarlo così.

Diversamente fai il fetch indistintamente e poi controlli il suo risultato.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: login pdo

Messaggio da treled »

ok, si uso mysql perché ho deciso di usare il dominio dove ho 2gb di mysql e lascio perdere gli host economici...

che voi dire qui:
Diversamente fai il fetch indistintamente e poi controlli il suo risultato.

non riesco a capire cosa vuol dire : indistintamente .

Scusa, ma ho problemi di linguaggio perché ho cominciato tardi a parlare (11 anni)..

se voi mi poi spiegarmi con un esempio.?

grazie mille e buona giornata.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: login pdo

Messaggio da Zoff »

Indisitintamente, nel senso di "senza fare controlli", cioé eviti

Codice: Seleziona tutto

if($num>0)
e fai direttamente

Codice: Seleziona tutto

$row = $stmt->fetch(PDO::FETCH_ASSOC);
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: login pdo

Messaggio da treled »

ok., ma mi serviva per far stampare per l'informazione all'utente :"non ci sono dati".

quindi ora va bene?..

grazie mille.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: login pdo

Messaggio da Zoff »

Perché non lo puoi fare comunque controllato il risultato della fetch()?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: login pdo

Messaggio da treled »

dicevi cosi?

Codice: Seleziona tutto

<?php
	session_start();
    if(isset($_POST['username'], $_POST['password'])){
        require 'core/connect.php';
		$query = dbConnect()->prepare("SELECT username, password FROM users WHERE username=:username AND password=:password");
        $query->bindParam(':username', $_POST['username']);
        $query->bindParam(':password', $_POST['password']);
        $query->execute();

        if($row = $query->fetch()){
            $_SESSION['username'] = $row['username'];
            header("Location: index.php");
        }else
		{	
			echo '404';
		}
    }
?><h1>Login</h1>
<form method="POST">
    <input type="text" name="username"><br />
    <input type="password" name="password"><br />
    <input type="submit">
</form>
ho cancellato tutto il sito e ora sto imparando pdo con la progettazione di una'applicazione più facile e utile.

vedi e dimmi se va bene..

grazie mille.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: login pdo

Messaggio da Zoff »

Sorvolando sulla mancanza di gran parte dell'html indispensabile per generare una pagina corretta sì.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: login pdo

Messaggio da treled »

Zoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4604828#p4604828][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Sorvolando sulla mancanza di gran parte dell'html indispensabile per generare una pagina corretta sì.
scusa, ma non capisco ...la frase..

dicevo il fetch va bene cosi o no ?

poi l'html lo sistemo appena faccio un login a modo.

grazie mille.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: login pdo

Messaggio da Zoff »

Si va bene
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: login pdo

Messaggio da treled »

grazie mille.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti