Problem mit IF und Funktionen in PHP und Java

Hallo Leute, ich muss zugeben das ich leider nicht die große Ahnung von PHP bzw Javascript habe. Deshalb meine Frage wie ich zwei Funktionen mit einer IF Funktion verknüpfe…

In diesem Script, welches ohne die IF Abfrage wunderbar funktioniert, wird ein Passwort das aus einem Formular stammt genommen, verschlüsselt und wieder ausgegeben.

Ich möchte jetzt erreichen das, wenn das Passwortfeld leer ist eine Fehlermeldung ausgegeben wird und soetwas wie ein prompt Fenster aufgeht in das man das Passwort eintragen kann. Danach soll es weiter zur Verschlüsselung gehen.
Problem ist nur das promt ein Javascriptbefehl ist und ich nicht weiß wie ich das korrekt in meine IF abfrage unter PHP einfüge.
Vielleicht gibt es ja soetwas ähnliches wie den Prompt Befehl für PHP???
Ich habe die gedachte Do Schleife in grün eingefügt und hoffe das Ihr mir dabei helfen könnt (Die Do Schleife funzt so natürlich noch nicht, sie tut aber als Test, überhaupt erstmal ne Schleife in die IF Abfrage zu bekommen, ihren Dienst.

<?php $pwd = $_POST[pwd]; // Variable aus Formular if($pwd == "") [color=#00BF00]{ do { //Schleife solange kein Passwort eingegeben wird! $pwd=prompt("Bitte geben Sie ein Passwort ein!",0); } while ($pwd=="") //Wenn $pwd!= kommt Testaufruf alert alert("username"); //TestFenster }[/color] else { // Das Passwort "$pwd" wird verschlüsselt und in der // Variable "$passwd" gespeichert. $passwd=crypt($pwd,genSalt()); function genSalt(){ // *** zwei zufällige Zeichen generieren *** srand((double)microtime()*1000000); $random=rand(); $rand64="./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; $salt=substr($rand64,$random%64,1).substr($rand64,($random/64)%64,1); $salt=substr($salt,0,2); return($salt); }} ?>

Achja und noch etwas …

Wenn ich eine Funktion ausführe, wie kann man dann einen Zeichenumbruch erreichen?
Ich habe es mit /n /r
versucht , aber das scheint innerhalb dieser Funktion nicht zu funktionieren.

Beispiel:

<?php $php_var="oh" ?>
<?php $php_var1="klasse" ?>
<?php $php_var2="Fussball" ?>

<script>
<!--
function ups()
{
js_var="<?php echo $php_var;?>";
js_var1="<?php echo $php_var1;?>";
js_var2="<?php echo $php_var2;?>";
document.write(js_var+" "+js_var1+" "+js_var2);
}
//-->
</script>

Ausgabe ist hier:
Oh klasse Fussball

Soll aber:
Oh
klasse
Fussball

Ich danke Euch schonmal für Eure Hilfe
Viele Grüße
Fly

Das ist ja eher was für den PHP-Bereich des Forums hier.

Die do-while-Schleife wird dir hier nicht viel bringen, was du
machen mußt/kannst, ist das Formular mit den bisherigen
Einträgen wieder ausgeben, einschließlich der Warnung für
fehlende Angaben, so daß der Nutzer das dann erneut
losschicken kann.

Bei zweiten Problem mit dem Zeilenumbruch kommt es drauf
an, was das Ausgabeformat ist. Bei text/plain oder eben dem
Quelltext etwa einer HTML- oder XML-Seite sollte es reichen,
wenn du schreibst: echo “irgendwas \n”;
In (X)HTML kommt es bekanntlich darauf an, wo man was
hinschreibt, im Element pre etwa reicht es auch aus, auch kann
man mittels CSS festlegen, ob das ausreicht oder nicht.
Ansonsten braucht man ein spezielles Element in (X)HTML,
für den Zeilenumbruch etwa das Element br.
Setzt man alles in ein Blockelement wie p, gibt es am Ende auch
einen Zeilenumbruch.

was ist denn if { do { } else { } } ???

Gibt es in PHP überhaupt do oO
Wenn dann wohl
if (BLA) {
KEIN DO HIER! Gibt es nichtmal?!.,-
}
else {
}

Klar gibt es das auch in PHP - warum nicht?
Bringt hier aber nicht viel, denn wo soll da eine neue
Eingabe innerhalb der Schleife herkommen? ;o)

de2.php.net/manual/de/control-st … .while.php

Schonmal danke für die schnellen Antworten.

Ok die DO WHILE Schleife muss es nicht sein, aber um die IF-Abfrage komme ich wohl nicht herum, weil die Variable $pwd nur Verarbeitet und an die Variable $passwd weitergegeben werden soll wenn das Passwortfeld im Formular ausgefüllt wurde.

Ich möchte, das durch die IF-Abfrage zusätzlich eine Fehlermeldung (alert-Meldung) ausgegeben wird wenn das Feld beim absenden leer war.
Erst dann soll er das Formular neu laden und die Eingabe erneut ermöglichen.

Habe mal den Tip aufgegriffen und das so realisiert.

Felhlt fürs erste die Fehlermeldung, und da liegt eines meiner Probleme…
Ich kenne keinen Befehl für PHP ein solches Fenster zu öffnen.
Nur :
MsgBox/Java Alert,Prompt,Confirm , und das ist leider alles Java und lässt sich nicht so ohne weiteres in PHP einfügen.

Vielleicht stehe ich ja mal wieder im Wald und sehe die Bäume nicht.

Thx Fly

Dann prüfe doch mit JS, ob das input Feld ausgefüllt wurde:

<input type="password" id="pwd" name="pwd"> <input type="submit" onClick="if(document.getElementById('pwd').value == '') alert('Bitte ein Passwort eingeben!'); return false;">

btw. Java != JavaScript

Moin,

also wenn ich das richtig sehe, möchtest du folgendes erreichen:

<?php
   if(empty($pwd)) { // Fehlermeldung, und Nutzer soll das Formular neu ausfüllen. }
   else { // weitere Benutzung von pwd. }
?>

Sehe ich das richtig? Wenn ja, ist die Lösung nicht sonderlich schwer. Du musst nur dem Formular sagen, dass es an sich selbst geschickt werden soll und je nach dem ob $pwd leer ist oder nicht, nimmst du eine zusätzliche Variable ($fehlermeldung) und weist der einen String zu. Bei dem Formular baust du dann nur noch eine Abfrage wie:

<?php if(isset($fehlermeldung)) { echo $fehlermeldung; } ?>

ein und so wird dann falls $pwd nicht eingegeben wurde, ein Fehler ausgegeben.

MfG
myPages

[quote=“myPages”]Moin,

also wenn ich das richtig sehe, möchtest du folgendes erreichen:

<?php
   if(empty($pwd)) { // Fehlermeldung, und Nutzer soll das Formular neu ausfüllen. }
   else { // weitere Benutzung von pwd. }
?>

Sehe ich das richtig? [/quote]
Ja genau so war es gemeint, allerdings sollte die Fehlermeldung nach Möglichkeit nicht mit per Echo, sondern wie es Hummer beschrieben hat, per alert Fehlermeldung erfolgen.[quote=“Hummer”]<input type="password" id="pwd" name="pwd"> <input type="submit" onClick="if(document.getElementById('pwd').value == '') alert('Bitte ein Passwort eingeben!'); return false;">[/quote] Nach Bestätigung des OK Buttons des Fehlermedungsfensters soll das Formular neu aufgerufen werden und die erneute Eingabe des Passworts ermöglichen.

Leider kenne ich mich mit Javascript nicht aus und kann diesen nicht anpassen, denn bei diesem Beispielscript bleibt die Seite nach Bestätigung des Buttons vor Ort hängen.

Aus diesem Grund habe ich es erstmal so probiert:

<?php
$pwd = $_POST[pwd];              // Variablen im Formular
$username = $_POST[username];

if (empty($pwd)) {
    $fehlermeldung="Bitte PW eingeben";
    echo $fehlermeldung;
}
else
{
    // Das Passwort "$pwd" wird verschlüsselt und in der
    // Variable "$passwd" gespeichert.
Line 29    $passwd=crypt($pwd,genSalt());
 
    function genSalt(){
      // *** zwei zufällige Zeichen generieren ***
      srand((double)microtime()*1000000);
      $random=rand();
       $rand64="./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
      $salt=substr($rand64,$random%64,1).substr($rand64,($random/64)%64,1);
      $salt=substr($salt,0,2);
      return($salt);
    } }
?>

Beim Testen dann folgende Fehlermeldung:Fatal error: Call to undefined function gensalt() in C:\xampp\htdocs\login\crypt2.php on line 29

Ich habe die Line 29 oben mal kenntlich gemacht. Kann mir einer sagen was ich da falsch gemacht habe?
Lasse ich die If Abfrage weg funktioniert die Verschlüsselung ohne Probleme.

Gruß und thx Fly

Schreib mal die Funktion genSalt(); über die Variable, wo der Script ausgeführt wird (und nicht unter).

das ist unter PHP leider egal… jedenfalls schreib ich meine Funktionen immer ganz oben :wink:

GELÖST :p , bin heute selbst drauf gekommen, und habe dann gesehen, dass DragonWork ebenfalls die richtige Idee hatte. PHP arbeitet scheinbar zumindest bei der Abarbeitung von IF Abragen strickt von oben nach unten ab.
Die Fehlermeldung besagte das die Funktion genSalt() nicht bekannt war! Nach Verschieben der Funktion über die Abfrage funzte es alles Fehlerfrei!

Hier nochmal die funktionierende Lösung:

[code]function genSalt(){
// *** zwei zufällige Zeichen generieren ***
srand((double)microtime()*1000000);
$random=rand();
$rand64="./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$salt=substr($rand64,$random%64,1).substr($rand64,($random/64)%64,1);
$salt=substr($salt,0,2);
return($salt);
}

if (empty($pwd)) {
$fehlermeldung=„Bitte PW eingeben“;
echo $fehlermeldung;
}
else
{
// Das Passwort „$pwd“ wird verschlüsselt und in der
// Variable „$passwd“ gespeichert.
$passwd=crypt($pwd,genSalt());
}[/code]

Vielen Dank nochmal für die rege Beteiligung und das reichhaltige Ideengut. Hat mir sehr weitergeholfen und was am wichtigsten ist, es wurden einige Wissenslücken geschlossen!
Gruß Fly

Ich schreib sie auch immer oben :smiley:
Und bekomm nie Fehler damit.