[PHP | MySQL] Array vergleichen

Claas M

Erfahrenes Mitglied
N'Abend.

Ich habe mal eine Frage.
Ist es möglich ein Ergebnis einer Datanbankabfrage mit einer Variablen zu vergleichen?

elseif($zeile[1] = !$nick)

Ich brauche das für ein Passwortscript , bei dem ich, wenn ich mein Passwort vergessen habe, meinen Namen eingebe, der dann mit dem Ergebnis aus der DB verglichen werden soll.

Naja ich habe das bisher noch nicht hinbekommen und hoffe, dass mir einer von euch helfen kann ;)

So long...
 
Eine solche Abfrage könnte wie folgt aussehen:
PHP:
$query = "
	SELECT
	        `spalte`
	  FROM
	        `tabelle`
	  WHERE
	        `passwort` = '" . $passwort . "'
	";
Achja, ich hoffe, dass die Paswörter auch Sicherheitsgründen kodiert sind.
 
Danke für Deine Antwort aber die Batenbankabfrage läuft einwandfrei nur ich weiß nicht ob, und falls ja, wie ich die beiden Variablen vergeleiche.

Also im Klartext: Ich will den Wert des Arrays mit dem Wert der Eingabe vergleichen, damit dann, sofern der Name in der DB steht, eine Email geschickt wird und falls nicht, keine.
 
Und, hast Du es denn schonmal so probiert? Schick mal den Code von Dir. Dann können wir ja mal schauen, wo's hakt.
 
Womit codier ich denn !? =)
Ich weiss das nich.. ich denke mal er schreibts dann in eine Hexadezimalzahl oder so ähnlich.. oder gleich 64bit Verschlüsselung?

Wie mach ich sowas?
 
Eh der Vergleichscode steht oben aber moment...

PHP:
<?php

include("mysql.php");
if(isset($new)){
$fehler = "Folgende Fehler traten auf: <br>";
$usertest = mysql_query("SELECT * FROM $usertable WHERE LCASE(name) = LCASE('$nick')");
if(!isset($fehler2))
	{
		//Legt die laenge der Passwortes fest
		$laenge = "6";
		//Legt die Zeichen fest, aus welchen das PW bestehen darf
		$zeichen = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
		//Erstellt eine leere Variable für das Passwort
		$pw = "";
		//Erzeugt ein zufälliges Passwort aus $laenge und $zeichen
		mt_srand ((double) microtime() * 1000000);

		for ($i = 0; $i < $laenge; $i++)
			{
				$randompw .= $zeichen{mt_rand (0,strlen($zeichen))};
			}
			$passw = md5(randompw);
		//hier kommt die mysql Abfrage

		$select = mysql_query("SELECT name FROM $usertable");
		$reihen = mysql_num_rows($select);
		$result = mysql_query("SELECT name FROM $usertable");
	
		if($zeile[1] = $nick)
			{
				$new = "UPDATE $usertable SET pw = '$passw' WHERE NAME = '$nick';";
				mysql_query($new) OR die(mysql_error());
				echo "<br>Ihr Passwort wurde an die angegebene Email gesandt.";
				echo "<meta http-equiv='refresh' content='3; URL=index.php'>";
				mail("$zeile[4]","Passort reset. Bitte ändern Sie es","$randompw","From: webmaster@nuss-clan.de");

				exit;
			}
			elseif($zeile[1] = !$nick)
						{
				echo "Passwort konnte nicht resettet werden";
			};
	};
};
echo"<center>
<form action='pwreset.php' method='post'>
<table>
	<tr>
		<td width='400'>
			Gib hier bitte den Namen an, mit dem Du registriert bist:
		</td>
		<td>
			<input type='text' name='nick' value='$nick' size='20' onFocus='if (this.value == 'Name') this.value=''' style='background-color: #FF9900; border: 1px solid #FFFFFF; font-family: Verdana; font-size: 10px; color: #FFFFFF'>
		</td>
	</tr>
	<tr>
		<td colspan='3'>
			<center>
				<input type='hidden' name='new' value='$new'>
				<input type='submit' name='new' value='Anmelden'  style='background-color: #FF9900; border: 1px solid #FFFFFF; color: #CCCCCC; width: 100; height: 20'>
			</center>
		</td>				
	</tr>
</table>
</form>";
?>

Wie schon gesagt, möchte ich, dass der eingegebene Name mit dem aus der DB verglichen wird, damit kein unnützer 'Spam' entsteht.
 
Also, was mir spontan auffällt, ist zum einen, dass es die Variable $zeile eigentlich gar nicht gibt! Du hast wohl noch sowas wie
PHP:
$zeile = mysql_fetch_assoc($result);
vergessen. Und ausserdem, eins der Grundlegenden Dinge im Programmieren:

Wenn Du zwei Werte vergleichen willst, dann geht das mit
PHP:
if($wert1 == $wert2) {
}
  
//oder eben

if($wert1 != $wert2) {
}

Deine if-Zeile mit nur einem Gleichheitszeichen ergibt immer true!
 
Original geschrieben von jenno
Also, was mir spontan auffällt, ist zum einen, dass es die Variable $zeile eigentlich gar nicht gibt! Du hast wohl noch sowas wie
PHP:
$zeile = mysql_fetch_assoc($result);

vergessen.

Weiß ich nicht. Aber das Script an sich funktioniert soweit aber danke.
 
Klar, wenn Du

PHP:
if($zeile[1] = $nick)  {
..
}

schreibst, kommt auch kein Fehler. Das gibt Dir einfach immer true zurück. Egal was in $zeile[1] und in $nick steht.

Und ausserdem hast Du doch geschrieben, dass Du es noch nicht hinbekommen hast. Wieso sagst Du dann, dass das Skript soweit funktioniert?

Oder klappts jetzt so wie Du es brauchst? Dann ist der Code aber nicht der den Du gepostet hast!
 
Wieso sagst Du dann, dass das Skript soweit funktioniert?

Sorry da habe ich mich wohl falsch ausgedrückt. :D Der Vergleich funktioniert nicht aber das ändern der Daten usw, das Läuft.

Soll ich dann zwei Gleichheitszeichen nehmen?
 
Zurück