sessie is verloren na jquery request

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Jeffrey Barn

jeffrey Barn

02/05/2012 11:31:59
Quote Anchor link
Hallo,

ik heb een probleempje, ik maak een sessie aan via php/jquery.
Maar als ik dan de sessie in firefox wil gebruiken werkt het, maar zodra ik het in IE of chrome doe raakt de sessie helemaal verloren.

Code bij jquery:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    $.post(hand + '?act=login', { text: alert }, function(data) {
    });

?>


Code in php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
session_start();


$sqlhost = "localhost"; //mysql host (usually localhost)
$sqluser = "root"; //mysql username
$sqlpass = ""; //mysql password
$sqldb = "chat"; //mysql database name


$user = mysql_real_escape_string($_POST['user']);
$pass = ep($user,mysql_real_escape_string($_POST['pass']));
$query = mysql_query("SELECT * FROM users WHERE email='".$user."' AND pass='".$pass."'");
if($query) {
if(mysql_num_rows($query) > 0) {
$query = mysql_query("SELECT * FROM users WHERE email='$user'");
$row = mysql_fetch_array($query);
$_SESSION['name'] = $row['user'];
die("1");
}
else{
die("0");
}
}
else{
die("2");
}


?>

Ik heb de bovenstaande code vereenvoudigt.

Alvast bedankt,
Jeffrey
Gewijzigd op 02/05/2012 11:32:36 door Jeffrey Barn
 
PHP hulp

PHP hulp

29/04/2024 14:18:00
 
Chris PHP

Chris PHP

02/05/2012 11:57:04
Quote Anchor link
Een aantal dingen.

- Waarom al zoveel die in je code?
- Waarom 2 verschillende queries? De opmaak bedoel ik.
- Waarom staat er 'ep' in je $pass?

Als je de gebruikersnaam ergens wil printen op je scherm (neem aan dat hij daarom in een sessie zit), raad ik ook aan een htmlspecialchars te gebruiken, anders kan een lolbroek je site layout welleens veranderen.

Ik vind het wel appart dat deze code werkt in FF, echter is FF wel iets gemoedelijker als IE uiteraard. Ik raad aan de code eens goed te herschrijven met structuur en zonder all die dies.
 
Jeroen VD

Jeroen VD

02/05/2012 12:46:08
Quote Anchor link
ik kan me vergissen, maar er zijn helemaal geen sessies mogelijk in jQuery? jQuery is javascript, dus client-side. sessions worden toch server-side opgeslagen, en heeft de client toch geen toegang tot?
 
Chris PHP

Chris PHP

02/05/2012 12:52:41
Quote Anchor link
Jeroen vd op 02/05/2012 12:46:08:
ik kan me vergissen, maar er zijn helemaal geen sessies mogelijk in jQuery? jQuery is javascript, dus client-side. sessions worden toch server-side opgeslagen, en heeft de client toch geen toegang tot?


De sessie wordt toch netjes in php gemaakt in het onderste script? Waar hij dat stukje jQuery voor gebruikt, geen idee is te weinig code om te zien denk ik.

In het jQuery doet hij niets met de sessie (voor zover duidelijk is in dat 1ne regeltje)

P.S. voglens mij moet dat wat hij wil je het javascript ook met get en niet met post. Hij probeerd dat uit een url te halen lijkt me.
Gewijzigd op 02/05/2012 12:53:58 door Chris PHP
 
Jeroen VD

Jeroen VD

02/05/2012 13:35:32
Quote Anchor link
ik heb het eventjes herschreven. twee puntjes:
- de querys kun je samenvoegen tot 1, selecteer alle velden die je nodig hebt
- die die()'s aan het einde zijn volgens mij niet nodig, dat kun je ook af met echo's
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
session_start();

$sqlhost = "localhost"; //mysql host (usually localhost)
$sqluser = "root"; //mysql username
$sqlpass = ""; //mysql password
$sqldb = "chat"; //mysql database name

$query = mysql_query(
    "SELECT
        veld1,
        veld2
     FROM
        users
    WHERE
        email = '"
. mysql_real_escape_string($_POST['user']) . "'
    AND
        pass='"
. ep($user,mysql_real_escape_string($_POST['pass'])) . "'");
if($query === false)
{

    trigger_error(mysql_error($query));
}

else
{
    if(mysql_num_rows($query) > 0)
    {

        $row = mysql_fetch_array($query);
        $_SESSION['name'] = $row['user'];
        echo '1';
    }

    else
    {
        echo '0'
    }
    echo '2';
}

?>
Gewijzigd op 02/05/2012 14:12:33 door Jeroen VD
 
Erwin H

Erwin H

02/05/2012 14:03:33
Quote Anchor link
Jeroen, die 'mysql_error' staat er nu een beetje voor Jan met de korte achternaam in. Die geeft een string terug, maar aangezien je er niets mee doet kan je het net zo goed weglaten.
Waarom $user en $pass nog vullen? Doe je zo helemaal niets mee.
Als alles nu goed gaat krijg je als uitkomst '12', volgens mij ook niet helemaal gelijk aan wat de TS oorspronkelijk had.
 
Jeroen VD

Jeroen VD

02/05/2012 14:07:44
Quote Anchor link
inderdaad, $user en $pass was ik vergeten weg te halen.

nog iets wat ik vergeten te vragen was: wat doet de functie ep()? kan er niets over vinden op php.net.

en natuurlijk ook trigger_error()? ik werk met PDO, en voordat ik daarmee ging werken heb ik foutafhandeling nooit goed toegepast.

maar wat de TS nu heeft, kan helemaal niet. er staat daar een else voor nop bij, ik dacht dat hij dit bedoelde.
Gewijzigd op 02/05/2012 14:08:10 door Jeroen VD
 
Wouter J

Wouter J

02/05/2012 14:10:10
Quote Anchor link
@Jeroen, ep bestaat ook niet in PHP. Het is denk ik een functie een zelfgemaakte functie.

En trigger_error zal zou niet werken, plaats er een mysql_error in als argument ofzo.
 
Jeffrey Barn

jeffrey Barn

02/05/2012 19:04:51
Quote Anchor link
Ik heb het zelf al ggefixt ben met cookies gaan werken.
EP is voor password encryptie ;)
Maar bedankt :)
 
Chris PHP

Chris PHP

03/05/2012 07:38:37
Quote Anchor link
@Jeffrey:

Maar waarom gebruik je twee verschillende stylen in je queries?

De eerste op regel 12:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= mysql_query("SELECT * FROM users WHERE email='".$user."' AND pass='".$pass."'");
?>


De tweede op regel 15:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= mysql_query("SELECT * FROM users WHERE email='$user'");
?>


ep ja? Ik gebruik meestal hash, kun jij eens naar de php.net functie van ep linken kreeg hem zelf niet gevonden namelijk.
Gewijzigd op 03/05/2012 07:40:51 door Chris PHP
 
Pg Vincent

Pg Vincent

03/05/2012 09:12:24
Quote Anchor link
Waaraan zie je dat er geen session is? Bij javascript en ajax requests worden cookies meegestuurd dus ook het sessioncookie hoort mee te komen.

ps: let op dat je mysql_real_escape_string(ep(...)) moet doen, niet ep(mysql_real_escape_string(..)). Je wilt immers de ge-escapte versie van de ep() van de string opslaan, en niet de ep van de ge-escapete versie van de string.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.