Avatar billede george Nybegynder
28. november 2009 - 19:19 Der er 14 kommentarer og
1 løsning

Problemer med login system

Jeg har et login script som jeg ikke kan få til at virke eller rettere sagt det virker fint når jeg kører login scriptet for sig selv, så redirecter den fint videre til en anden side, men når jeg bruger det i forbindelse med Joomla så kan jeg ikke få det til at redirecte til forsiden i Joomla.

Jeg har lavet det på følgende måde.

1. Jeg har lavet filen .htaccess med følgende linje "DirectoryIndex default.php index.php" i roden af mit webhotel.

Det har jeg gjort for så kan jeg lave en default.php der redirecter til min login folder og starter login.php(mit login billede). I login.php redirecter jeg til index.php i Joomla når brugernavn og password er accepteret og så skulle siden bare starte op og det gør den ikke.

Prøv at se hvad der sker hvis du bruger login "bob" og "12345678". Hold øje med adresse bar'en det ser ud som jeg stadig er i login folderen selv om jeg i mit script har rettet det til "../index.php" altså index filen i rooden af webhotellet.

Hvordan får jeg det rettet så den redirecter til Jommla's index.php som ligger i rooden af webhotellet.

Jeg har lavet samme setup lokalt på min maskine og der kan jeg godt få det til at virke, men altså ikke når jeg kører det på webhotellet hos DomainDirect.dk.

Håber der er en der kan løse opgaven for mig, jeg er ikke den store php haj.

Her er koden til scriptet:
<?php
require_once('common.php');

$error = '0';

if (isset($_POST['submitBtn'])){
    // Get user input
    $username = isset($_POST['username']) ? $_POST['username'] : '';
    $password = isset($_POST['password']) ? $_POST['password'] : '';

    // Try to login the user
    $error = loginUser($username,$password);
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<head>
  <title>Login System</title>
  <link href="style/style.css" rel="stylesheet" type="text/css" />
</head>
<body id="body"><p> </p><p> </p><p> </p><p> </p><p> </p>
    <div id="main">
<?php if ($error != '') {?>
      <div class="caption">Please login</div>
      <div id="icon"> </div>
      <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="loginform">
        <table width="100%">
          <tr><td>Username:</td><td> <input class="text" name="username" type="text"  /></td></tr>
          <tr><td>Password:</td><td> <input class="text" name="password" type="password" /></td></tr>
          <tr><td colspan="2" align="center"><input class="text" type="submit" name="submitBtn" value="Login" /></td></tr>
        </table>
      </form>

       <a href="register.php">Register</a>
                           
                           

<?php
}
    if (isset($_POST['submitBtn'])){

?>

<?php
    if ($error == '') {
        $redirect_link = $Webroot."../index.php";
        header ("location: $redirect_link");
    }
    else echo $error;

?>

<?php
    }
?>
    </div>

</html>
Avatar billede intenz Novice
28. november 2009 - 20:08 #1
Har du testet at index.php virker, hvis du bare kalder den direkte? www.domæne.dk/index.php
Avatar billede george Nybegynder
28. november 2009 - 20:16 #2
Ja det gør den.
Avatar billede george Nybegynder
28. november 2009 - 20:18 #3
Ahh jeg har jo glemt at skrive adressen på hjemmesiden. Det er jo lidt svært at logge ind så man kan se hvad der sker når man ikke har adressen, klovn(mig selv)
http://gjextranet.net
Avatar billede intenz Novice
28. november 2009 - 21:00 #4
Prøv at print din $redirect_link og så kommenter redirecten ud. Så kan du om den redirecter til den rigtige side. Det ser jo ud til at virker ellers.
Avatar billede george Nybegynder
28. november 2009 - 21:28 #5
Hvordan gøres det helt nøjagtig?

Nej det virker netop ikke. Hvis du prøver at taste "bob" og "12345678" i login felterene så vil du se en sort baggrund med en hvid steg.

Det var jo ligesom forsiden der skulle komme frem.
Avatar billede george Nybegynder
28. november 2009 - 22:01 #6
Ok jeg tror jeg fandt ud af at printe redirecten ud.

Der står "../index.php" Det er jo rigtig nok eller hvad? Ved ikke hvordan det skal se ud i php(gammel ASP koder :-))
Avatar billede intenz Novice
28. november 2009 - 23:25 #7
Nej. Det virker ikke som du vil have det :) Men det ser ud til, at det ikke er koden der er fejl i. Derfor er du nødt til, at vide hvad der ligger i den variabel der indeholder adressen du redirecter til.

Derfor ændre:
header ("location: $redirect_link");

til:
print "$redirect_link";
//header ("location: $redirect_link");

Så kan du se, hvor scriptet forsøger at redirecte dig til. Du kan så se, om adressen her er korrekt.

Ellers prøv at fjerne din .htaccess kode. Og se om det virker hvis det kalder default.php direkte og logger på.
Avatar billede george Nybegynder
29. november 2009 - 12:26 #8
Ja så viser den mig bare "../index.php" som før.

Hvis jeg prøver at gøre det samme på min maskine lokalt viser den mig lidt mere.
Notice: Undefined variable: Webroot in C:\wamp\www\gjextranet\login\login.php on line 48
../index.php

Hvis jeg fjerne .htaccess som starter den bare Joomla's forside op(index.php). Det er derfor jeg har .htaccess med default.php og index.php for så tager den fat i default.php som jeg gerne vil have.
Den kan bare ikke finde ud af at komme tilbage til index.php med den redirect der er lavet i login.php.
Avatar billede intenz Novice
29. november 2009 - 18:13 #9
Du får den fejl fordi $Webroot variablen ikke eksisterer. Altså den ikke er blevet defineret inden du bruger den i $redirect_link = $Webroot."../index.php";


Prøv at ændre dit redirect link til:
header ("location: http://gjextranet.net/index.php");
Avatar billede george Nybegynder
29. november 2009 - 18:40 #10
Det virker desværre ikke. Samme hvide bjælke midt på den sorte side efter jeg har logget ind.

Hvordan skal $Webroot variablen defineres?
Avatar billede george Nybegynder
29. november 2009 - 18:47 #11
Er det bare $webroot = ""
Avatar billede intenz Novice
29. november 2009 - 21:10 #12
Jeg har måske luret den.
Prøv at ændre:
if (isset($_POST['submitBtn'])){
    // Get user input
    $username = isset($_POST['username']) ? $_POST['username'] : '';
    $password = isset($_POST['password']) ? $_POST['password'] : '';

    // Try to login the user
    $error = loginUser($username,$password);
}

Til:
if (isset($_POST['submitBtn'])){
    // Get user input
    $username = isset($_POST['username']) ? $_POST['username'] : '';
    $password = isset($_POST['password']) ? $_POST['password'] : '';

    // Try to login the user
    $error = loginUser($username,$password);
    if ($error == '') {
        $redirect_link = $Webroot."../index.php";
        header ("location: $redirect_link");
    }
}
Avatar billede george Nybegynder
29. november 2009 - 21:39 #13
YES!!!

Det virker s..

1000 tak for hjælpen.

Svar = points
Avatar billede intenz Novice
29. november 2009 - 21:40 #14
Perfekt :)

Problemet var, at du skal lave din redirects før du outputter noget til skærmen.
Avatar billede george Nybegynder
29. november 2009 - 21:45 #15
Ok ja jeg har kun programmeret classic ASP og det er lidt anderledes.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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