[php] sessieid meegeven in header

Pagina: 1
Acties:
  • 59 views sinds 30-01-2008

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Dit stond in de handleiding:

<A HREF="nextpage.php?<?=SID?>">click here</A>

Dus op deze manier kun je je sessieid meegeven in een url. Nu wil ik het sessie id meegeven via header('Location: login.php?=SID'); Op deze manier geeft hij dus nix mee in naar login.php want er komt in de adres balk gewoon login.php=SID te staan en als ik hem via een url meegeef dan drukt hij de sessieid gewoon af in de adres balk. Dit is dus niet goed, misschien is dit wel een hele domme vraag, maar ik heb al het een en ander geprobeerd, maar nix werkt. Tevens een vraagje over het volgende login script:
PHP:
1
<?session_start();if (!get_magic_quotes_gpc()) {     $naam = addslashes($naam);     $email = addslashes($email); }include("config.php");if ($HTTP_REFERER =="andere referrer" or $HTTP_REFERER =="een referrer") {    if ($HTTP_POST_VARS["naam"]=="" or $HTTP_POST_VARS["paswoord"]=="") {                if ($HTTP_POST_VARS["login"] == "Login" &amp;&amp; $HTTP_POST_VARS["naam"] == "" &amp;&amp; $HTTP_POST_VARS["paswoord"] == "") {            echo "U heeft uw naam en paswoord niet ingevoerd";        }        if ($HTTP_POST_VARS["login"] == "Login" &amp;&amp; $HTTP_POST_VARS["naam"] <> "" &amp;&amp; $HTTP_POST_VARS["paswoord"] == "") {            echo "U heeft uw paswoord niet ingevoerd";        }            if ($HTTP_POST_VARS["login"] == "Login" &amp;&amp; $HTTP_POST_VARS["naam"] == "" &amp;&amp; $HTTP_POST_VARS["paswoord"] <> "") {            echo "U heeft uw naam niet ingevoerd";        }            loginform($HTTP_POST_VARS["naam"],$HTTP_POST_VARS["paswoord"]);    } elseif ($UserSession->login == 1) {        include("top.php");        echo 'Welkom '.$UserSession->naam;    } else {        $query = mysql_query("SELECT * FROM gebruikers WHERE naam = '$naam' AND paswoord = '$paswoord'");        $results = mysql_num_rows($query);        if ($results == '1') {            $UserSession->login = 1;            $UserSession->naam = "$naam";            $UserSession->paswoord = "$paswoord";            session_register("UserSession");            header('Location: login.php?=SID');            exit();        } else {            include("top.php");            echo "Je gebruikersnaam of password klopt niet.\n";        }    }} else {    include("top.php");    echo "error 1: klik <a href='index.php'>hier</a> om naar het hoofdmenu te gaan.";}include("bottom.php");?>

Als ik dit als login script gebruik, moet ik 2x mn username en password invullen eer ik op de pagina kom waar ik als user op mag komen.. weet iemand hoe dit kan? Dit script heb ik ergens vandaan gehaald, ik heb hem wel zelf aardig aangepast, dus geprobeerd het veiliger te maken. Ik mag geen cookies gebruiken, alleen maar sessies en ook geen java.

  • Glock
  • Registratie: November 2001
  • Niet online
PHP:
1
<?header("Location: login.php?=".SID);?>

Werkt dit niet :?
Edit: Hangt er ook vanaf welke php versie je btw heb, in de php manual staan talloze notes die dit vermelden en oplossingen geven...
http://www.php.net/manual/en/ref.session.php

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
ik zal het ff testen

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
werkt niet :(

  • Glock
  • Registratie: November 2001
  • Niet online
PHP:
1
<?session_id();?>

meer zeg ik niet meer, dit is best wel RTFM

  • iznogood
  • Registratie: September 2001
  • Niet online
Uh die sessie ID hoeft je volgens mij helemaal niet mee te geven, maar kun je geloof ik zo opvragen op een of andere manier.

Just as Good


  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
En waarom moet ik 2x mn naam en paswoord invoeren voordat er staat dat ik ingelogd ben, snap er nix van, ik heb hem nu een beetje aangepast maar :?

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Zie ik register eerst een variabele usersession, vervolgens stuur ik een header met login.php als doel. Die variabelen die ik geregistreerd hebt, die zijn dan toch meteen op te vragen nadat ik de header heb gestuurd. Of komt het doordat ze niet afkomstig zijn van een 'POST' maar van een Sessie, omdat naam en paswoord dan in die sessie staan en geen HTTP_POST_VARS meer zijn, maar HTTP_SESSION_VARS.. en hij zo die if statement over slaat. Als dit zo is, hoe kan ik dat dan zeggen. Iets van

if (http_post_vars() or http_post_vars() or http_session_vars() or http_post_vars()) {
blabla}

of is dit nu niet meer veilig genoeg:?

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
ook niet :( de wanhoop slaat bijna toe :(

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 13:45
Je kan in php.ini aanzetten dat ie dat sessie-id automatisch meestuurt.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 13:45
RSD:
ook niet :( de wanhoop slaat bijna toe :(
En kap nou eens met dat schoppen :(

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

<ot>
3x na elkaar posten is niet nodig, gebruik de Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/tweakers/images/icons/edit.gif knop ajb
</ot>

Doet iets met Cloud (MS/IBM)


  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Dit heb ik nu:
[php
if ($HTTP_REFERER =="een referrer" or $HTTP_REFERER =="een referrer") {
if ($HTTP_POST_VARS["naam"]=="" or $HTTP_POST_VARS["paswoord"]=="" or !$HTTP_SESSION_VARS["paswoord"] or !$HTTP_SESSION_VARS["naam"]) {
include("top.php");
if ($HTTP_POST_VARS["login"] == "Login" && $HTTP_POST_VARS["naam"] == "" && $HTTP_POST_VARS["paswoord"] == "") {
echo "U heeft uw naam en paswoord niet ingevoerd";
}
if ($HTTP_POST_VARS["login"] == "Login" && $HTTP_POST_VARS["naam"] <> "" && $HTTP_POST_VARS["paswoord"] == "") {
echo "U heeft uw paswoord niet ingevoerd";
}
if ($HTTP_POST_VARS["login"] == "Login" && $HTTP_POST_VARS["naam"] == "" && $HTTP_POST_VARS["paswoord"] <> "") {
echo "U heeft uw naam niet ingevoerd";
}
loginform($HTTP_POST_VARS["naam"],$HTTP_POST_VARS["paswoord"]);
} else {
if ($UserSession->login == 1) {
include("top.php");
echo 'Welkom '.$UserSession->naam;
} else {
$query = mysql_query("SELECT * FROM gebruikers WHERE naam = '$naam' AND paswoord = '$paswoord'");
$results = mysql_num_rows($query);
if ($results == '1') {
$UserSession->login = 1;
$UserSession->naam = "$naam";
$UserSession->paswoord = "$paswoord";
session_register("UserSession");
header('Location: login.php');
exit();
} else {
include("top.php");
echo "Je gebruikersnaam of password klopt niet.\n";
}
}
}
} else {
include("top.php");
echo "error 1: klik <a href='index.php'>hier</a> om naar het hoofdmenu te gaan.";
}
[/php]
ok sorry, zal het niet meer doen

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
PHP:
1
<?1)if ($HTTP_REFERER =="een referrer" or $HTTP_REFERER =="een referrer") {2)    if ($HTTP_POST_VARS["naam"]=="" or $HTTP_POST_VARS["paswoord"]=="" or !$HTTP_SESSION_VARS["paswoord"] or !$HTTP_SESSION_VARS["naam"]) {3)        4)        include("top.php");5)6)        if ($HTTP_POST_VARS["login"] == "Login" &amp;&amp; $HTTP_POST_VARS["naam"] == "" &amp;&amp; $HTTP_POST_VARS["paswoord"] == "") {7)            echo "U heeft uw naam en paswoord niet ingevoerd";8)        }9)10)        if ($HTTP_POST_VARS["login"] == "Login" &amp;&amp; $HTTP_POST_VARS["naam"] <> "" &amp;&amp; $HTTP_POST_VARS["paswoord"] == "") {11)            echo "U heeft uw paswoord niet ingevoerd";12)        }13)14)        if ($HTTP_POST_VARS["login"] == "Login" &amp;&amp; $HTTP_POST_VARS["naam"] == "" &amp;&amp; $HTTP_POST_VARS["paswoord"] <> "") {15)            echo "U heeft uw naam niet ingevoerd";16)        }17)18)        loginform($HTTP_POST_VARS["naam"],$HTTP_POST_VARS["paswoord"]);19)20)    } else {21)22)        if ($UserSession->login == 1) {23)            include("top.php");24)            echo 'Welkom '.$UserSession->naam;25)26)        } else {27)            $query = mysql_query("SELECT * FROM gebruikers WHERE naam = '$naam' AND paswoord = '$paswoord'");28)            $results = mysql_num_rows($query);29)30)            if ($results == '1') {31)            32)                $UserSession->login = 1;33)                $UserSession->naam = "$naam";34)                $UserSession->paswoord = "$paswoord";35)                session_register("UserSession");36)                header('Location: login.php');37)                exit();38)        39)            } else {40)                include("top.php");41)                echo "Je gebruikersnaam of password klopt niet.\n";42)            }43)        }44)    }45)46)} else {47)    include("top.php");48)    echo "error 1: klik <a href='index.php'>hier</a> om naar het hoofdmenu te gaan.";49)}?>

Owkay eerst enkele algemene tips:

1een variabele uit de postvars benader je met $HTTP_POST_VARS['naam']: single quotes dus
2Gebruik geen HTTP_POST_VARS meer maar $_POST['naam'] als je PHP > 4.1.x gebruikt
3Als je op meerdere conditiets wil checken gebruik je else if.
Dus
code:
1
2
3
4
5
6
if( $bla = 1 ){
   //doe meuk
}else if( $ bla = 4 ){
   //doe andere meuk
}else{
   //nog meer meuk

4Als je sessies gebruikt, waarom doe je dan geen session_start() op elke pagina?
5Wees niet lief. Als iets via een post binnen moet komen, dan moet je ook alleen kijken op $_POST. Als je wilt checken of ie al in de sessie staat dan kun je bijv sessio_is_registerd() (oid) gebruiken, maar dit is een losse check
6Ga debuggen! Plaats echo's zodat je weet wat je code doet. Lees daar ook de FAQ over (http://gathering.tweakers.net/forum/list_messages/392390/#phpdebug)
7Als je controleert op een int moeten daar geen single quotes omheen (de check op row 30)
8Als je een variabele toewijst aan een andere, dan is het niet netjes om daar een " " omheen te zetten (als het beide strings zijn). Nu zal de ZEND comp. dat wel optimaliseren, maar het is toch een beetje _not_done_
PHP:
1
<?$myString   = "Hoi";$myString2  = $myString //goed$myString3  = "$myString" //minder mooi?>

9error_reporting(E_ALL); ZET DIT BOVENAAN JE SCRIPT! Of maak desnoods het volgende script:
PHP:
1
<?File: E_ALL.php$pageToInclude = $GET['page'];include( $pageToInclude );?>

Aanroepen met E_ALL.php?page=index.php (maar weet niet zeker of dit werkt, probeer het ff). Die file wel wegdonderen als het in productie gaat!!!

Maare, het kan zijn dat je hier allemaal geen bal aan hebt omdat het je probleem niet oplost, maar kijk er wel ff naar. BTW denk ik vooral dat regel 6 nuttig is: WEES NIET LIEF!
Mensen moeten hun login POSTEN, en hij staat niet in de sessie als zodanig (alleen in het object!)

Maar alsnog kan ik ook niet veel zeggen zonder index.php te zien. Maar als je mijn tips volgt moet het wel goed komen.

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
thnx er ging wat fout... ben er al achter dat bij $HTTP_SESSION_VARS["UserSession"] moet staan, maar die 2e if statement moet wat aan veranderen, maar wat??? 2x 'or' moet toch voldoende zijn :?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

zie de gewijzigde post van Glimi

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.