Goedendag,

Ten eerste wat een geweldig forum :)

Maar to the point, ik ben momenteel bezig met een eula aan het schrijven en zit met refer probleem.

De index.php redirect naar eula.php als je die niet eerst hebt geaccepteerd.


<?php
session_start();
if($_SESSION['EULA']!="Accepted") { header("Location: eula.php?ref=".$_SERVER['REQUEST_URI'].""); }
?>


Dit gaat helemaal goed gelukkig

nu in eula.php staat het volgende


<?php
if($_GET['ref']!=""){
	$_SETTING['REF']=$_GET['ref'];
} elseif(empty($_GET['ref']) and empty($_SETTING['REF'])) {
	$_SETTING['REF']="index.php";
}

if($_SESSION['EULA']=="Accepted"){
	header("Location: ".$_SETTING['REF']."");
} elseif(isset($_POST['eula'])){
	$_SESSION['EULA']="Accepted";
	header("Location: ".$_SETTING['REF']."");
}
?>


Dit gaat ook nog goed totdat het volgende voordoet:

ik ga als gebruiker ga ik naar

http://www.mijndomein.nl/?page=account&sub=retrievepass

aangezien ik van ergens anders kwam en de eula nog niet had geaccepteert wordt ik doorverwezen naar eula.php
omdat het een ref is ziet het de link er zo uit

http://www.mijndomein.nl/eula.php?ref=?page=account&sub=retrievepass

gaat nog gelukkig goed, maar als ik hem dan accepteer moet hij door linken naar

http://www.mijndomein.nl/?page=account&sub=retrievepass

maar in plaats daarvan redirect hij alleen door naar

http://www.mijndomein.nl/?page=account

dus hij negeert het deel vanaf de &

ik heb het proberen er ' ' omheen te zetten of dubbelen "" maar niks hielp

Zelf kom ik er niet meer uit en heb ik hier de hoop op gevestigd.

p.s. ik heb gekozen voor http://www.mijndomein.nl omdat ik localhost schrijf

Gr. Sem

urlencode($_SERVER['REQUEST_URI'])
Zorg dat ik de url een "%26" staat ipv een "&".

Voorbeeld: indien dit in de url staat: eula.php?ref=?page=account%26sub=retrievepass


probeer dan eens
<?php
$ref = $_GET['ref'] ;
echo '<a href="'. $ref .'">klik</a>';
?>

Voor php zal die %26 gewoon %26 blijven. $_GET['ref'] krijgt dan de waarde die je wil. In je html broncode zie je echter dat de link de waarde krijgt die je wil, met & ipv %26.

Hier vind je een site waar je de conversies ziet voor verschillende doeleinden:
http://rishida.net/scripts/uniview/conversion.php

Wat jij nu zoekt, vind je in het URI veld.
Heey iedereen,

Helaas werkt dit niet, hij gaat nog steeds alleen naar ?page=account en negeert alsnog de %26sub=retrievepass

Enige oplossing?
Dit gaat dus niet goed ook al zeg jij van wel.
........./eula.php?ref=?page=account&sub=retrievepass


Twee keer een ? werkt niet.
Heb je al de html entity geprobeerd voor die ampersand?

&amp;
SanThe schreef op 27.08.2008 22:42
Dit gaat dus niet goed ook al zeg jij van wel.
........./eula.php?ref=?page=account&sub=retrievepass


Twee keer een ? werkt niet.


Die ? kan je dan ook beter vervangen door %3F
Helaas werkte dit allemaal niet,

enig andere opties? en hebben jullie meer info nodig dan roep maar.
Ik heb het opgelost!!

Niet zoals ik het wou maar het ging mij om de werking ervan.
Dit heb ik gedaan:

index.php


<?php
session_start();
if($_SESSION['EULA']!="Accepted") { 
	$_SESSION['ref']=$_SERVER['REQUEST_URI']; 
	header("Location: eula.php"); 
}
?>


Ik zet hem nu niet in de url maar in een session.

eula.php


<?php
session_start();
if(empty($_SESSION['ref'])) {
	$_SESSION['ref']="index.php";
}

if($_SESSION['EULA']=="Accepted"){
	header("Location: ".$_SESSION['ref']."");
} elseif(isset($_POST['eula'])){
	$_SESSION['EULA']="Accepted";
	header("Location: ".$_SESSION['ref']."");
}
?>


En deze hierboven ook vervangen door de session.

Dus nu niks meer in de url maar in de session, ik vind het goed genoeg dus allemaal bedankt.

Gr. Sem
Je had de url ook kunnen encoden in een willekeurig en- decode algoritme. Ik zou voor de makkelijkheid gaan voor:

url_encode(base64_encode());

en aan de andere kant:

base64_decode(url_decode());

:)

Maar jou oplossing is ook goed. (ik hou er alleen niet van om voor elk willekeurig dingetje een sessie op te zetten. Als je ze vergeet te destroyen bestaan ze je hele sessie. Wat weer server vervuiling is ;))

Reageren