[PHP] Subdomein met wildcard

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik ben bezig met een script waarbij subdomeinen (nuker.mijndomein.nl) worden doorverwezen naar 1 bestand (index.php). Hierin wordt het subdomein (nuker nu dus) herkent en wordt in de database gecontroleerd welke pagina daarbij hoort. Nu heb ik het volgende, maar verder kom ik niet:

$oConn = new mysql();
$Subdomein = $oConn->query ('SELECT * FROM username WHERE actief = "1"'); //subdomein variabele vastgesteld

$Host = $HTTP_HOST;
$Subdomein = str_replace($Domein,"",$Host);
$Subdomein = ereg_replace("[^a-zA-Z0-9\-]","",$Subdomein);
if(!$Subdomein) { $Subdomein = "www"; }

Dit staat dus in besturing.php die wordt geinclude in iedere pagina. Maar nu weet ik niet of dit goed is en hoe ik die variabele nu verder gebruik om dus mijn idee voor elkaar te krijgen. Kan iemand mij helpen?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
oeps, verkeerde forum. Kan iemand ff versturen naar webscripting?

Acties:
  • 0 Henk 'm!

  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 20:02

Koffie

Koffiebierbrouwer

Braaimeneer

Move PNS > PW

Tijd voor een nieuwe sig..


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

PHP:
1
2
3
4
5
$host      = $_SERVER['SERVER_NAME'];
$host_arr  = explode ('.', $host);
$ext       = array_pop($host_arr);
$domain    = array_pop($host_arr) . '.' . $ext;
$subdomain = implode ('.', $host_arr);


Beetje vogelen met explodes enzo kom je een heel eind (jaja punten in een domeinnaam staan er altijd).

[edit]
Snap je vraag ook niet helemaal.. Je kunt met het subdomein toch zoeken welke pagina daar in de database bij hoort? En dan redirecten?

[ Voor 26% gewijzigd door Bosmonster op 26-04-2004 11:17 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Maar dan moet eerst in het script worden vastgesteld dat username in de database hetzelfde is als het voorvoegsel van het subdomein en die moet doorsturen naar de pagina die bij die username hoort en dat snap ik dan niet.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

code:
1
$sql = "SELECT url FROM users WHERE username='".addslashes($subdomein)."' LIMIT 1";


En dan even checken of je wat terugkrijgt (mysql_num_rows()). Zo niet dan naar een default redirecten?

[ Voor 35% gewijzigd door Bosmonster op 26-04-2004 11:31 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Waarom doe je nog een limit 1 er bij? Imho kan je daarmee een fout / bug verbloemen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ga er eens mee aan de slag, kijken hoe ver ik kom!

Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb hier ook ooit een script voor gehad. Je moet er wel op letten dat de server bijvoorbeeld test.mijndomein.nl doorstuurd naar www.mijndomein.nl. EN dat test.mijndomein.nl in de adresbalk blijft staan... anders kun je nu al stoppen...

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

gorgi_19 schreef op 26 april 2004 @ 11:42:
Waarom doe je nog een limit 1 er bij? Imho kan je daarmee een fout / bug verbloemen.
Omdat als ik de code verder zou schrijven ik toch alleen de eerst teruggegeven record zou gebruiken.

Als er een bug in zit waardoor er meerdere records zouden bestaan met die username, dan zit die niet daar in de frontend, maar in de backend waar de users aangemaakt worden ;)

Acties:
  • 0 Henk 'm!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Bosmonster schreef op 26 april 2004 @ 20:06:
Als er een bug in zit waardoor er meerdere records zouden bestaan met die username, dan zit die niet daar in de frontend, maar in de backend waar de users aangemaakt worden ;)
Naar mijn mening zit de fout dan in je datamodel, je kunt namelijk prima via een unique constraint aangeven dat elke gebruikersnaam maar één keer mag voorkomen.

There's no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 19:15
Het is maar een detail, maar ik ben het wel met MatHack en gorgi_19 eens. Het is niet zo netjes om je code te vervuilen met fixes voor situaties die niet voor kunnen komen. Je code wordt er alleen maar omslachtiger en onleesbaarder door.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

MatHack schreef op 26 april 2004 @ 20:17:
[...]


Naar mijn mening zit de fout dan in je datamodel, je kunt namelijk prima via een unique constraint aangeven dat elke gebruikersnaam maar één keer mag voorkomen.
Dat bedoel ik met 'backend'.. ook het datamodel dus.

Ik zorg dat de frontend (eigenlijk alleen de generatie/selects etc) werken, zelfs als de data gecorrumpeerd is voor wat voor reden dan ook. Wil ik maar 1 records ophalen, dan doe ik LIMIT 1, omdat het nutteloos is om (voor wat voor reden dan ook) meerdere records op te halen. Of dit nu komt door foute data of een bug in de backend zal mij op dat moment een worst zijn. Misschien dat een collega wel aan de backend aan het updaten is. Dan ben ik blij dat de rest blijft werken ongeacht fouten die in de data sluipen.

Dat lijkt me een stuk vriendelijker dan dat er voor de gebruiker ineens een foutmelding op het scherm verschijnt waarin staat dat er vanalles fout gaat, terwijl dat dus in dat geval helemaal niet nodig was geweest.

[update]
Ik doe bij een UPDATE ook altijd LIMIT 1 als het om een enkele record gaat. Scheelt een berg werk als je een foutje hebt gemaakt in de query/where ;)

[ Voor 21% gewijzigd door Bosmonster op 26-04-2004 20:34 ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 19:15
Als je collega dit soort constraints overtreedt dan heb je geen enkele garantie dat de boel blijft werken; het aantal fixes dat je moet doorvoeren is dan eindeloos. Er kan wel vanalles mis gaan en je kunt nooit voor alle situaties compenseren. Het toch proberen verlaagt je productiviteit, verlaagt de kwaliteit van je code en levert je dus geen wezenlijk voordeel.

Dat geldt zeker ook in dit voorbeeld, want je gaf zelf al aan dat je maar een enkele rij zou gaan bekijken. Het maakt dan feitelijk niet uit als je meerdere rijen terugkrijgt.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Dat geldt zeker ook in dit voorbeeld, want je gaf zelf al aan dat je maar een enkele rij zou gaan bekijken. Het maakt dan feitelijk niet uit als je meerdere rijen terugkrijgt.
Niet? Lijkt me toch een berg db i/o schelen.

Ok.. het voorbeeld is niet zo denderend, want username moet gewoon unique zijn natuurlijk. Maar ik heb er voor mezelf een gewoonte van gemaakt als ik maar 1 record wil hebben/beinvloeden dat ik een LIMIT 1 toevoeg. Tenzij ik een select uitvoer direct op de PK overigens :) Bij updates maak ik weer een uitzondering.. datamanipulatie is dan net weer wat foutgevoeliger.

[ Voor 15% gewijzigd door Bosmonster op 26-04-2004 20:38 ]

Pagina: 1