Avatar billede rapsak Nybegynder
14. december 2002 - 14:13 Der er 5 kommentarer

Login-funktion til min backend virker ikke

Først må jeg lige sige at jeg er ny (både med php og her poå eksperten) – jeg ved derfor ikke helt om nedenstående er formuleret ”efter etiketten”, men håber det er ok…

Undertegnede har fået (ikke stjålet ;-)) en fuld kopi af en php/Mysql cms-hjemmeside – altså med frontend og backend.
Jeg kan sagtens få frontenden og alt hvad den refererer til i databasen til at virke (jeg har rettet dabasenavnet, db-login og db-password) – men jeg kan IKKE få login til backenden til at virke – altså ikke komme ind i den via almindelig html!

Så vidt jeg kan se anvendes der 4 filer til loginfunktionen:

1.    index.php (loginsiden til backenden)
2.    dologin.php (som loginsiden refererer til – indeholder selve login-funktionen)
3.    index(1).php (selve backendhovedsiden)
4.    tjeklogin.php (som index(1).php refererer til – tjekker om jeg har logget ind)

Når jeg indtaster korrekt login og password i index.php får jeg bare den samme side frem igen – med tomme felter (hvis jeg taster forkert, for jeg en korrekt fejlmeddelelse)

De centrale php-scripts i de 4 filer er:

1.    Index.php:
(start)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html><head><title>Et eller andet</title>

<link rel="STYLESHEET" type="text/css" href="stylesheet.css">

    <script language="JavaScript" src="funktioner.js"></script></head>

<body marginwidth="100" leftmargin="100">

<table align="center" width="650" cellspacing="0" cellpadding="0" border="0">

<tr><td align="top"><img src="../pics/print_logo.gif" width="294" height="50" alt="" border="0"></td><td align="right" valign="bottom">

<br><br>

<?php

error_reporting(E_ALL & ~E_NOTICE);

require ("funktioner.php");

dato();

echo "<h4>Administrationsmodul</h4>";

?>

</td></tr><tr><td>

<form action="dologin.php" method="post">

<input type="hidden" name="logind" value="logind">

<p><b>Indtast:</b></p>

LOGIN:<br>

<input class="inputfelt" type="text" name="login" onmouseover="msover_field(this)" onmouseout="msout_field(this)" onfocus="fieldfocus(this)" onblur="fieldblur(this)"><br>

PASSWORD:<br>

<input class="inputfelt" type="password" name="password" onmouseover="msover_field(this)" onmouseout="msout_field(this)" onfocus="fieldfocus(this)" onblur="fieldblur(this)"><br>

<br><br><input class="submit" type="submit" name="submit" value="Log ind">

</form>

<?php

if (isset($_GET['error']) && $_GET['error'] == "fejl") {

echo"<b>Fejl i brugernavn eller password!</b>";

}

?></td></tr></table>

</body></html>
(slut)

2.    dologin.php:
(start)
<?php

require ("funktioner.php");

session_start();



//hvis form er submittet

if (isset($_POST['logind'])) {



//password i databasen er krypteret, så det gøres også med indtastet password

$dopass = $_POST['password'];





//skift selv bruger og pass til databasen.

open_base();

$tjek = mysql_query("SELECT * FROM skribenter WHERE skribentlogin='$_POST[login]' AND skribentpassword='$dopass'") or die ("Kunne ikke vælge felter i database-tabellen");

close_base();

if(mysql_num_rows($tjek) != 0) {



$_SESSION['sessionnr'] = session_id();

$_SESSION['login'] = $_POST['login'];



session_register("sessionnr");

session_register("login");



header("Location:index(1).php");



}else{



header("Location:index.php?error=fejl");



}



}else{



header("Location:index.php");

exit;

}



?>
(slut)

3.index(1):
(start)
<?php require("tjeklogin.php"); ?>
(kun linie 1 – resten klippet væk)
(slut)

4.tjeklogin.php
(start)
<?php

session_start();

if (!isset($_SESSION['login'], $_SESSION['sessionnr']) || $_SESSION['sessionnr'] != session_id()) {

header("Location:index.php");

}



?>
(slut)



Når jeg indtaster korrekt login og password i index.php, får jeg bare den samme side frem igen – med tomme felter (hvis jeg taster forkert, får jeg en korrekt fejlmeddelelse)

Det skal påpeges at den ”original”, som jeg har fået kopien fra, ingen problemer har.
Databasen i phpmyadmin-kopien er også fuldstændig identisk med ”originalen”

Hvad er problemet?
Vh rapsak
Avatar billede layer Nybegynder
14. december 2002 - 14:21 #1
Du har vel ikke linux, PHP kører på linux!
Avatar billede rapsak Nybegynder
14. december 2002 - 14:24 #2
??? Den ligger på www.friserverplads.dk, med en MySQldatabase/phpmyadmin - og frontenden virker altså fint, så det kan da ikke være problemet?
Avatar billede layer Nybegynder
14. december 2002 - 14:29 #3
nææ, det kan jeg godt se!
Avatar billede rzj Nybegynder
15. december 2002 - 10:25 #4
kunne det ikke være at systemet er baseret på register_globals er on (sat til). Det er typisk et spørgsmål om opsætningen af php...
Smid en php fil med indhold phpinfo(); på serveren og tjek opsætning herunder register_globals.
Avatar billede swaxi Nybegynder
20. januar 2003 - 02:22 #5
ved linien :
> //password i databasen er krypteret, så det gøres også med indtastet password
> $dopass = $_POST['password'];
ville jeg forvente noget a la
    $dopass = md5($_POST['password']);
... altså foudsat at password'ene rent faktisk ER krypterede (og med md5)


iøvrigt er det nok ikke register_globals der er problemet, da koden ganske korrekt benytter $_POST[] og altså _ikke_ forudsætter at den ligger som globalt tilgængelige data.

men ... det kan være at det er versionen af php. hvis scriptet afvikles på en ældre version af php (før 4.1.0) så understøttes $_POST[] ikke ... brug phpinfo() til at afgøre php's versionsnummer


layer > iøvrigt findes php også i en version til windows
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester