Zoeken in database op naam, op een dynamische manier

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Zakkenwasser
  • Registratie: Februari 2001
  • Niet online
Misschien weet ik nog niet voldoende van php om dit optelossen maar dit wordt vrij ingewikkeld en dacht wat advies in te kunnen winnen bij jullie:

Ieder nieuwe gebruiker van mijn website krijgt automatisch een subdomein waar zijn profiel op te vinden is.

"pim.website.nl"

Als je naar dit adres gaat krijg je het desbetreffende profiel ook te zien, zoals de gegevens uit het databse worden getrokken.

Dit heb ik voor elkaar gekregen met deze methode:
[code=php]
$string = $_SERVER['SCRIPT_URI'];
$strip_url = str_replace('.website.nl', '', $string);
$stripped = str_replace('http://', '', $strip_url);
//var_dump($strip_http);
$result = User::find_by_name(mysql_real_escape_string($stripped));
[/code=php]

Als je doormiddel van $_POST een commentaar in mysql wilt zetten die aan de gebruiker is.
Veranderd $stripped in "pim/index.php"

Waardoor je in feite het verkeerde resultaat uit de database probeerd te halen en resulteert in een 404.

Is er een betere methode om dit te realiseren zonder gebruik te maken van index.php?id=1

PSP 1000 @ 6.60 Pro C2 [+256GB]
PSVita @ Henkaku Enso [+256GB]
3DS @ Luma (B9S) [+160GB]
Nintendo Switch 3.0.1 [+256GB]


Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 17-09 07:50

momania

iPhone 30! Bam!

ppfff.. nou doe ik niks met php, maar je kon niet hierop komen: [google=php,get,subdomain] :?

parse_url lijkt wat jij wilt :Y)

Daarbij is het gebruik van alleen het subdomain nou niet echt de beste keuze qua user identificatie :X

[ Voor 24% gewijzigd door momania op 01-09-2009 13:59 ]

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

Verwijderd

Dan doe je toch gewoon nog een keer iets van

PHP:
1
$stripped  = str_replace('/index.php', '', $strip_url);


of is dat te makkelijk gedacht?

Verder snap ik niet precies wat je bedoelt met "een commentaar aan de user in de MySQL zetten".

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Niet REQUEST_URI pakken maar wat anders. Zoek eens tussen print_r($_SERVER)

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 20:57

MueR

Admin Tweakers Discord

is niet lief

*voeg iets toe of zeg niks*

[ Voor 118% gewijzigd door RobIII op 01-09-2009 14:00 ]

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

Verwijderd

Beste oplossing is waarschijnlijk iets met een regular expression, maar je zou het ook kunnen oplossen door middel van explode. De eerste result in de array zal altijd wel het subdomain zijn (incl. http).

$url_array = explode('.', $_SERVER['SCRIPT_URI']);
$subdomain = str_replace('http://', '', $url_array[0]);

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Jezus, kerel, met alle respect, maar van die 4 regels code die je post slaan er 3 echt volstrekt nergens op :X Je overtreedt zo ongeveer iedere basisregel mbt defensief programmeren, logisch nadenken, en functionaliteit op de goede plek uitvoeren. Waarom de n**k ga je bijv. een URL stap voor stap z'n onderdelen wegreplacen in plaats van iets logisch uitvoeren, zoals bijv. uhmmmmmmm uitsplitsen op de puntjes om de afzonderlijke elementen te kunnen parsen, al dan niet geautomatiseerd via een hulpfunctie als parse_url? En waarom geef je DB-specifieke escaped informatie mee aan iets dat nogal veel lijkt op een Database Abstraction Layer die dat soort dingen juist intern hoort te doen?

edit:
oh ik had nog niet eens gezien dat je SCRIPT_URI aansprak ipv HTTP_HOST of een andere correcte, dan slaan alle regels code nergens op en is alleen de commentregel een beetje nuttig... :X

[ Voor 12% gewijzigd door curry684 op 01-09-2009 14:02 ]

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Verwijderd schreef op dinsdag 01 september 2009 @ 13:59:
Beste oplossing is waarschijnlijk iets met een regular expression, maar je zou het ook kunnen oplossen door middel van explode. De eerste result in de array zal altijd wel het subdomain zijn (incl. http).
Als er al 'zal' in je zin staat is het al een aanname, en aannames zijn gevaarlijk. Want wat krijg je dan als ik http://lalala.klaas.piet.pim.website.nl open?

Defensief programmeren, never trust input, etc. etc.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Mag ik opmerken dat de toon wel wat vriendelijker mag?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Zakkenwasser
  • Registratie: Februari 2001
  • Niet online
momania schreef op dinsdag 01 september 2009 @ 13:51:
ppfff.. nou doe ik niks met php, maar je kon niet hierop komen: [google=php,get,subdomain] :?

parse_url lijkt wat jij wilt :Y)

Daarbij is het gebruik van alleen het subdomain nou niet echt de beste keuze qua user identificatie :X
hoezo niet?
curry684 schreef op dinsdag 01 september 2009 @ 14:05:
[...]

Als er al 'zal' in je zin staat is het al een aanname, en aannames zijn gevaarlijk. Want wat krijg je dan als ik http://lalala.klaas.piet.pim.website.nl open?

Defensief programmeren, never trust input, etc. etc.
Bij geen resultaat word het database afgesloten en doorgestuurd naar een 404

[ Voor 34% gewijzigd door Zakkenwasser op 01-09-2009 14:08 ]

PSP 1000 @ 6.60 Pro C2 [+256GB]
PSVita @ Henkaku Enso [+256GB]
3DS @ Luma (B9S) [+160GB]
Nintendo Switch 3.0.1 [+256GB]


Acties:
  • 0 Henk 'm!

Verwijderd

Dan krijg je 'lalala'? Lijkt me dat met name de stap waarbij er gecontroleerd wordt of het schone input is en vervolgens of het een bestaande user is belangrijk is..?

Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 17-09 07:50

momania

iPhone 30! Bam!

Wil je hier echt antwoord op :? :X

hoi ik ben pietje want ik surf nu naar pietje.website.nl...
en nu ben ik klaasje want ik verander het even naar klaasje.website.nl

of moet het nog verder uitgekauwd worden voor je?

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

Verwijderd

(err. er zal toch wel een login form aan vast zitten ofzo?)

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

momania schreef op dinsdag 01 september 2009 @ 14:09:
[...]

Wil je hier echt antwoord op :? :X

hoi ik ben pietje want ik surf nu naar pietje.website.nl...
en nu ben ik klaasje want ik verander het even naar klaasje.website.nl

of moet het nog verder uitgekauwd worden voor je?
Dat wordt op zich best wel gebruikt op community-sites zoals bijvoorbeeld Hyves. Om het profiel van iemand te bekijken bezoek je in plaats van www.hyves.nl?profile=pietje of www.hyves.nl/pietje gewoon pietje.hyves.nl.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

Verwijderd

Jep. Ik heb het bij hyves net even getest, en daar gebruiken ze de eerste naam. Dus als je surft naar http://www.pietje.paultje.hyves.nl, wordt het profiel verbonden aan 'pietje' getoond.

Maar, als je geen ervaring hebt met PHP, waarom maak je dan een profielscript? Als leerprojectje?

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Ik zou Hyves nu niet echt als schoolvoorbeeld aanhalen van een site die goed geprogrammeerd is :X

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • Yoozer
  • Registratie: Februari 2001
  • Laatst online: 03-08 17:53

Yoozer

minimoog

Mensen die niet weten dat www ook vaak weggelaten mag worden (en volgens mij zijn dat er nogal een hoop) zijn over 't algemeen wel beter af met hyves.nl/pietje, anders mag je gelijk gaan afvangen dat www.pietje.hyves.nl ook naar pietje moet wijzen.

edit; jeuz, moet sneller op verstuur rossen

[ Voor 5% gewijzigd door Yoozer op 01-09-2009 14:14 ]

teveel zooi, te weinig tijd


Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 17-09 07:50

momania

iPhone 30! Bam!

CodeCaster schreef op dinsdag 01 september 2009 @ 14:10:
[...]

Dat wordt op zich best wel gebruikt op community-sites zoals bijvoorbeeld Hyves. Om het profiel van iemand te bekijken bezoek je in plaats van www.hyves.nl?profile=pietje of www.hyves.nl/pietje gewoon pietje.hyves.nl.
Profiel bezoeken ja, dan haal je alleen maar gegevens UIT de database, maar als ik dit lees:
Als je doormiddel van $_POST een commentaar in mysql wilt zetten die aan de gebruiker is.
Dan gebruikt hij het ook als identificatie om gegevens in de database te willen stoppen... hallo! gaan de bellen al rinkelen!? 8)7

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:47
momania schreef op dinsdag 01 september 2009 @ 14:09:
hoi ik ben pietje want ik surf nu naar pietje.website.nl...
en nu ben ik klaasje want ik verander het even naar klaasje.website.nl

of moet het nog verder uitgekauwd worden voor je?
Voor zover ik de post van de TS goed begrijp werkt het zo helemaal niet; het subdomein bepaalt óver welke gebruiker je informatie te zien krijgt; het is geen authenticatiemechanisme.

Net zoals mijn profiel op Tweakers.net gewoon mijn user-id in de URL bevat. Die kun je ook veranderen in willekeurig welk user-id om het profiel van een andere gebruiker te bekijken maar daarmee verwerf je geen rechten. Of die user-id nu een naam of een nummer is, en of die nu achterin of voorin de URL staat, maakt conceptueel niet veel uit.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

momania schreef op dinsdag 01 september 2009 @ 14:14:
[...]

Profiel bezoeken ja, dan haal je alleen maar gegevens UIT de database, maar als ik dit lees:

[...]

Dan gebruikt hij het ook als identificatie om gegevens in de database te willen stoppen... hallo! gaan de bellen al rinkelen!? 8)7
Volgens mij bedoelt hij dat als je een reactie plaatst op een profiel, dat er dan naar index.php gepost wordt. Dan verandert z'n variabele naar "pim/index.php", want het enige dat hij doet is "http://" en ".website.nl" van de querystring aftrekken.

Daarom werd in de eerste paar posts al naar een andere oplossing (parse_url of HTTP_HOST) gehint.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 17-09 07:50

momania

iPhone 30! Bam!

CodeCaster schreef op dinsdag 01 september 2009 @ 14:16:
[...]

Volgens mij bedoelt hij dat als je een reactie plaatst op een profiel, dat er dan naar index.php gepost wordt. Dan verandert z'n variabele naar "pim/index.php", want het enige dat hij doet is "http://" en ".website.nl" van de querystring aftrekken.
Als hij een comment wilt posten op een profiel pagina moet hij een id van de huidige profiel pagina in z'n form opnemen en niet het subdomain gebruiken om deze te identificeren.

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

Verwijderd

curry684 schreef op dinsdag 01 september 2009 @ 14:13:
Ik zou Hyves nu niet echt als schoolvoorbeeld aanhalen van een site die goed geprogrammeerd is :X
Dat zeg ik ook nergens, het was slechts een voorbeeld van hoe een profielsite meerdere usernames als subdomein afving. Het laden van profielpagina's aan de hand van een username lijkt me nou niet bepaald voorbehouden aan Hyves.

<edit> Hyves is namelijk weldegelijk ruk: als je http://pietje.paultje.hyves.nl intikt gaat ie dus naar het profiel van pietje. Klik je vervolgens op 'Berichten', dan linkt de url naar http://paultje.hyves.nl/inbox. 8)7

[ Voor 20% gewijzigd door Verwijderd op 01-09-2009 14:22 . Reden: typo's ]


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

momania schreef op dinsdag 01 september 2009 @ 14:18:
[...]

Als hij een comment wilt posten op een profiel pagina moet hij een id van de huidige profiel pagina in z'n form opnemen en niet het subdomain gebruiken om deze te identificeren.
Als een user identificeerbaar is aan het subdomein (alleen a-z, punt en liggend streepje toestaan in gebruikersnaam) is dat toch uniek genoeg?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

Verwijderd

Subdomein staat los van wat het formulier zou moeten doen, lijkt me.. dient slechts om bepaalde informatie te laten zien die eraan gekoppeld is, maar het formulier zelf moet kijken naar de user sessie.
Pagina: 1