Avatar billede JobJog Nybegynder
05. februar 2012 - 13:40 Der er 13 kommentarer og
1 løsning

php login/bruger problemer

Hey.
jeg vært igang med at lave et login system, hvor man opretter sig som bruger og logger ind med email og password.

men af en eller anden grund så vil den ikke hoppe vider til næste side efter man har indtastet sine login oplysninger, den forbliver i code_login.php . i databasen har jeg oprettet en bruger som admin, som har fået tildelt 1 alle andre bruger bliver tildelt 2. så man logger ind på en bestemt side alt efter hvem man er..
Min kode ser så ledes ud.

<?php

session_start();

$objCon = new mysqli('xxxxxx', 'xxxxxxx', 'xxxxxxxx', 'xxxxxxxx');
if ($objCon->connect_error) {
    die('Kunne ikke forbinde (' . $objCon->connect_error . ') ' . $objCon->connect_error);
} else {
    echo 'Der er forbindelse, altsaa ingen fejl';
}

$email = $_POST['email'];
$password = $_POST['password'];



$query = "SELECT email, adgangskode, level FROM bruger WHERE  email='$email' AND adgangskode='$password'";
$objResult = $objCon->query($query) or die($objCon->error);

$row = $objResult->fetch_assoc();
echo 'det fungere';


if ($email == $row['email'] && $password == $row['adgangskode'])
   
    if ($row['level'] == 1) {
        $_SESSION['bruger']['level'] = 1;

        $_SESSION['email'] = $email;

        header("location:admin.php");
    } else if ($row['level'] == 2) {
        $_SESSION['bruger']['level'] = 2;

        $_SESSION['email'] = $email;

        header("location:forside.php");
   

};
?>
Avatar billede kjeldsted Novice
05. februar 2012 - 13:44 #1
Du kan ikke benytter header() efter der er blevet udskrevet noget på siden. header() skal altså ikke over AL html samt alle echo'er.
Avatar billede JobJog Nybegynder
05. februar 2012 - 13:50 #2
Hvis du tænker på den her echo ?
$row = $objResult->fetch_assoc();
echo 'det fungere';

så var det bare lidt en test for at se om den skrev noget ud.. men selv om den er væk fungere det stadig ikke.. :/
Avatar billede kjeldsted Novice
05. februar 2012 - 13:52 #3
Ud over
echo 'det fungere'; 
så har du også en linje der lyder
echo 'Der er forbindelse, altsaa ingen fejl'; 
Dén skal også væk.
Avatar billede JobJog Nybegynder
05. februar 2012 - 14:03 #4
Det hjalp sku :) bare mystisk det virkede på localhost :/

men jeg kan kun logge ind som alm bruge med som får tildelt 2.

logger jeg ind som admin får jeg denne besked

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, support@one.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Avatar billede kjeldsted Novice
05. februar 2012 - 14:07 #5
Findes både admin.php og forside.php?
Avatar billede JobJog Nybegynder
05. februar 2012 - 14:10 #6
jeps
Avatar billede JobJog Nybegynder
05. februar 2012 - 14:11 #7
hmm, okay der var en fejl 40 :) havde glemt location foran...
laver du lige et svar så du kan få point ;)
Avatar billede kjeldsted Novice
05. februar 2012 - 14:18 #8
Det er jo det der sker.

Desuden bør du altså overveje at kigge lidt på hvad dine brugere skriver ind. Du smider dine data direkte ind i en query. Ja, kan godt se at det er en mysqli, men derfor skader det jo alligevel ikke at tjekke efter om den indtastede streng virker reel eller ej.
Avatar billede JobJog Nybegynder
05. februar 2012 - 14:25 #9
Hvad mener du med jeg skal kigger efter hvad brugere skriver ind ?
Avatar billede kjeldsted Novice
05. februar 2012 - 14:38 #10
Du bør tjekke hvad brugeren skriver ind. Hvis en bruger fx. skal indtaste et brugernavn, kan man fx. stoppe scriptet før den når til queryen hvis man har indtastet andet end bogstaver og tal, eller hvad der nu er tilladt.

Tegn som ' " < > er ikke altid man ønsker at disse skal have på MySQL serveren. Men man har ret let mulighed for at lade dem slippe igennem, hvis ikke der bliver tjekke for det.
Avatar billede JobJog Nybegynder
05. februar 2012 - 15:10 #11
Hvad vil være mest optimale måde og gøre det på ? jeg tænker lidt om Client-Side validering kan gøre dette ?
Avatar billede kjeldsted Novice
05. februar 2012 - 15:18 #12
Nej. Det skal du gøre server-side. ALT hvad der kommer fra client-side kan en bruger snildt ændre på. Du er nødt til at tjekke hvad der kommer ind i dine $_POST. Det er dér det farlige ligger.
Avatar billede JobJog Nybegynder
05. februar 2012 - 15:25 #13
oh okay, det må jeg heller få kigget på så.. Jeg siger rigtige mange tak for hjælpen ;)
Avatar billede kjeldsted Novice
05. februar 2012 - 15:31 #14
Det var så lidt :)
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
Kurser inden for grundlæggende programmering

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