Toon posts:

[PHP] Session probleempje!

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb dus een zeer uitgebreid bannerscirpt geschreven wat werkt met sessions. Dus als je op een banner klikt staat in een session variabele opgeslagen welke banner dat was en wordt de overeenkomstige url uit de database gehaald en geladen. er is echter 1 probleem. Als ik een pagina open met zo'n banner erop worden de banners wel geladen maar wordt de url na een klik niet uit de database gehaald. het werkt echter pas als ik de pagina een keer gefreshed heb, heeft dit iets met die sessions te maken? en zoja wat is er aan te doen?! (zo nee trouwens ook :))

Verwijderd

het plaatsen van wat code zou een behulpzame toevoeging kunnen zijn :P

Verwijderd

Topicstarter
Ja wat wil je hebben? het is een behoorlijk groot script natuurlijk...

<?php
session_start();
session_register("AD");
if(count($AD) == "0"){$AD[] = "";}
?>
daar begint het ongeveer mee bij mij...
verder zit er ook nog een toekenning van het bannerid aan een variabele in en die gaat ongeveer zo:
<?if($AD[$sid.$aid] != $idban){
$AD[$sid.$aid] = $idban;
}?>
waarbij die $idban het id van de banner is die geladen is (uit de db) en $sid en $aid het nummer ($aid) van de banner op side $sid is.


de redirect voor de url begint hiermee:
<?php
session_start();
session_register("AD");
$id = $AD[$sid.$aid];
?>

Verwijderd

Sorry, maar ik kan hier niet echt wijs uit worden zo.. snap ook niet echt bijzonder goed wat je probleem eigenlijk is.. De url wordt dus niet direct als link onder de banner geladen?? maar pas na een refresh? Tja, dat kan aan van alles liggen... zo kan ik er iig weinig mee...

Verwijderd

Topicstarter
Een banner ziet er zo uit:

<a href="redir.php?sid=15&aid=0" target="_blank">
[img]"banner.php?sid=15&aid=0&x=468&y=60"[/img]
</a>

Uit banner.php komt een random banner, het probleem is dus dat het ID van die random banner ook op de 1 of andere manier in redir.php moet komen. Vandaar dat deze in een sessionvariabele moet worden opgeslagen. Dit werkt ook allemaal al, maar als je de pagina voor de eerste keer opent is er nog geen sessionvariabele gesetm dit gebeurt pas na een keer refreshen...

Verwijderd

Kan je het niet beter gewoon bij 1 file houden??? Deze doet een random in de database (eventueel) om een banner te kiezen en haalt dus direct de url van het plaatje en die van de site zelf eruit... Dan krijg je dus zoiets als dit...

<a href="banner.php?sid=15&aid=0">[img]"banner15.gif"></a[/img]

Dat is toch veel makkelijker dan wat jij nu aan het doen bent?? Je hebt hier naar mijn mening helemaal geen sessions en dergelijke nodig....

HTH

Verwijderd

Topicstarter
Nee dat kan dus niet, dit systeem moet op meer dan 1000 sites worden geïmplementeerd waar ze met een systeem werken waar je alleen maar img src's en a href's kan gebruiken, je kan er dus vanuit gaan dat er geen php werkt of gebruikt kan worden op die servers... anders was het idd wel heeeel erg simpel ja :) javascript mag ook niet, voor het geval dat het volgende was... en cookies ook niet omdat het dan third-party cookies zouden worden en die natuurlijk niet door iedere browser geslikt worden

Verwijderd

Op vrijdag 22 februari 2002 11:11 schreef zellufs het volgende:
Nee dat kan dus niet, dit systeem moet op meer dan 1000 sites worden geïmplementeerd waar ze met een systeem werken waar je alleen maar img src's en a href's kan gebruiken, je kan er dus vanuit gaan dat er geen php werkt of gebruikt kan worden op die servers... anders was het idd wel heeeel erg simpel ja :) javascript mag ook niet, voor het geval dat het volgende was... en cookies ook niet omdat het dan third-party cookies zouden worden en die natuurlijk niet door iedere browser geslikt worden
Je kan toch 1 server hebben waar het php script op draait? en dan een random pagina geneert voor de desbetreffende site? dan kan je toch wel de methode gebruiken die ik hierboven beschreef? Of ben ik nou heel dom? :?

Verwijderd

Topicstarter
En hoe komt de code van jou manier (dus de echte url van het plaatje en de link) op de pagina waar de banner op staat?

Verwijderd

Op vrijdag 22 februari 2002 11:21 schreef zellufs het volgende:
En hoe komt de code van jou manier (dus de echte url van het plaatje en de link) op de pagina waar de banner op staat?
Als het script wordt aangeroepen dan kan je toch kijken vanaf welke site het wordt aangeroepen, als je dan zorgt dat je dan voor al die sites een template hebt dan kan je ervoor zorgen dat binnen die template de vars (url plaatje, site url) worden geparsed... het enige nadeel is dat je dan wel alles op 1 server gooit, weet niet of dat verstandig is met zoveel sites...

maargoed.. weet niet precies hoe je het anders om kan lossen dit is mijn idee ervan..
heb er verder ook nog niet echt goed me gedachten over laten gaan *D

Verwijderd

Topicstarter
Nope, dat was dus net niet de bedoeling idd... het MOET met sessions en dat werkt dus bijna maar nog niet helemaal :) we kijken gewoon nog even verder, toch bedankt!

Verwijderd

Op vrijdag 22 februari 2002 11:31 schreef zellufs het volgende:
Nope, dat was dus net niet de bedoeling idd... het MOET met sessions en dat werkt dus bijna maar nog niet helemaal :) we kijken gewoon nog even verder, toch bedankt!
Anytime, always welcome :)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

IMHO zou je toch beter een andere aanpak kunnen gebruiken. Tegenworodig zijn mensen behoorlijk wat strenger mbt cookies. Op dit moment wordt er een cookie gezet door het plaatje. Dit plaatje komt niet van dezelfde server als de site, en wordt dus ook minder snel geaccepteerd. Daarnaast zijn mensen sowieso niet echt happig op cookies van bannerboeren.

Je zegt dat je een beperking hebt mbt het plaatsen van de banner op sites van derden, maar heb je wel eens aan de javascript oplossing gedacht?

ipv je 'klanten' een plaatje + url op hun pagina te lanten zetten, laat je ze een extern javascriptje inladen. Met dit script doe je vervolgens een paar 'document.writes' die de uiteindelijke URL's van de link en het plaatje neerzetten. Dit javascript laat je genereren door php. Je kunt nu gewoon de sessie variabelen of wat dan ook gewoon meegeven als get parameters in de URL die door het javascript geprint wordt.

Dit werkt makkelijker voor jouw (aangezien je er nu niet uit komt :) ), voor de sites met banners (Hoeven maar 1 regeltje code in te voegen) en de algehele werking van je systeem (Je maakt geen gebruik van cookies)

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


Verwijderd

Op vrijdag 22 februari 2002 11:44 schreef Janoz het volgende:
Je zegt dat je een beperking hebt mbt het plaatsen van de banner op sites van derden, maar heb je wel eens aan de javascript oplossing gedacht?
Javascript was geen optie *D

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op vrijdag 22 februari 2002 11:11 schreef zellufs het volgende:
...... en cookies ook niet omdat het dan third-party cookies zouden worden en die natuurlijk niet door iedere browser geslikt worden
Bij het zoeken naar het stukje waar de topicstarter zei dat geen Javascript gebruikt mocht worden kwam ik dit tegen...

Wist je dat sessions OOK met cookies werken? (tenzij je de sessionID met de URL mee geeft, maar dat is hier niet het geval)

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


Verwijderd

Op vrijdag 22 februari 2002 12:11 schreef Janoz het volgende:
Wist je dat sessions OOK met cookies werken? (tenzij je de sessionID met de URL mee geeft, maar dat is hier niet het geval)
klopt maar wel met server-side cookies, weet niet of dat nog uit maakt voor het script? of dat wel is toegestaan dus.... :?

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op vrijdag 22 februari 2002 12:14 schreef DiStance het volgende:

[..]

klopt maar wel met server-side cookies, weet niet of dat nog uit maakt voor het script? of dat wel is toegestaan dus.... :?
Uhm vergeet niet dat het sessie_id ook nog ergens moet blijven (juist in een cookie bij de klant). Kan er geen cookie geset worden, dan gaat het sessie ID mee via de POST of GET

Verwijderd

Op vrijdag 22 februari 2002 12:25 schreef Glimi_ie het volgende:
Uhm vergeet niet dat het sessie_id ook nog ergens moet blijven (juist in een cookie bij de klant). Kan er geen cookie geset worden, dan gaat het sessie ID mee via de POST of GET
klopt en dat laatste mocht geloof ik wel (van de topicstarter) Cookie client-side waren geen optie...

Verwijderd

Misschien vind je hier nog wat tussen dat je kan gebruiken *D

http://www.hotscripts.com/search/?query=banner&category=PHP

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op vrijdag 22 februari 2002 12:29 schreef DiStance het volgende:

[..]

klopt en dat laatste mocht geloof ik wel (van de topicstarter) Cookie client-side waren geen optie...
Maar ja.... Het probleem daar is dat ie niks in de aanroep source mag veranderen, dus in de URL ook geen get-parameters toevoegen.

Waarschijnlijk is dit probleem onmogelijk op te lossen door de randvoorwaarden.. het enige dat ik nog kan bedenken is het uniek identificeren van clients mbv IP+browser enz enz...

Met Sessions gaat het NIET lukken.

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


Verwijderd

Op vrijdag 22 februari 2002 12:39 schreef Janoz het volgende:
Maar ja.... Het probleem daar is dat ie niks in de aanroep source mag veranderen, dus in de URL ook geen get-parameters toevoegen.

Waarschijnlijk is dit probleem onmogelijk op te lossen door de randvoorwaarden.. het enige dat ik nog kan bedenken is het uniek identificeren van clients mbv IP+browser enz enz...

Met Sessions gaat het NIET lukken.
Ben inderdaad bang van niet :P

Verwijderd

Topicstarter
Waarom WERKT het dan al met sessions? afgezien van die ENE keer refreshen?! Op deze site staan 2 banners die via mijn script worden aangeroepen, als je er de eerste keer op klikt werkt het niet (dan is er geen url en kom je dus in de map terecht waar het script staat) en na een refresh van die site werken de banners wel, rara hoe kan dat?

En oja, het kan natuurlijk ook nog door alles iedere keer tijdelijk in de database (MySQL) te proppen, maar ik denk niet dat die databasesever dat leuk gaat vinden, aangezien hetzelfde script op meer dan 1000 sites aangeroepen woprdt door heeeeeel veel gebruikers...

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op vrijdag 22 februari 2002 12:53 schreef zellufs het volgende:
Waarom WERKT het dan al met sessions? afgezien van die ENE keer refreshen?! ...........
Het WERKT mischien wel, maar het voldoet niet aan je eisen.. Als je goed kijkt zie je dat er WEL een cookie wordt gezet terwijl dit NIET de bedoeling zou zijn...

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


Verwijderd

Topicstarter
Er mag dus wel een cookie worden ge-set, maar met een normale setcookie werkt dit niet omdat het dan een third-party cookie is. Dan werkt het script alleen als de pagina die de banners aanroept op dezelfde server staat, en DAT is dus het probleem.

Verwijderd

beetje raar verschijnsel misschien, maar de kleine rechterbanner deed het wel in 1 keer, dus zonder refresh..????

met de linker grote kwam ik inderdaad in de map terrecht.. je moet die map trouwens ff afschermen ofzo....

Verwijderd

Topicstarter
Ja achja... Heb je eerst de grote geklikt? want dan zou dat ook nog eens iets kunnen zijn, dattie gewoon eerst 1 klik nodig heeft (om misschien de session in redir.php te initialsieren ofzow)...

Die map afschermen? achja, je kan er nu ook weinig mee natuurlijk...

Verwijderd

Op vrijdag 22 februari 2002 13:06 schreef zellufs het volgende:
Ja achja... Heb je eerst de grote geklikt? want dan zou dat ook nog eens iets kunnen zijn, dattie gewoon eerst 1 klik nodig heeft (om misschien de session in redir.php te initialsieren ofzow)...

Die map afschermen? achja, je kan er nu ook weinig mee natuurlijk...
Ik had inderdaad eerst de grote geklikt en toen deed die kleine het daarna idd.. wat betreft het afschermen.. tja tis maar wat je wilt natuurlijk :)

Toch snap ik niet waarom je niet bijvoorbeeld bij de link van de redir.php het volgende doet

http://www.fjf.be/ads/redir.php?sid=24&aid=0&url=www.url.nl

zoiets.. ff zorgen natuurlijk dat er niks fout gaat met eventuele slashes en dergelijke... kijk dan heb je namelijk wel gelijk de url en dan is het toch mogelijk hem in 1 keer te redirecten? :?

Verwijderd

Topicstarter
Maar hoe wil je dan dat die URL van een random banner in een a href op een htmlpagina komt? als ik bijvoorbeeld
<a href=http://site.com><random img></a>
doe dan slaat dan toch nergens meer op, of zit ik nou helemaal verkeerd te denken...

Verwijderd

Waarom moet het perse zo? Je kan toch juist een hele simpele functie in de redir.php maken waarin je hetvolgende doet...
PHP:
1
2
3
4
5
<?
function go_to_page($url) {
header("location: $url");
}
?>

Dan is toch alles klaar? Dan wordt je door gestuurd naar de goede page in 1 keer, geen cookie of niks nodig, het enige is dat ie ff terug wordt gestuurd naar de redir.php op jou server om hem vervolgens naar de goede page door te sturen via de header() functie...?

Waarom kan mijn verhaal hierboven dan niet???

Verwijderd

Topicstarter
Ik kan toch geen statische URL meegeven als ik een random banner heb!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op vrijdag 22 februari 2002 13:01 schreef zellufs het volgende:
Er mag dus wel een cookie worden ge-set, maar met een normale setcookie werkt dit niet omdat het dan een third-party cookie is. Dan werkt het script alleen als de pagina die de banners aanroept op dezelfde server staat, en DAT is dus het probleem.
Je kunt je bannerplaatje ook een cookie laten zetten hoor, Dan is het geen 3rd party meer :)

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


Verwijderd

Op vrijdag 22 februari 2002 13:20 schreef zellufs het volgende:
Ik kan toch geen statische URL meegeven als ik een random banner heb!
De random banner wordt toch uit een database getrokken??? daar hoort dan toch een url bij??? dat is dan toch geen statische url???? ja het is een statische url maar wel voor die banner??? :? ik volg het echt ff niet meer :+

Verwijderd

Topicstarter
Dat bannerplaatje wordt toch via een andere server aangeroepen? banner.php spuugt gewoon een random banner uit, waarvan de ID even ergens bewaard moet worden zodat bij een klik erop de goede URL gevolgd wordt. Maar zowel banner.php als redir.php staan op een andere server als de server waarvandaan de banner wordt aangeroepen, en met cookies heb ik het geprobeerd maar dat werkt dus alleen op dezelfde server als diegene waar de scripts staan... :(

Ennuh, die url kan ik dus niet aan redir.php meegeven aangezien (zie ergens bovenstaande code) exact dezelfde code wordt gebruikt voor alle banners die op een bepaalde site mogen verschijnen.

Verwijderd

hmmz... I give up... :'(

Aan de ene kant zit ik te denken dat het zo moeilijk toch niet kan zijn om dit voor mekaar te krijgen, maar ik kan me gewoon ff niet bedenken wat hier de oplossing is..

Waar haal je de desbetreffende url van de site dan bijvoorbeeld vandaan?

dus banner.php en redir.php staan op een server met database? hoe ziet het er dan allemaal uit? dan heb ik een wat duidelijker beeld nog.. misschien had je dat al eerder neer gezet, maar zet het ff duidelijk voor me neer..

dan kan ik misschien nog wat bedenken :) tot nu toe kom ik er zo ook niet uit...

Verwijderd

Topicstarter
Okee, nog 1 keer om even alles duidelijk te maken het hele verhaal...

Op server x wordt een banner aangeroepen via deze code:
<a href="http://www.fjf.be/ads/redir.php?sid=24&aid=0" target="_blank">[img]"http://www.fjf.be/ads/ad.php?sid=24&x=468&y=60&aid=0"[/img]</a>

In ad.php wordt een randombanner uit een MySQL database gehaald (eerst worden er allerlei selecties enzo gemaakt omdat er met percentages etc wordt gewerkt, die zal ik even weglaten).
PHP:
1
2
3
4
5
6
7
8
<?
session_start();
session_register("AD");
//hier is natuurlijk heeeeel erg veel weggelaten, 
//maar er is via allerlei omwegen een randombanner uit de database gehaald.
$AD[$sid.$aid] = $adobject->id;
readfile($adobject->img);
?>

In redir.php gebeurt dan ongeveer dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
session_start();
session_register("AD");
$id = $AD[$sid.$aid];
//hier worden de stats geupdate etc... nix boeiends
$adquery = mysql_query("SELECT * FROM adstats WHERE id = '$id'");
$adobject = mysql_fetch_object($adquery);
$so = mysql_fetch_object(mysql_query("SELECT site_name FROM sites WHERE site_id = '$sid'"));
if(ereg("(.*)(resultonline)(.*)",$adobject->url)){
$url = $adobject->url . $so->site_name;
}else{
$url = $adobject->url;
}
header("Location: $url");
?>

Dat is het wel zo'n beetje...

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op vrijdag 22 februari 2002 13:33 schreef zellufs het volgende:
Okee, nog 1 keer om even alles duidelijk te maken het hele verhaal...
Leuk verhaal :)

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


Verwijderd

Op vrijdag 22 februari 2002 13:37 schreef Janoz het volgende:

[..]

Leuk verhaal :)
Ik zat ookal vol verwachting te wachten op meer *D

Verwijderd

Topicstarter
rustig aan hè... was alleen om even aan te geven dat het er aan zat te komen :)

Als jullie er even naar zouden willen kijken... ben er vanavond weer

Verwijderd

Op vrijdag 22 februari 2002 13:45 schreef zellufs het volgende:
rustig aan hè... was alleen om even aan te geven dat het er aan zat te komen :)
vol verwachting klopt ons hart.... :P

Verwijderd

Topicstarter
Nu toch niet meer zeker? staat een paar berichtjes naar boven hoor... *D

Verwijderd

Topicstarter
Maarruh, jullie hebben het maar opgegeven?

Verwijderd

Ik kon er niet wijzer uit worden, sorry, heb me best gedaan.. maar ik heb het gevoel nog steeds dat het moet kunnen zoals ik al eerder zei.. zal wel niet goed genoeg snappen hoe het probleem in elkaar steekt dan, maarja *D

Ik hoop dat iemand anders na deze "kick" nog een idee heeft..

Verwijderd

Topicstarter
Hoop het ook, er moet toch IEMAND zijn die hier een oplossing voor weet?

Verwijderd

Topicstarter
Hoppa, ben ik weer! heb alweer iets zelf uitgevonden, dat het op deze manier met sessions niet lukt aangezien mijn sessioncookies geblockt worden... betere opties?
Pagina: 1