if Abfrage funktioniert nicht

Gray

Erfahrenes Mitglied
Bei der folgenden Abfrage klappt das abfragen der länge nicht, er meint immer das der String länger als 6 Zeichen wäre, auch wenn ers nicht ist.

Code:
if ((!$pw) || (strlen($pw) < (6))){

	echo "<p align=center>";
	if(!pw){ echo "Bitte geben Sie ein Passwort an.";
	}elseif(strlen($pw) < (6)){ echo "Ihr Passwort muss aus mindestens 6 Zeichen bestehen.";}
	echo "</p>";
}else{
 
Gray hat gesagt.:
Bei der folgenden Abfrage klappt das abfragen der länge nicht, er meint immer das der String länger als 6 Zeichen wäre, auch wenn ers nicht ist.

Den Fehler finde ich auch nicht... aber den Code kannst du kürzen:
Code:
if(!pw){ echo "<p align=center>Bitte geben Sie ein Passwort an.</p>";
}elseif(strlen($pw) < 6){ echo "<p align=center>Ihr Passwort muss aus mindestens 6 Zeichen bestehen.</p>";}
}else{

'PS: jetzt mit lama's änderung, in der hoffnung dass sie stimmt ;)
 
Außerdem, warum so kompliziert? Versuch's doch mal so:
PHP:
if(!pw) 
{
  echo "<p align=center>";
  echo "Bitte geben Sie ein Passwort an.";
  echo "</p>";
}
elseif(strlen($pw) < 6)
{ 
  echo "<p align=center>";
  echo "Ihr Passwort muss aus mindestens 6 Zeichen bestehen.";
  echo "</p>";
}
 
Leider klappts mit keiner von den lösungen, auch nicht mit der vereinfachten form (hatte ich schon probiert)
 
das !$pw ist überflüssig, da die strlen()-bediung das mit einschliesst. Wenn es nicht vorhanden ist, ist die Länge zwangsweise < 6.

Somit würde eine Beindung reichen.
Aber lass dir doch mal $pw mit var_dump() ausgeben, dann siehst du den Inhalt auch mla genau so wieder PHP-Parser den Inhalt "sieht", also beispielsweise so:

PHP:
if( strlen($pw) < 6 )
      echo 'Passwort zu kurz';
else
      var_dump($pw);
 
@redlama: Da würde ich dann dennoch var_dump() empfehlen, da sieht man mehr ;)

Aber da fällt mir ein, woher kommt den $pw? Aus nem Formular? Wenn ja, nicht das du vergessen hast über die Superglobalen Arrays $_GET bzw $_POST (oder auch $_REQUEST, welches Get und Post zusammenfasst) zuzugreifen statt über die evtl. nicht aktivierte register_globals Mehtode....
 
Ben Ben hat gesagt.:
Aber da fällt mir ein, woher kommt den $pw? Aus nem Formular? Wenn ja, nicht das du vergessen hast über die Superglobalen Arrays $_GET bzw $_POST (oder auch $_REQUEST, welches Get und Post zusammenfasst) zuzugreifen statt über die evtl. nicht aktivierte register_globals Mehtode....
Genau darauf wollte ich hinaus! ^^

redlama :suspekt:
 
$pw ist tatsächlich leer, aber keine ahnung warum, hier mal der komplette Quelltext:
(Register Globals ist aktiviert)
Code:
<?php
include "../kontrolle.php";
?>
<html>
<head>
<link href="../include/css.css" rel="stylesheet" type="text/css">
<title>Zugangsdaten</title>
<script language="JavaScript">
<!--
function closeIt()
{
	close();
}
//-->
</script>

</head>
<body>

<?php
    require('../include/globals.inc');

    $db = mysql_pconnect($server, $user, $passwort)	or die(mysql_error($db));
		mysql_select_db($datenbank, $db) or die(mysql_error($db));

if (isset($speichern)) {
if ((!$pw) || (strlen($pw) < 6)){

		echo "<p align=center>";
		if(!pw){ echo "Bitte geben Sie ein Passwort an.";
		}elseif(strlen($pw) < 6){ echo "Ihr Passwort muss aus mindestens 6 Zeichen bestehen.";}
		echo "</p>";

}else{


		$sql_update = "UPDATE user SET pw='$pw' "." WHERE user_id = '$uid'";
		$result = mysql_query($sql_update) or die (mysql_error($db));
		echo "<p align=center>Ihre Änderungen wurden erfolgreich übernommen.</p>";
}}
		$sql_query = "SELECT * FROM user WHERE user_id='$uid'";
		$result = mysql_query($sql_query) or die (mysql_error($db));
		$num = mysql_num_rows($result);
		?>

<form enctype='multipart/form-data' action='benutzer_passwort.php?uid=<?php echo $uid ?>&useraccount=<?php echo $useraccount ?>&session=<?php echo $session ?>' method='post' name="domain">
<input type='hidden' name='uid' value='<?php echo $uid; ?>'>
<input type='hidden' name='useraccount' value='<?php echo $useraccount; ?>'>
<input type='hidden' name='session' value='<?php echo $session ?>'>
<?php

            while ($row = mysql_fetch_array($result)) {

?>
<table border=0 align=center width=90% cellspacing=0 cellpadding=0>
			<tr>
            <td valign=middle>
            <p>Passwort</p></td>
            <td valign=middle>
            <p><input type=text name="pw" Value="<?php echo $row['pw'] ?>" class="abox" ONFOCUS="this.style.backgroundColor='#FFD700'" ONBLUR="this.style.backgroundColor=''"></p></td>
            </tr>
            <tr>
            <td>
            <p><input type=submit name="speichern" value="speichern" class="abox" style="width:100px;"></p>
            </td>
            <td>
	<p><input type="button" onClick="closeIt()" value="Fenster schließen" class="abox"></p>
            </td>
            </tr>
            </table>
<?php } ?>
</form>
</body>
</html>
 
Zuletzt bearbeitet:
Zurück