Avatar billede bandersen2200 Nybegynder
06. juni 2011 - 18:37 Der er 10 kommentarer og
1 løsning

$_SESSION

Hej

Jeg vil gerne videresende brugere til en anden side når $_SESSION ikke er godkendt. Jeg har forsøgt på følgende måde:

Page2:
<?
session_start();  //Validates if the user is logged in
if(isset($_SESSION['is_logged_in']))
  //echo "1";//Not logged in 
  $URL="http://myhomepage.dk/php/Login/";
  header ("Location: $URL"); 
else
    echo "2";//Logged in
?>

Så ved //Not logged in vil jeg gerne videresende brugeren til en anden side, men det fungere ikke. Brugeren er altid logged in.

På den forrige side Page2 laver jeg følgende :


// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){

$_SESSION['is_logged_in'] = 1; // store session data

header("location:Page1.php");
}
else {
echo "Wrong Username or Password";
}

Håber i kan hjælpe
Avatar billede olsensweb.dk Ekspert
06. juni 2011 - 18:50 #1
få du sat en session overhovet ??
kunne det tænkes du outputter noget til skærmen før session start ??, det kunne værer linke skift, mellemrum, BOM (Filformat UTF-8 med BOM)
http://dk.php.net/session_start (se notes)
Avatar billede majbom Novice
06. juni 2011 - 18:51 #2
du tjekker om $_SESSION['is_logged_in'] er sat, og hvis den er skriver du "Not logged in" ?

som din kode ser ud nu, sender du brugeren videre til myhomepage.dk, hvis de ER logget ind - skulle det ikke være omvendt?
Avatar billede bandersen2200 Nybegynder
06. juni 2011 - 19:49 #3
Hej

@ronols
Sætter jeg ikke en session her ?:

$_SESSION['is_logged_in'] = 1; // store session data

@splazz
Når jeg tester det udskiver den 2, og jeg bliver ikke sendt videre hvis der er korrekt logget ind. Det må være fordi jeg ikke får sat min session korrekt.

Er det muligt at få et eksempel på at man sætter en SSESSION og validere den på den modtagede side ?

Mvh
Benjamin
Avatar billede JensPeterSvensson Nybegynder
06. juni 2011 - 20:55 #4
Jeg tror, at du mangler en del { og } i din test kode.
Avatar billede bandersen2200 Nybegynder
07. juni 2011 - 17:38 #5
Hej

Ok, jeg prøver igen. Her er en DEL af første side. Siden henter brugernavn og password fra en MySQL database også valideres den her:

$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){
$_SESSION['is_logged_in'] = 1; // store session data
header("location:Page2.php");
}
else {
echo "Wrong Username or Password";
}

Jeg sætter $_SESSION og sender brugeren videre til side 2:
<?
session_start(); 
//Validates if the user is logged in
if(isset($_SESSION['is_logged_in']))
  echo "1";//Logged in     
else
    //Not Logged in
    $URL="http://page1.php";
    header ("Location: $URL"); 
?>
Her vil jeg så gerne sende brugeren tilbage til page1.php hvis linket til siden kopieres og sendes til en anden så han tvinges til at logge ind. Mangler jeg at sende $_SESSION med videre til page2.php ?

Mvh
Benjamin
Avatar billede majbom Novice
07. juni 2011 - 20:46 #6
$_SESSION skal ikke "sendes videre", det er det der er det smarte :)

som din kode er nu, hvad sker der så? kan brugeren se side 2?

bliver han sendt til side 1, hvis han ikke er logget ind?
Avatar billede bandersen2200 Nybegynder
07. juni 2011 - 21:00 #7
Hej

Nej han bliver ikke sendt tilbage til side 1 hvis han ikke er logget ind. Det er som om at  header ("Location: $URL");  funktionen slet ikke virker.

Mvh
Benjamin
Avatar billede JensPeterSvensson Nybegynder
07. juni 2011 - 21:05 #8
prøv at skriv

error_reporting(E_ALL);
ini_set('display_errors', 1);

I toppen af din fil. Og du mangler i øvrigt stadigvæk {} eller også på din nederst if sætning.
Avatar billede bandersen2200 Nybegynder
07. juni 2011 - 21:46 #9
Hej

Har fundet ud af det, det var lidt mere besværligt end jeg regnede med.

Ja manglede {} men har lavet det på en helt anden måde nu.

Mvh
Benjamin
Avatar billede majbom Novice
07. juni 2011 - 22:01 #10
jvf brugerbetingelserne som du accepterede ved oprettelse af din bruger, skal du dele løsningen med os andre.

det kunne jo være at andre med samme problem kom forbi en dag :)

og så husk at luk spørgsmålet...
Avatar billede bandersen2200 Nybegynder
07. juni 2011 - 22:16 #11
Hej

Det må i undskylde, jeg forstår stadig ikke hvordan man lukker et spørgsmål her inde. Har søgt på det men ikke fundet hvordan man gør ?

Jeg gjorde følgende:
require_once 'bootstrap.php';

$host="xxxxxxxx"; // Host name
$username="xxxxxxxx"; // Mysql username
$password="xxxxxxxx"; // Mysql password
$db_name="xxxxxxxx"; // Database name
$tbl_name="xxxxxxxx"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){

    $_SESSION['is_logged_in'] = true;
    header("Location: index.php");
    exit;
}
else {
   
    header("Location: login.php?err=wrong_credentials");
    exit;
}

require_once 'header.php';

Index.php :
<?php
require_once 'bootstrap.php';
log_user_in();

require_once 'header.php';
?>
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