Pagina 1 din 1

schipt modificare parola

Scris: Lun Mar 21, 2011
de trif
salut, am si eu o mare problema si nu stiu cum sa o rezolv. am gasit codul acesta de modificare de parola a admin-ului:

Cod: Selectaţi tot

function valideaza_parola($parola, $nume='') {
	global $connection;
	$parola = md5($parola);
	$query = "SELECT id, nume FROM utilizatori WHERE parola = '{$parola}' LIMIT 1";
	$result_set = mysql_query($query, $connection);
	confirm_query($result_set);
	if(mysql_num_rows($result_set) == 1) {
		$admin = mysql_fetch_array($result_set);
		redirect_to('acasa.php');
	}
	else {
	   	echo 'nu este nimic';
		}
		}
		function valideaza_schimbare_parola($user, $pv, $pn, $cp) {
	$errors = array();
	//******** verifica daca parola veche este corecta
	$pv = md5($pv);
	$query = "SELECT * FROM utilizatori WHERE nume = '{$nume}'";
	$result_set = run_query($query);
	$result = mysql_fetch_array($result_set);
	if($pv !== $result['parola']) {$errors[] = 'parola veche nu se potriveste';}
	else { //******* verifica daca parola noua are formatul cerut
		if(strlen($pn) < 6) {$errors[] = 'parola noua trebuie sa aiba minim 6 caractere';}
		if(preg_match("/[^a-z\s]/i",$pn) < 1) {$errors[] = 'parola nu poate contine doar litere';}
		if (preg_match("#\s#", $pn)) {$errors[] = 'parola nu poate contine spatii';}
		//******** verifica daca se potrivesc parola noua si confirmarea
		if($pn !== $cp) {$errors[] = 'confirmarea parolei nu se potriveste';}
	}
	return $errors;	
}
function confirm_query($query) {
	if(!$query) {
		die("Eroare " . mysql_error());
	}
}
function run_query($query) {
	global $connection;
	$result_set = mysql_query($query);
	confirm_query($result_set);
	return $result_set;
}
function mysql_prep($value) {
	$magic_quotes_active = get_magic_quotes_gpc();
	$new_enough_php = function_exists('mysql_real_escape_string');
	if ($new_enough_php) {
		if ($magic_quotes_active){
			$value = stripslashes($value);
		}
		$value = mysql_real_escape_string($value);
	}
	else {
		$value = addslashes($value);
	}
	return $value;
}
$message = '';
$disabled = '';
if(isset($_POST['submit'])) {
	$errors = valideaza_schimbare_parola($_POST['user'],$_POST['parola_veche'],$_POST['parola_noua'], $_POST['confirma_parola']);
	if(empty($errors)) {
		$user = mysql_prep($_POST['user']);
		$parola = md5($_POST['parola_noua']);
		$query = "UPDATE useri SET parola = '{$parola}' WHERE user = '{$user}'";
		$result_set = run_query($query);
		if(mysql_affected_rows() == 1) {
			$message = '<p class="ok"> Parola a fost modificata cu succes.</p>';
			$disabled = ' disabled = "disabled" ';
		}
		else {
			$message = '<p class="notok"> Parola nu a fost modificata.</p>';
		}
	}
	else {
		foreach($errors as $error) {
			$message .= '<p class="notok">' . $error . '</p>';
		}
	}
}
si

Cod: Selectaţi tot

 <form action="schimba_parola.php" method="post">
        <table width="400" cellpadding="0" cellspacing="0">
        	<tr><td><label>Administrator:</label></td>
            	<td><input type="text" value="<?php echo $_SESSION['nume']; ?>" name="user" tabindex="5" /></td>
            </tr>
        	<tr><td><label>Parola veche:</label></td>
            	<td><input type="password" name="parola_veche" tabindex="10" /></td>
            </tr>
                <tr><td><label>Parola noua:</label></td>
            	<td><input type="password" name="parola_noua" tabindex="20" /></td>
            </tr>
        	<tr><td><label>Confirmati parola:</label></td>
            	<td><input type="password" name="confirma_parola" tabindex="30" /></td>
            </tr>
        	<tr><td>&nbsp;</td>
            	<td><input type="submit" class="button" name="submit" <?php echo $disabled ;?> tabindex="40" /></td>
            </tr>
        </table>
        </form>
si mi-am prins urechile. faza este ca de eroare nu imi da dar nici nu imi modifica. si mai este o problema, eu bd pt pass este in felul urmator: este parola si pass. parola este pt md5 iar pass este simpla pt recuperare de parola. nu stiu ce are de tot nu merge. si vreau ca atunci cand modific md5 sa se modifice si pass. astept raspuns. cu stima trif

schipt modificare parola

Scris: Lun Mar 21, 2011
de MarPlo
Nu am stat sa studiez tot script-ul, prea mult cod.
Oricum, la o scurta verificare, ca indicatie, in formula SQL pentru UPDATE trebuie adaugata si coloana 'pass' si datele pt. ea.
Cam asa:

Cod: Selectaţi tot

$query = "UPDATE useri SET parola='$parola', pass='". strip_tags($_POST['parola_noua']). "'  WHERE user = '$user'";
- Nu stiu daca mai trebuie si alte modificari, probabil.

schipt modificare parola

Scris: Mar Mar 22, 2011
de trif
salut, mersi pt raspuns. am facut in alt fel dar m-am impotmolit si nu mai stiu ce sa fac. uite codul:

Cod: Selectaţi tot

<?php
$utilizator=mysql_real_escape_string($_GET['id']);
// Se verifica daca sunt date de la formular
if (!isset($_GET['id'])){
// Se preiau datele
$id=$_GET['id'];
$nume=$_POST['nume'];
$parola=$_POST['parola'];
$pass=md5($pass);
// Se face Update
$cerereSQL = "UPDATE `utilizatori` SET `nume`='".$nume."', `parola`='".md5($_POST['parola'])."', `pass`='".$pass."' WHERE `id`='".$id."' LIMIT 1";
mysql_query($cerereSQL) or die("NU se poate adauga!");
}
// Se face Select-ul pt. afisarea lor
$cerereSQL = 'SELECT * FROM utilizatori WHERE id="'.$_GET['id'].'"'; 
$rezultat = mysql_query($cerereSQL);
$num=mysql_num_rows($rezultat);
if ( $num <> 0 )
{
  $rand=mysql_fetch_array($rezultat);
  print '<form action="schimba_parola.php?id="'.$_GET['id'].'"" method="post">
Nume: <br><input name="nume" type="text" value="'.$rand['nume'].'" > <br>
Parola VECHE: <br><input name="parola_veche"  type="password" class="textfield" id="parola_veche"><br>
Parola NOUA: <br><input name="parola_noua" type="password" class="textfield" id="parola_noua" /><br>
Confirma parola: <br><input name="cparola" type="password" class="textfield" id="cparola" /><br><br>
<div align="left"><input type="Submit" value="Salvare"> </div>
</form>'; 
}  
?> 
. ceea ce vreau este: ca in pag asta sa pot schimba numele de admin si parola, si la parola sa introduca pe cea veche si dupaia pe cea noua iar daca este corecta parola cea veche numai atunci sa o schimbe cu cea noua. dar problema mea este si nu stiu cum sa fac este urmatoarea: in bd am 2 campuri unul parola si unul pass si in parola se introduce parola criptata in md5-ul si in pass parola necriptata, si nu stiu cum sa fac ca atunci cand verific sa imi verifice in amandoua si cand introduce sau cand face update sa le faca in amandoua. sper ca ati inteles. va multumesc.

schipt modificare parola

Scris: Mar Mar 22, 2011
de MarPlo
Inainte de a face UPDATE, sa faci un SELECT.
Verifici daca parola veche este aceeasi cu cea returnata de SELECT, daca aceasta verificare este adevarata, faci UPDATE, fara md5() la 'pass'.

schipt modificare parola

Scris: Joi Mar 24, 2011
de trif
salut, am facut selectul dar imi da eroarea asta: Warning: mysql_num_rows() expects parameter 1 to be resource, null given in...

Cod: Selectaţi tot

 <?php
$SQL = 'SELECT * FROM utilizatori WHERE id="'.$_GET['id'].'"'; 
$rezultat = mysql_query($SQL);
$nr=mysql_num_rows($resultat);
if ( $nr <> 0 )
{
  $rand1=mysql_fetch_array($resultat); 
  if ($parola_veche == $rand['nume']){
$utilizator=mysql_real_escape_string($_GET['id']);
// Se verifica daca sunt date de la formular
if (!isset($_GET['id'])){
// Se preiau datele
$id=$_GET['id'];
$nume=$_POST['nume'];
$parola_veche=$_POST['parola_veche'];
$parola_noua=$_POST['parola_noua'];
$cparola = md5($pass);
$cparola = clean($_POST['cparola']);
// Se face Update
$cerereSQL = "UPDATE utilizatori SET nume='".$nume."', parola_noua='".md5($_POST['parola_noua'])."', pass='".$cparola."' WHERE id='".$id."' LIMIT 1";
mysql_query($cerereSQL) or die("NU se poate adauga!");
}
}
}
// Se face Select-ul pt. afisarea lor
$cerereSQL = 'SELECT * FROM utilizatori WHERE id="'.$_GET['id'].'"'; 
$rezultat = mysql_query($cerereSQL);
$num=mysql_num_rows($rezultat);
if ( $num <> 0 )
{
  $rand=mysql_fetch_array($rezultat);
  print '<form action="schimba_parola.php?id="'.$_GET['id'].'"" method="post">
Nume: <br><input name="nume" type="text" value="'.$rand['nume'].'" > <br>
Parola VECHE: <br><input name="parola_veche" type="password" class="textfield" id="parola_veche"><br>
Parola NOUA: <br><input name="parola_noua" type="password" class="textfield" id="parola_noua" /><br>
Confirma parola: <br><input name="cparola" type="password" class="textfield" id="cparola" /><br><br>
<div align="left"><input type="Submit" value="Salvare"> </div>
</form>'; 
}  
?>
. nu stiu, cred ca nu am facut selectul bine. nu stiu ce sa ii fac. va multumesc.

schipt modificare parola

Scris: Joi Mar 24, 2011
de MarPlo
Incearca SELECT-ul asa:

Cod: Selectaţi tot

$SQL = "SELECT * FROM utilizatori WHERE id=".$_GET['id'];
- Daca 'id' e un numar, valoarea lui nu trebuie adaugata intre ghilimele.
E singura cauza ce pare a fi.

In plus la preluare date din formular ai !isset($_GET['id']). Trebuie fara "!", if (isset($_GET['id']))

schipt modificare parola

Scris: Joi Mar 24, 2011
de trif
salut, am facut cum ai zis u si imi da Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in
uite codul

Cod: Selectaţi tot

	           <?php
$SQL = "SELECT * FROM utilizatori WHERE id=".$_GET['id'];
$resultat = mysql_query($SQL);
$nr=mysql_num_rows($resultat);
if ( $nr <> 0 )
{
  $rand1=mysql_fetch_array($resultat); 
  if ($parola_veche == $rand1['pass']){
$utilizator=mysql_real_escape_string($_GET['id']);
// Se verifica daca sunt date de la formular
if (isset($_GET['id'])){
// Se preiau datele
$id=$_GET['id'];
$nume=$_POST['nume'];
$parola_veche=$_POST['parola_veche'];
$parola_noua=$_POST['parola_noua'];
$pass = $_POST['cparola'];
// Se face Update
$cerereSQL = "UPDATE utilizatori SET nume='".$nume."', parola='".md5($_POST['parola_noua'])."', pass='".$cparola."' WHERE id='".$id."' LIMIT 1";
mysql_query($cerereSQL) or die("NU se poate adauga!");
}
}
}
// Se face Select-ul pt. afisarea lor
$cerereSQL = 'SELECT * FROM utilizatori WHERE id="'.$_GET['id'].'"'; 
$rezultat = mysql_query($cerereSQL);
$num=mysql_num_rows($rezultat);
if ( $num <> 0 )
{
  $rand=mysql_fetch_array($rezultat);
  print '<form action="schimba_parola.php?id="'.$_GET['id'].'"" method="post">
Nume: <br><input name="nume" type="text" value="'.$rand['nume'].'" > <br>
Parola VECHE: <br><input name="parola_veche" type="password" class="textfield" id="parola_veche"><br>
Parola NOUA: <br><input name="parola_noua" type="password" class="textfield" id="parola_noua" /><br>
Confirma parola: <br><input name="cparola" type="password" class="textfield" id="cparola" /><br><br>
<div align="left"><input type="Submit" value="Salvare"> </div>
</form>'; 
}  
?>
si eroarea este la $nr=mysql_num_rows($resultat); din ce cauza? multumesc.

schipt modificare parola

Scris: Joi Mar 24, 2011
de MarPlo
Cauza banuesc ca este $_GET['id'], ori nu are valoare, ori ce contine nu e in baza de date
Cu
echo $SQL;
poti verifica ce contine comanda pt. mysql
De asemenea, poti vedea ce eroare returneaza mysql, cu

Cod: Selectaţi tot

// ...
$resultat = mysql_query($SQL);
if (mysql_errno()) {
    echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
// ...  

schipt modificare parola

Scris: Joi Mar 24, 2011
de MarPlo
Cum am mai scris, cauza poate fi valoarea lui $_GET['id'], ori nu are valoare, ori ce contine nu e in baza de date
Cu:
echo $SQL;
poti verifica ce contine comanda pt. mysql, daca id=cu_ceva
Scuze, alt raspuns mai bun nu am, query-ul e destul de simplu ca sa arate ca asta ar fi cauza. Sau de oboseala nu-mi dau seama.

schipt modificare parola

Scris: Vin Mar 25, 2011
de trif
am rezolvat, am pus un IF

Cod: Selectaţi tot

if (isset($_GET['id']) && isset($_POST['nume'])) {
si dupaia update. si merge. mersi oricum!