[PHP] variabelen in adresbalk verbergen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Pronk
  • Registratie: Februari 2002
  • Laatst online: 11-09 21:26
Hier een klein stukje uit een script:
PHP:
1
2
3
if ($email=="") {
Header("Location: vergeten.php?mailerinformatie=<br>U heeft geen e-
mail adres ingevuld!");

Als mensen geen email adres hebben ingevult wordt nu de pagina vergeten.php opnieuw geladen met de variabele "mailerinformatie" Deze informatie wordt dan dus boven het fomulier weergegeven.

Dat werkt allemaal perfect maar nu wil ik eigenlijk NIET dat:

http://www/blablabla.nl/vergeten.php?mailerinformatie=<br>U heeft geen e-mail adres ingevuld!

in mijn adresbalk staat.


Wat moet ik anders doen om die informatie uit mijn adresbalk weg te laten?

[ Voor 6% gewijzigd door Pronk op 24-11-2003 15:12 ]

Ja lekker!


Acties:
  • 0 Henk 'm!

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 17-07 14:45
Een voorbeeldje:
PHP:
1
2
if ($email == "")
  Header("Location: vergeten.php?error=1");

En dan vergeten.php:
PHP:
1
2
if ($_GET['error'] == 1)
  $mailerinformatie="<br>U heeft geen e-mail adres ingevuld!";


Als je helemaal niets via GET mee wilt sturen dan zou je aan sessies kunnen denken, maar om dat nou te gebruiken voor errormeldingen ...

[ Voor 43% gewijzigd door RupS op 24-11-2003 15:20 ]


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

En anders de imho ranzige manier;

frameset, waarvan de ene 0 pixels is en de andere 100%. Zodat helemaal geen urls zichtbaar zijn. Toch zou ik idd ook de maniuer van RupS kiezen.

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • Pronk
  • Registratie: Februari 2002
  • Laatst online: 11-09 21:26
Aha duidelijk: Maar in de toekomst wil ik ook wachtwoorden en mailadressen op deze manier gaan versturen. Dat moet ik dan gaan doen via sessions? Hoe gaat mn code er dan uit zien?

Ja lekker!


Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Je zou ook een javascript forward kunnen doen met een verborgen formulier
PHP:
1
2
3
4
5
6
7
8
9
10
if(empty($email))
{
    echo
     "<form action=\"vergeten.php\" method=\"post\" name=\"formuliertje\">\n"
    ."<input type =\"hidden\" name=\"error\" value=\"Hier je fout melding\">\n"
    ."</form>\n"
    ."<script language=\"javascript\" type=\"text/javascript\">\n"
    ."   document.forms['formuliertje'].submit();\n"
    ."</script>\n"
    ;

}

vergeten.php
PHP:
1
2
3
4
if($_POST['error'])
{
    echo $_POST['error'];
}


Niet de meest mooie oplossing, maar wel zonder iets met de url mee te geven

Acties:
  • 0 Henk 'm!

  • Helox-in-a-box
  • Registratie: Augustus 2000
  • Laatst online: 10:07
Pronk schreef op 24 november 2003 @ 15:28:
Aha duidelijk: Maar in de toekomst wil ik ook wachtwoorden en mailadressen op deze manier gaan versturen. Dat moet ik dan gaan doen via sessions? Hoe gaat mn code er dan uit zien?
http://nl2.php.net/manual/nl/ref.session.php

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Wachtwoorden en mailadressen via een Header is natuurlijk zeer onverstandig! Maar op nl1.php.net is alles te vinden, met prima uitleg. :)

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • Pronk
  • Registratie: Februari 2002
  • Laatst online: 11-09 21:26
Oke bedankt ik ga voorlopig weer een paar dagen lezen!

Ja lekker!


Acties:
  • 0 Henk 'm!

Verwijderd

werken spaties uberhaupt via url?
volgens mij vindt hij dat zowiezo niet echt lekker?! :?

ff testen
[edit]
testfiletje later, het werkt idd gewoon! :)
geinig is dat altijd al zo geweest?

[ Voor 30% gewijzigd door Verwijderd op 24-11-2003 16:43 ]


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Verwijderd schreef op 24 november 2003 @ 16:41:
werken spaties uberhaupt via url?
volgens mij vindt hij dat zowiezo niet echt lekker?! :?

ff testen
[edit]
testfiletje later, het werkt idd gewoon! :)
geinig is dat altijd al zo geweest?
Als je iets wilt sturen via een header zou je eventueel een array kunnen maken, deze array serializen, dan compressen en daarna base64encoden.

PHP:
1
$string = base64enc(gzdeflate(serialize($gegevens)));


maar een slimme hacker vindt het natuurlijk nogsteeds.

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Waarom niet gewoon versturen via POST ipv. GET?
dan staat het niet in de adresbalk, of denk ik nu te simpel?

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op 24 november 2003 @ 16:41:
werken spaties uberhaupt via url?
volgens mij vindt hij dat zowiezo niet echt lekker?! :?

ff testen
[edit]
testfiletje later, het werkt idd gewoon! :)
geinig is dat altijd al zo geweest?
Nee, en daarnaast is het ook fout. Dat het werkt heeft meer te maken met de laksheid van IE. Officieel hoor je een %20 of + te gebruiken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Wolfboy schreef op 24 november 2003 @ 22:12:
Waarom niet gewoon versturen via POST ipv. GET?
dan staat het niet in de adresbalk, of denk ik nu te simpel?
ja inderdaad...
dat is de oplossing.

kan je wel moeilijk doen met base64encode en serialize en frame's van 100% breed enz, maar POST is de oplossing, tenzei je vars niet uit een form komen.

Acties:
  • 0 Henk 'm!

Verwijderd

Nee, en daarnaast is het ook fout. Dat het werkt heeft meer te maken met de laksheid van IE. Officieel hoor je een %20 of + te gebruiken.
hehehe dank op die %20 kon ik gister zo snel even niet komen :)

ik verstuur altijd hoogstens een ?iets=x en haal de "actie" daarvan weer uit de database of code, verstuur zo min mogelijk via de url, al is het soms wel verdomd handig :)

Acties:
  • 0 Henk 'm!

  • Pronk
  • Registratie: Februari 2002
  • Laatst online: 11-09 21:26
Ja het kan wel het beste via POST denk ik. Maar kan ik variabelen via POST versturen zonder op een "Submit" knop te moeten drukken? (en zonder javascript?)

Ja lekker!


Acties:
  • 0 Henk 'm!

  • Akerboom
  • Registratie: Juni 2001
  • Laatst online: 07-07 16:30

Akerboom

Codito, ergo sum

PHP:
1
2
3
4
5
6
<?php
if ($email=="") {
$mailerinformatie="<br>U heeft geen e-mail adres ingevuld!";
include "vergeten.php"; 
}
?> 


Zoiets kan toch ook... maargoed, gewoon sessie geruiken... veel makkelijker!

[ Voor 15% gewijzigd door Akerboom op 26-11-2003 13:40 ]


Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 05-09 14:30

DizzyWeb

Ondertiteld

Janoz schreef op 24 november 2003 @ 22:30:
[...]

Nee, en daarnaast is het ook fout. Dat het werkt heeft meer te maken met de laksheid van IE. Officieel hoor je een %20 of + te gebruiken.
Daar heb je url_encode en url_decode voor...

Acties:
  • 0 Henk 'm!

Verwijderd

Skaah schreef op 24 november 2003 @ 22:09:
[...]


Als je iets wilt sturen via een header zou je eventueel een array kunnen maken, deze array serializen, dan compressen en daarna base64encoden.

PHP:
1
$string = base64_encode(gzdeflate(serialize($gegevens)));


maar een slimme hacker vindt het natuurlijk nogsteeds.
Wat zou er eigenlijk in die array moeten staan: $gegevens?

Kan ik dan $string naar de url sturen: header("Location: test.php?var=".url_encode($string));

Maar hoe lees ik die gegevens dan weer uit?

Alvast bedankt,

Groet Rian
Pagina: 1