Avatar billede anderseiler Nybegynder
07. april 2005 - 21:55 Der er 11 kommentarer og
1 løsning

Problemer med session..

Så er jeg her igen :) I kan selv se en del af scriptet neden under, og der er forklaring på problemet bag efter.

##### start.php #####
#####################

<?php

session_start();
    $_SESSION['siteid'] = $siteid;    //value af siteid bliver sendt fra en anden side til den her, som virker uden problemer.


        header("Location: admin.php"); //Jeg har fjernet noget af koden, men har beholdt overstående for at vise at man bliver sendt til admin.php.. Uden problemer.

?>


##### admin.php #####
#####################

<?php
session_start();

$siteid = $_SESSION['siteid'];

if (!$_SESSION['login_check'] = 1) {
        header("Location: http://$website_id/System/login/loginlogoff.asp");
    exit();
} else {
        echo $siteid;
};

?>


Problemet består så i, at $_SESSION['siteid'] ikke bliver ført over til admin.php.. Den echo som er nederst udskriver altså ikke noget. Og jeg forstår ikke hvorfor, fordi det virkede tidligere (jeg har nok lavet noget lort så :)

Sig til hvis jeg ikke har forklaret mig grundigt nok..

Mvh
Anders
Avatar billede henriktha Nybegynder
08. april 2005 - 00:14 #1
Er login_check sat til 1 når du afvikler koden ??

Får du nogen fejl ???
Avatar billede henriktha Nybegynder
08. april 2005 - 00:37 #2
Ihvertfald er der ik nogen fejl i den kode du har fremvist her.

Det eneste der kan være galt med din kode her på siden er hvis $siteid ikke er sat.

Hvad sker der hvis du kalder start.php?siteid=xxxxx
Avatar billede anderseiler Nybegynder
08. april 2005 - 07:31 #3
Problemet er jo, at $_SESSION['siteid']; slet ikke kan findes i admin.php.. Den findes simpelt hen ikke i det dokument.. Og jeg forstår ikke hvorfor?

Værdien af $siteid bliver sat af en anden side, og jeg har testet om $siteid er udfyldt i start.php, og der virker den. Problemet opstår når jeg prøver at hente $siteid inde i admin.php..

Håber I kan hjælpe :)
Avatar billede sukos Juniormester
08. april 2005 - 07:34 #4
Det er e ngod ide at bruge hvilken værdi din variabel kommer fra

$_SESSION["siteid"] = $_GET["siteid"];

Det er også en god ide IKKE at bruge samme navn!

$_SESSION["site_id"] = $_GET["siteid"];

Og på admin.php, hvis $_SESSION["siteid"] er sat, er der ingen grund til at bruge

$siteid = $_SESSION["siteid"];

Og især her er det vigtigt IKKE at bruge samme navn!
Hvis register_globals er on, kan du få fat i både $_SESSION, $_COOKIE $_GET $_POST med $siteid

<?php

session_start();
$_SESSION["site_id"] = $_GET["siteid"]; // eller POST ???
header...................
?>

<?php
session_start();

if(!isset($_SESSION["login_check"])) {
header.........
}else{
echo $_SESSION["site_id"];
}
?>
Avatar billede sukos Juniormester
08. april 2005 - 07:37 #5
Havde selv noget bøf, hvor jeg havde sat session navn, og senere i scriptet, skulle samme navn "omformeres" til brug i noget javascript, og brugte så
$navn = "etellerandet";

Men fordi register_globals var on, og jeg havde brugt "navn" i en session tidligere, gik der ged i den, indtil jeg brugte et andet navn for min "omformning"
Avatar billede anderseiler Nybegynder
08. april 2005 - 08:00 #6
Jeg kan slet ikke få det her fis til at virke. Jeg prøver lige at poste noget af min kode igen:

##### start.php #####
#####################

<?php
session_start();

if ($brugernavn == 'Public') {
    header("Location: http://$website_id/System/login/loginlogoff.asp");

    } elseif (empty($brugernavn)) {
    header("Location: http://$website_id/System/login/loginlogoff.asp");

    } elseif (empty($website_id)) {
    header("Location: http://$website_id/System/login/loginlogoff.asp");

    } else {

        $_SESSION['side_id'] = $_GET['site_id'];   
        $_SESSION['login_check'] = 1;
        $_SESSION['brugernavn'] = $brugernavn;
        $_SESSION['website'] = $website;
       
        header("Location: admin.php");

};
?>

##### admin.php #####
#####################

<?php
session_start();

$siteid = $_SESSION['side_id'];
    echo $_SESSION["side_id"];
        echo $siteid;

?>

Ingen af overstående i admin.php virker, og kan ikke se hvorfor? I start.php bliver $website_id og $site_id sendt til siden via en $_GET form. Og hvis du prøver at skrive

echo $site_id;

inde i start.php, så virker det uden problemer.. Så problemet er at få det lor*e session til at kunne hente informationen i admin.php :)
Avatar billede sukos Juniormester
08. april 2005 - 08:13 #7
Du kan prøve med en ganske simpel:

test.php:
<?php
session_start();

if(isset($_GET["nytest"])) {
$_SESSION["site_id"] = $_GET["nytest"];
header("Location:test2.php");
exit;
}

?>
<a href="test.php?nytest=noget">Link</a>



test2.php:
<?php
session_start();

if(isset($_SESSION["site_id"])) {
echo $_SESSION["site_id"] ." er sat!;
}else{
echo"\$_SESSION[\"site_id\"] er IKKE sat!";
}
?>
Avatar billede anderseiler Nybegynder
08. april 2005 - 14:50 #8
Jeg har brugt det nederste eksempel (hvilket forøvrigt mangler en " efter sat!, men det er ikke så vigtigt.

Jeg får bare den besked at det ikke virker. Så må det vel være i start.php at der er en fejl?? Men hvor? Jeg kan i hvert fald ikke se det... :)
Avatar billede sukos Juniormester
08. april 2005 - 15:06 #9
hvis du kan smide et link til en test, vil det jo ikke være af vejen!

(og du tillader selvf. cookies i din browser?????)
Avatar billede sukos Juniormester
08. april 2005 - 15:23 #10
Avatar billede anderseiler Nybegynder
08. april 2005 - 15:28 #11
Det kan jeg ikke, fordi det er en del af et større system som kræver noget login osv. som jeg ikke ønsker at give ud. Men jeg kan vise hele koden af de 2 sider..:

#### send.php ####
##################

<!-- Ved godt det her er asp, men som sagt er det en del af et større system. Men her får vi site_id tilsendt. Og jeg modtager den uden problemer til start.php. -->

<!-- #include virtual="/inc/pagesettings.asp"-->
<html>
    <head>
    </head>
    <body class="bodyMain">
        <form name="LoginGuestbook" action="start.php" method="get">
            <input type="hidden" name="brugernavn" value="<%=session("Brugernavn")%>">
            <input type="hidden" name="website_id" value="<%=application("DomainName")%>">
            <input type="hidden" name="site_id" value="<%=Request.QueryString("SiteID")%>">
        </form>
    </body>
</html>
<script language="javascript">
    document.LoginGuestbook.submit();
</script>

#### start.php ####
###################

<?php
session_start();
        $_SESSION['side_id'] = $_GET['site_id'];   

if ($brugernavn == 'Public') {
    header("Location: http://$website_id/System/login/loginlogoff.asp");

    } elseif (empty($brugernavn)) {
    header("Location: http://$website_id/System/login/loginlogoff.asp");

    } elseif (empty($website_id)) {
    header("Location: http://$website_id/System/login/loginlogoff.asp");

    } else {

        $_SESSION['side_id'] = $_GET['site_id'];   
        $_SESSION['login_check'] = 1;
        $_SESSION['brugernavn'] = $brugernavn;
        $_SESSION['website'] = $website;
       
        header("Location: admin.php");

};
?>

#### admin.php ####
###################

<?php
session_start();

if(isset($_SESSION["site_id"])) {
    echo $_SESSION["site_id"] ." er sat!";
    } else {
echo"\$_SESSION[\"site_id\"] er IKKE sat!";
}; //det er så den test jeg fik fra dig, som melder fejl.

$siteid = $_SESSION['side_id'];
    echo $_SESSION["side_id"];

?>
<html>
<!-- Her er en masse html snask som virker uden problemer, så gider ikke kopiere det, da det er total uden betydning. -->
</html>


Det er så det. I (næsten) alle detaljer. Jeg har lige undesøgt det, og jeg har tilladt cookies. Please kig på det igen :)
Avatar billede anderseiler Nybegynder
08. april 2005 - 20:21 #12
Jeg har selv fundet et svar på problemet. I start.php erstatter jeg sidste line (header("Location: admin.php");), med en include( "admin.php" );, så virker det hele uden problemer.

1000 tak for hjælpen, men da ingen af jer kom med et svar jeg kunne bruge, tager jeg selv point!

Igen, tak for hjælpen

Mvh
Anders
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