Avatar billede rask2 Nybegynder
23. maj 2009 - 13:04 Der er 16 kommentarer og
1 løsning

Hjælp til login redirection

Hej eksperter

Jeg har en database med nogle brugernavne med tilhørende passwords.

Når en bruger logger ind kunne jeg godt tænke mig at sende vedkommende videre. Men hvordan fungerer det lige? Hvis jeg bare sender dem videre til en anden URL, så kan man vel også bare bare skrive adressen direkte??


Kan man evt. skjule adressen i adresse linjen?
Avatar billede rask2 Nybegynder
23. maj 2009 - 13:13 #1
Det kan godt være det er lidt skidt beskrevet. Men det der i bund og grund ønskes er at der efter et godkendt login skal vises noget information, som man ikke må kunne finde ved direkte at skrive adressen i adressen linjen. Jeg behøver for så vidt ikke at skifte adresse eller hvad?

Man kan vel se det lidt som når man logger ind her på eksperten. Derefter får man også adgang til sine egne "tråde"
Avatar billede Slettet bruger
23. maj 2009 - 13:17 #2
Bruger du PHP eller ASP.
I PHP kan du bruge det der hedder sesions til at opbevare den slags informationer. Læs mere her http://www.phpartikler.dk/artikler/sessions.php
Husk også at kryptere forbindelsen med SSL så andre ikke kan opsnappe kodeordet når brugeren logger ind.
Avatar billede rask2 Nybegynder
23. maj 2009 - 13:35 #3
Okay

jeg programmerer i PHP men er meget ny i det. Er mest hjemme i C/C++.

Har du et link til hvordan man kryptere forbindelsen vha SSL?
Avatar billede rask2 Nybegynder
23. maj 2009 - 13:41 #4
Jeg har kigget lidt på det her sessions, men er det ikke mest til at se hvem der er logget ind mv?

Jeg søger at man kun viser data til en bruger der har logget korrekt ind!!
Avatar billede inctor Nybegynder
23. maj 2009 - 14:39 #5
<? session_start();

$logIn = ($_SESSION["loggedin"] == "true") ? "true" : "false";

if($logIn == true){

// vis beskyttet indhold
} else {

// indhold som IKKE er beskyttet
}

?>

i din login, hvor den laver en succesfuld login, skal du tilføje:

$_SESSION["loggedin"] = "true";

Håber det er til at forstå :)
Avatar billede rask2 Nybegynder
23. maj 2009 - 15:02 #6
hej inctor

Ang:
$logIn = ($_SESSION["loggedin"] == "true") ? "true" : "false";

Kan du forklare hvad der sker her? For mig som normalt er C programmør ligner det en slags inline if-else sætning.

Det skal lige siges at jeg har forskellige filer:

Login.php hvor man kan indtaste brugernavn + password

Validation.php: Kommunikation med min database med logins, og verifikation af at brugeren eksisterer med tilhørende password. Denne side "redirecter" så til selve informations siden.

På informations siden kan jeg vel så bare bruge:

if($_SESSION["loggedin"] == true)
{
// beskyttet
}
else
{
// ej beskyttet
}
Avatar billede rask2 Nybegynder
23. maj 2009 - 15:09 #7
Jeg smider lige en smule kode så du kan se hvad jeg gør:

Validation.php:
<?php
session_start();
?>
.
.
.
.
.
//Search the database for a User with corresponding password
    $checkuser = mysql_query("SELECT * FROM Logins WHERE username='$user' AND Password = '$password'");
   
    $username_exist = mysql_num_rows($checkuser);

    if($username_exist == 1)
    {
        $_SESSION['loggedin'] = "true";    // store the user in the session
   
        echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"0; URL=$page\">";
    }
    else
        echo "Username or password incorrect";   
    mysql_close($con);



Informations side:
<?php
session_start();
?>

<html>
<head>
  <title>PHP Test</title>
</head>
<body>
<?php

if($_SESSION['loggedin'] == "true")
    echo 't';
else
    echo 'f';

?>
</body>
</html>
Avatar billede rask2 Nybegynder
23. maj 2009 - 15:09 #8
Der blir altid skrevet f på skærmen efter redirect
Avatar billede inctor Nybegynder
23. maj 2009 - 15:24 #9
Hmm lyder underligt den returnere F..

Prøv at fjerne ' ' i din if-sætning .. den burde returnere true ..
ellers prøv
<?php session_start();
echo "<pre>";
print_r($_SESSION);
echo </pre>";
?>

Og se om den returnere nogen værdier ..
Avatar billede Slettet bruger
23. maj 2009 - 18:23 #10
Ja, $logIn = ($_SESSION["loggedin"] == "true") ? "true" : "false";
er det samme som
if ($_SESSION["loggedin"] == true) {$logIn = true;}
else {$logIn = false;}
Avatar billede Slettet bruger
23. maj 2009 - 18:26 #11
Og så vil jeg nok anbefale dig at escape brugernavn og kodeord så folk ikke laver SQL injection på din database.
Her bruges funktionen mysql_real_escape_string($username/password)
http://dk.php.net/manual/en/function.mysql-real-escape-string.php
Avatar billede rask2 Nybegynder
25. maj 2009 - 17:58 #12
Hej Inctor

Jeg har forsøgt at gøre som du skrev i #9 med følgende resultat

Array
(
)

så det ser ud til at der ikke retruneres noget. Nogle forslag?


Tak for dine forslag Kimsey0

kan man tilføje point så der er til jer begge?
Avatar billede rask2 Nybegynder
25. maj 2009 - 18:01 #13
Hej igen inctor

Jeg har lige prøvet at køre videre i samme php fil og altså udelade redirect til en anden side og så fungerer det fint.

Kan i se hvad jeg gør galt?
Avatar billede Slettet bruger
25. maj 2009 - 19:33 #14
Ja, man kan godt tilføje points til os begge.
Når du har besluttet dig for hvor mange points jeg skal ha' (hvis jeg skal ha' nogle) skal du blot skrive antallet i siden.
Er dog ikke helt sikker på hvordan man gør, da jeg aldrig har prøvet at gi' points. (Er her mest for at hjælpe.)
Avatar billede Slettet bruger
25. maj 2009 - 19:33 #15
Svar.
Avatar billede rask2 Nybegynder
27. maj 2009 - 18:44 #16
Er du der inctor?
Avatar billede rask2 Nybegynder
03. juni 2009 - 20:28 #17
Er der flere indlæg??
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

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