[PHP] Variabel übergeben

m4sch

Ensign
Registriert
Dez. 2004
Beiträge
152
Hallo,

folgendes Problem: Ich habe ein Script, mit dem ich ein Passwort so kodieren kann, dass es für einen ".htaccess-Schutz" ausreicht. Der Code lautet wie folgt:

PHP:
function htpasswd($pass)
{
	$pass = crypt(trim($pass),base64_encode(CRYPT_STD_DES));
	return $pass;
}

echo htpasswd("$pass"); //Hier sollte er $pass konvertieren bzw. ausgeben
echo ("$userid");

Nun habe ich vorher ein Formular, in dem ich die Variabeln $userid sowie $pass übergeben lasse, jedoch übernimmt er die Variabel $pass nicht in diesem Script. Ich will nämlich, dass er $pass in "base64" kodiert und mir danach ausgibt... tut er aber nicht :( Was mache ich falsch?

-> Ich hoffe ich habe das Problem einigermaßen verständlich formuliert ;)
 
Zuletzt bearbeitet: (Der Titel war falsch... Tippfehler)
Du kannst als übergebene Variable nicht $pass verwenden.
Trage in deinem Formular als name für das Passwortfeld z.B. "pass" ein.
Und rufe diese variable dann mit $_POST['pass']; auf.
 
Hallo,

wenn RegisterGlobals nicht aktiviert ist, was auch nicht zu empfehlen ist, da viele unsauber programmierte Scripte dadurch einige Angriffspunkte aufweisen, müssen die Variablen erst deklariert werden.
Solltest du ein POST-Formular verwenden könnte dies dann zum Beispiel so aussehen:
PHP:
$pass = $_POST["pass"];

MfG mh100
 
Sollte der Code dann so heißen:

PHP:
echo htpasswd("$_POST['pass']");

...denn: Das kodierte Passwort fängt nämlich immer mit "MQ" an und das kann ja wohl nicht sein. Dies machte er auch schon mit der oben genannten Möglichkeit. :(

@mh1001
Das Forumular ist "GET".
 
Wenn es sich um ein GET-Formular handelt musst du dies natürlich entsprechend anpasssen. Dies sollte dann folgendermaßen aussehen: $_GET["pass"]

MfG mh1001
 
Wenn:

PHP:
echo htpasswd("$_GET["pass"]");

Dann:
Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /www/htdocs/v091248/test.php on line 12

Wenn ich das ohne das so mache, dann kommt zwar kein Fehler aber dennoch fängt der Code wieder mit "MQ" an...

PHP:
echo htpasswd("$_GET['pass']");
 
Zuletzt bearbeitet:
Lasse einfach einmal die äußeren Hochkommas weg, dann sollte es klappen - also htpasswd($_GET["pass"]) oder htpasswd($_GET['pass'])
Neben dem solltest du noch überprüfen, ob das Feld im Formular auch den Namen "pass" trägt. ;)

MfG mh1001
 
Genau dasselbe Spiel. Schau es dir selber an; Der Code fängt immer mit MQ an:
http://www.mario-schlechter.de/test1.htm

Der Code:
PHP:
<?php


function htpasswd($pass)
{
	$pass = crypt(trim($pass),base64_encode(CRYPT_STD_DES));
	return $pass;
}



echo htpasswd($_GET['pass']);
echo ("$userid");

?>
 
Zuletzt bearbeitet:
Hallo,

das klappt doch alles ausgezeichnet. ;)
Das "MQ" ist durchaus normal, da die Konstante CRYPT_STD_DES einen Zwei-Zeichen-Salt-String liefert, um welchen es sich in diesem Fall handelt.

MfG mh1001
 

Ähnliche Themen

Zurück
Oben