Avatar billede krydset Nybegynder
02. december 2003 - 09:42 Der er 33 kommentarer og
1 løsning

if sætning

Jeg er ved at lave en shop, men har lidt knas med en if sætning

den er her

if($_SESSION[tjek] == "") {
    echo "så log dog ind...";
} else if(isset($kob_x)) {
          include("shop/dbconnect.php");
        mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error());
    }

når man logger ind bliver $_SESSION[tjek] sat til OK, og hvis den ikke er sat skal det ikke være muligt at tilføje til kurven som ovenstående script gør.

Men der står bare hele tiden "så log dog ind" og intet bliver tilføjet i kurven. kan i hjælpe med den
Avatar billede krydset Nybegynder
02. december 2003 - 09:45 #1
Sorry det er det her der ikke funger ordentligt

if(!$_SESSION[tjek]) {
    echo "så log dog ind...";
} else if(isset($kob_x)) {
          include("shop/dbconnect.php");
        mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error());
    }
Avatar billede Slettet bruger
02. december 2003 - 09:53 #2
Har du husket at køre session_start() ?
Prøv:
if (empty($_SESSION['tjek']))

I princippet skal man altid skrive $_SESSION['tjek'] i stedet for $_SESSION[tjek]
Avatar billede xyborx Nybegynder
02. december 2003 - 09:54 #3
Jeg ville personligt gøre sådan, men din metode burde også virke (dog med en notice, da php tror at tjek er en konstant).

if(!isset($_SESSION['tjek']) || empty($_SESSION['tjek'])) {
    echo "så log dog ind...";

Du kan evt prøve at dubugge ved at udskrive indholdet af $_SESSION['tjek']:

if(isset($_SESSION['tjek']) && !empty($_SESSION['tjek'])) {
    echo '$_SESSION['tjek'] indeholder: '.nl2br(htmlentities($_SESSION['tjek']));
else
    echo '$_SESSION['tjek'] er ikke sat, eller er tom';
Avatar billede krydset Nybegynder
02. december 2003 - 09:57 #4
Har debugget ved at udkrive session tjek, og den bliver sat til OK men prøver lidt af det i har skrevet
Avatar billede krydset Nybegynder
02. december 2003 - 10:04 #5
Har prøvet det her

if (empty($_SESSION['tjek'])) {
echo "så log dog ind...";
} else if(isset($kob_x)) {
          include("shop/dbconnect.php");
        mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error());
    }
Avatar billede krydset Nybegynder
02. december 2003 - 10:06 #6
Det siger osse bare så log dog ind hele tiden
Avatar billede krydset Nybegynder
02. december 2003 - 10:08 #7
Kan man ikke sætte det til at tjekke om $_SESSION[tjek] = "OK" inden den fortager sig noget
Avatar billede zyco_dk Nybegynder
02. december 2003 - 10:09 #8
jerg tror at du har glemt session_start i toppen

<?
session_start();
?>

/rene
Avatar billede Slettet bruger
02. december 2003 - 10:09 #9
Er du helt sikker på, at du ikke udskriver den fejl et andet sted i koden også?

Hvis den skriver "så log dog ind..." ved den if, du har nu, så ER $_SESSION['tjek'] tom.
Avatar billede Slettet bruger
02. december 2003 - 10:12 #10
Jo, man kan også godt tjekke om den er = "OK", men hvis empty() giver en sand værdi, så er variablen tom, og kan dermed heller ikke være ="OK"
Avatar billede krydset Nybegynder
02. december 2003 - 10:14 #11
hvis jeg sætter en echo $_SESSION[tjek] op så udskriver den OK når jeg er logget ind, og uskriber intet når man ikke er logget ind, så den virker.


men selvom jeg er logget ind og prøvet at putte i kurven siger den så log dog ind og der kommer intet i kurven !!
Avatar billede krydset Nybegynder
02. december 2003 - 10:14 #12
det her er hvad jeg har i toppen

<?PHP ob_start(); ?>
<?PHP session_start(); ?> <!--Starter sessionen-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<HTML>
    <HEAD>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <TITLE> <?PHP echo $title; ?> </TITLE>
        <LINK rel="stylesheet" type="text/css" href="style.css">
       
</HEAD>

<body background="pic/baggrund.jpg" style="background-repeat: no-repeat;">
Avatar billede krydset Nybegynder
02. december 2003 - 10:17 #13
hov hov har lige opdaget en fejl.

ved echo $_session[tjek] siger den ok efter login og derefter når siden er reloadet udskriver den kun et 0, men hvorfor den gør det ved jeg ikke!!
Avatar billede krydset Nybegynder
02. december 2003 - 10:20 #14
og som i kan se har jeg session_start i filen
Avatar billede krydset Nybegynder
02. december 2003 - 10:23 #15
det her er hvad der sker når man logger ind

if(isset($login))
{
    if($antal != 1) 
    {
        ikke_logget_ind();
    }
   
    else
   
    {
    $ip = $_SERVER['REMOTE_ADDR'];
    $_SESSION[name] = $_POST[tlfnr];
    $_SESSION[tjek] = "OK";
    echo "<div id='login_msg'>Hej <b>$_SESSION[name]</b> du kunne godt logges ind</div>";
    $tid = time();
    mysql_query("INSERT INTO users_online (bruger, tid) VALUES ('$_POST[tlfnr]','$tid')") or die(mysql_error());
    mysql_query("INSERT INTO ip_log (ip_adresse, dato, bruger_navn) VALUES ('$ip','$dato','$_SESSION[name]')") or die(mysql_error());
    }
}
Avatar billede Slettet bruger
02. december 2003 - 10:27 #16
Hvilken session-metode bruger du: cookies eller URL?
Avatar billede Slettet bruger
02. december 2003 - 10:28 #17
Et lille urelateret tip: <body background="pic/baggrund.jpg" style="background-repeat: no-repeat;"> er ikke gyldig med XHTML-Strict
Avatar billede krydset Nybegynder
02. december 2003 - 11:05 #18
hvordan mener du session- metode
Avatar billede Slettet bruger
02. december 2003 - 11:40 #19
For at sessions skal virke, skal brugeren ved begyndelsen af sessionen have tildelt et sessionID. Dette skal bruges, når han skal se yderligere sider.

Der er to metoder et sådant ID kan overføres:

1) med en cookie. Dette vil naturligvis kræve at browseren understøtter cookies. Det gør alle browsere nu til dags, men det kan slås fra i browserindstillingerne, og hvis brugeren har gjort det, virker en cookie-baseret session ikke.

2) via URL. Denne er uafhængig af browserindstillinger, men giver en grim adresse. Den kan kendes ved, at når man klikker videre på siden er der noget i stil med ?session=da357s8dn9b9y0r i adressefeltet.

For at URL-metoden skal virke, skal man enten have slået session.use_trans_sid til eller også skal man selv tilføje den til alle links internt på sit site.
Avatar billede krydset Nybegynder
02. december 2003 - 11:53 #20
så er det url jeg bruger
Avatar billede krydset Nybegynder
02. december 2003 - 11:54 #21
men hvorfor bliver den sat til 0 efter jeg er logget ind??
Avatar billede Slettet bruger
02. december 2003 - 11:57 #22
Du følger sandsynligvis et link, som ikke indeholder sessionID'et
Avatar billede krydset Nybegynder
02. december 2003 - 12:06 #23
www.pc.dk.dk login med test/12345678 og så prøv at trykke på et link så kan du se hvad der sker :-O
Avatar billede krydset Nybegynder
02. december 2003 - 12:08 #24
Avatar billede Slettet bruger
02. december 2003 - 12:41 #25
Den skriver ingen sessionID i adressen, men den lægger en cookie. Første gang siden hentes, er sessionID i adresserne på siden, men derefter bruges cookies. Altså ser det ud til at denne del af din opsætning kører fint.

Jeg kan godt se, at den på een gang skriver både "så log dog ind" og "du er blevet logget ind", så det lyder som om du måske gør noget i forkert rækkefølge i dit script.

Kunne man få hele scriptet at se?

Derudover har min browser et problem med at din kode mildest talt ikke er gyldig XHTML. Når man bruger XHTML skal ALLE tags være med små bogstaver.
Avatar billede krydset Nybegynder
02. december 2003 - 12:47 #26
Oki, det vil jeg ændre når det her er fixet :-O


jeg har det hele på en side så det er en lidt stor fil, men smider den her på www.pc-dk.dk/fejl.phps
Avatar billede Slettet bruger
02. december 2003 - 13:10 #27
OK, jeg har fundet problemet. Lige når man logger ind, er $_SESSION['tjek'] ikke blevet sat til OK endnu, før den kommer helt ned til login-kontrollen. Derfor brokker den sig. Når man klikker videre til en ny side, virker det som forventet.

Løsning:

Flyt if(isset($login))-blokken højere op i scriptet.

Et andet tip ville være at flytte alle funktionserklæringerne til en anden fil, og blot inkludere den i toppen af selve scriptet. Og bare inkluder shop/dbconnect.php en gang i toppen også.
Avatar billede krydset Nybegynder
02. december 2003 - 13:22 #28
denn går stadig tilbage til Resource id #2 :-(
Avatar billede krydset Nybegynder
02. december 2003 - 13:24 #29
her er hele koden som den er nu www.pc-dk.dk/fejl.phps
Avatar billede Slettet bruger
02. december 2003 - 13:26 #30
Jeg ser på det i aften.
Avatar billede krydset Nybegynder
02. december 2003 - 13:29 #31
oki
Avatar billede krydset Nybegynder
02. december 2003 - 17:06 #32
takker for hjælpen sandbox den er der nu :-D men ved ikke rigtig hvad jeg gjorde :-O
Avatar billede Slettet bruger
02. december 2003 - 20:04 #33
Selv tak. Jeg vil stadig anbefale at flytte alle funktioner over i en anden fil. Det vil kunne øge overskueligheden af det ganske betragteligt.
Avatar billede krydset Nybegynder
02. december 2003 - 20:06 #34
yes det gør jeg osse på et tidspunkt ;)
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