PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kein zugriff auf übergebene var


backbone
14.12.2004, 15:02:46
hi!


ich übergebe mit hilfe der url eine var kann aber im script nicht darauf zugreifen.

url: admin.php?action=login

ist was daran falsch? oder muss ich was besonderes vorher machen um die var auszulesen???

danke schon mal im vorraus!

cya

xabbuh
14.12.2004, 15:08:17
Vermutlich ist bei dir register_globals ausgeschaltet.
Ein wenig Lektüre zu dem Thema:
Kapitel 27. Verwendung von register_globals (http://de2.php.net/register_globals)
Manual: Superglobale Arrays (http://de2.php.net/manual/de/language.variables.predefined.php#language.variables.superglobals)
Tutorial: GET-Variablen (http://tut.php-q.net/get.html)

backbone
14.12.2004, 15:08:51
danke

aber gleich noch eine frage:
um auf die url vars zugreifen zu können muss ich _GET nutzen???

cya

xabbuh
14.12.2004, 15:15:30
Original geschrieben von backbone
danke

aber gleich noch eine frage:
um auf die url vars zugreifen zu können muss ich _GET nutzen???
Gegenfrage. Hast du die Links (und hier insbesondere den letzten) gelesen?

backbone
14.12.2004, 15:17:56
*hust* erm... nein?

sorry hatte nur den ersten gelesen :D

cya

xabbuh
14.12.2004, 15:19:16
Original geschrieben von backbone
*hust* erm... nein?

sorry hatte nur den ersten gelesen :D

cya
Mach mal, dann sollte sich deine Frage erübrigen ;-)

backbone
14.12.2004, 15:28:52
script geht trotzdem noch nicht :(

also ich brauchte des für ein login script:
<?

require('includes/misc.php');
require('includes/dbms.php');
require('includes/ns.php'); //das heißt news system :/

function generator_admin_login() {
echo '........'; //HTML
}

function generator_admin_news() {
echo '........'; //HTML

$result = ns_get_latest();
$id = $result['id'];
$headline = $result[NS_COL_HEADLINE];
for($i = 0; $i < count($headline); $i++) {
echo '........';
}

echo '........';
}

function do_login() {
$admin = trim($_POST['admin']);
$pass = trim($_POST['pass']);
if($pass == 'bernd' && admin == 'root') {
$crypt = $admin . $pass;
$time = time() + 3600;
setcookie('adminlogininfo', $crypt, $time);
return true;
}
else {
return false;
}
}

function check_login() {
$logininfo = $_COOKIE['adminlogininfo'];
$crypt = 'rootbernd';
if($crypt == $logininfo) {
return true;
}
else {
return false;
}
}


$action = $_GET['action'];

if($action == 'login') {
do_login();
}
if(check_login()) {
.
.
.
generator_admin_news();
}
else {
generator_admin_login();
}
?>

hoffe es findet jemand das problem

cya

xabbuh
14.12.2004, 15:36:40
Wenn du uns jetzt deine Fehlermeldungen etc.mitteilst, könnten wir dir sicherlich auch helfen.

backbone
14.12.2004, 15:38:17
das is ja das tolle: es gibt keine errors :|

man kommt auf seite wo man sich einloggen muss, gibt user und pass ein, man klickt auf einloggen und kommt wieda auf die gleiche seite...

cya

xabbuh
14.12.2004, 15:43:16
Hast du dir $action mal anzeigen lassen?

backbone
14.12.2004, 15:45:16
ja und es steht auch 'login' da

cya

xabbuh
14.12.2004, 15:55:44
Wird das Cookie gesetzt? Haben $_POST['admin'] und $_POST['pass'] die richtigen Werte?

backbone
14.12.2004, 15:58:42
die funktion do_login wir auf jedenfall ausgeführt.
die $_POST haben die richtigen werte und die form method ist auch "post".

wo kann ich nachschaun ob ein cookie wirklich gesetzt wurde?

edit: kann es sein das der cookie erst nach dem nächsten site reload ordnungsgemäß in die $_COOKIE var geladen wird???


cya

xabbuh
14.12.2004, 16:00:36
Du kannst zum Beispiel in dem Verzeichnis auf deinem PC, in dem die Cookies gespeichert werden, nachschauen. Außerdem könntest du dir das Array $_COOKIES mit print_r (http://www.php.net/print_r) oder var_dump() (http://www.php.net/var_dump) anzeigen lassen.

backbone
14.12.2004, 16:07:25
anscheinend ist das cookie nicht gesetzt, denn ich habe jetz die check_login function um:

if($action == 'login' && trim($_POST['admin']) == 'root' && trim($_POST['pass']) == 'bernd') {
return true;
}


erweitert und es funktioniert mit dem login, allerdings nur wenn in der action 'login' steht und die postvars übergeben werden..

edit: der cookie ist definitiv leer...

cya

xabbuh
14.12.2004, 16:29:04
Also funktioniert es jetzt oder wie darf ich deinen Beitrag verstehen?

backbone
14.12.2004, 16:32:16
nein der cookie ist leer... bis jetz funktioniert es nur, wenn man auf login klickt. ist man dann jedoch im interface drin und klickt dort auf einen link/button/... funktioniert es wieder nicht (da ja kein action=login mehr in url steht und der cookie leer ist...)

demzufolge hab ich nen fehler beim cookie setzen oder beim cookie abrufen.

cya

xabbuh
14.12.2004, 16:35:04
Wird in der Funktion do_login() denn überhaupt der Teil ausgeführt, in dem das Cookie gesetzt wird?

backbone
14.12.2004, 16:41:09
nein wird er nicht und da:


if($pass == 'bernd' && admin == 'root') {


lag der fehler.

danke

cya

xabbuh
14.12.2004, 16:52:21
Wie muss es richtig sein? So?

if($pass == 'root' && admin == 'bernd') {

backbone
14.12.2004, 18:30:17
nee. hab da son dollerzeichen vor dem admin vergessen *pfeif*

cya

xabbuh
14.12.2004, 19:14:51
Original geschrieben von backbone
nee. hab da son dollerzeichen vor dem admin vergessen *pfeif*

cya
Oje, das habe ich auch übersehen...