[PHP] Kan ik met Htmlspecialchars // negeren?

Pagina: 1
Acties:

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 28-08 16:22
Ik heb een lijst van gebruikers waar overal //
in voorkomt.

Bij een login levert dit wat problemen op.

// is toch comment regel?
Als je dan zegt $bla = "test // ok";
dan pakt hij ok"; als comment denk ik.
En als je dan een SELECT regel met Mysql uitvoert, kan hij niets vinden omdat de naam 'test'
er niet in staat. Laten we zeggen dat de naam 'test'
bij elke naam voorkomt, dus ik kan '// ok' er niet zomaar aanplakken. Heeft dit nou iets met htmlspecialchars te maken? of gewoon vanwege PHP met die comment regels.

Wat moet ik met dit aan? nicknames veranderen lijkt me nou niet DE oplossing voor dit.

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
hij pakt je ok niet als commentaar omdat het gewoon allemaal in de string zit

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • SilentThunder
  • Registratie: September 2001
  • Laatst online: 04-09 15:46
Op donderdag 27 juni 2002 12:47 schreef SWINX het volgende:
hij pakt je ok niet als commentaar omdat het gewoon allemaal in de string zit
mjah idd lijkt me nou ook niet dat het als commentaar eruit komt

Canon EOS 40D | Canon EF-S 10-22mm F/3.5-4.5 USM | Tamron 17-50mm F/2.8 | Canon EF 50mm F/1.8 II | Canon EF 70-200mm F/4L IS USM | Speedlite 430EX


  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 28-08 16:22
ik zal een klein stukje code posten waar het probleem ligt:
PHP:
1
<??>Nickname:<select name="nick2"><?$query = "select nick from ".$clan."pass";$result = mysql_query ( $query );while ( list ( $nick1, ) = mysql_fetch_row ( $result ) ){    ?><option value="<?= $nick1 ?>"><?= $nick1 ?></option><?}?></select><??>

Als ik dan dit uitvoer, vindt hij geen resultaten en het komt toch uit dezelfde database.

$query = ("select nick from ".$clan."pass where nick='$nick2'");

Je ziet dat ik voor het gemak even opnieuw de nickname uit de database haal, om te laten zien dat het zeker in de database voorkomt. Niet dat ik deze constructie dus WIL, want hij haalt eigenlijk wat anders uit de database.

Let even niet op de <? en ?>.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Heeft niets met commentaar of htmlspecialchars te maken :)

Leg eens beter uit wat je wilt bereiken, wat je hebt en waarom je het wilt bereiken? :)

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 28-08 16:22
Op donderdag 27 juni 2002 12:59 schreef ACM het volgende:
Heeft niets met commentaar of htmlspecialchars te maken :)

Leg eens beter uit wat je wilt bereiken, wat je hebt en waarom je het wilt bereiken? :)
Ik neem aan dat je de post boven jou post niet hebt gezien toen je dit postte...

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Ik zie iig een extra , in je list..

Daarnaast is // ALLEEN commentaar in sourcecode zoals javascript. Het zou dus eigenlijk helemaal niks uit mogen maken als je dat in HTML neer zet. Waarschijnlijk gaat er iets anders mis.

Heb je toevallig ook een online voorbeeld?

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


  • vandijk
  • Registratie: Oktober 1999
  • Laatst online: 02-09 21:38
je kan eens kijken wat er gebeurd als je de / vervangt door \/. // wordt dan \/\/

Canon cameras en lenzen. Elinchrom flitsers, Lowepro en Pelican tassen/koffers. Polestar 2


  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 28-08 16:22
die extra , moet
en ja // zal dan alleen commentaar in de source zijn, maar niet alleen in javascript maar ook in PHP. (just saying that)

En waarom een online voorbeeld. Hij vind simpelweg geen results, als je zoekt met de username die je uit de selectielijst hebt gekozen.

Ik denk dat de fout hier zit:

<option value="<?= $nick1 ?>"><?= $nick1 ?></option>

Visueel zal hij het wel goed adden, maar bij de value niet denk ik.

Iemand die... tracht een idee te geven waar het aan kan liggen?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Omdat ik denk dat het heel ergens anders aan ligt. // is idd comentaar, maar alleen als je het in de source schrijft. Als het de inhoud van een string is maakt dat namelijk absoluut niet uit. Waarschijnlijk gaat er gewoon wat anders mis. Probeer eens ipv de 2e query uit te voeren eens de 2e query af te drukken?

Je kunt dat wat je hierboven zet heel makkelijk controleren.. Gewoon ff in op showsource in je browser drukken....

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


  • jsiegmund
  • Registratie: Januari 2002
  • Laatst online: 13:13
Als je denkt dat het aan je HTML code ligt moet je ff kijken in je source wat er gepaste wordt... Maar ik denk eerder dat het gewoon een fout is in je SQL statement hoor.

select nick from ".$clan."pass where nick='$nick2'

geeft dus voor elke andere waarde van clan een nieuwe db, ik weet niet precies wat voor systeem je erachter hebt hangen, maar als je ff verteld waar de verschillende vars. voor staan kunnen we je al een stuk verder helpen denk ik.
Owja, als ik het goed begrijp (ff niet lettend op die clan var) wil je dus (ff in normal language):
SELECTEER nick UIT DB WAAR nick = nick2
waarbij nick2 zeker in een form opgegeven wordt... mijn vraag: wat heeft dat in godsnaam voor nut??? dat zou hetzelfde zijn als SELECTEER bla UIT db waar bla="hallo" daar komt toch gewoon altijd hallo uit (als er al iets uitkomt natuurlijk)!?!?

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
Op donderdag 27 juni 2002 13:42 schreef iCe01 het volgende:

mijn vraag: wat heeft dat in godsnaam voor nut??? dat zou hetzelfde zijn als SELECTEER bla UIT db waar bla="hallo" daar komt toch gewoon altijd hallo uit (als er al iets uitkomt natuurlijk)!?!?
ik weet niet waar de topicstarter het voor gebruikt of wil gebruiken maar het kan handig zijn (dan wel met een LIKE statement ipv een WHERE) om een correcte username te achterhalen.

Zelf gebruik ik het voor een password mailer systeempje.


Waarom moeten er eigenlijk perse twee slashes in die string :?

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • jsiegmund
  • Registratie: Januari 2002
  • Laatst online: 13:13
ik weet niet waar de topicstarter het voor gebruikt of wil gebruiken maar het kan handig zijn (dan wel met een LIKE statement ipv een WHERE) om een correcte username te achterhalen.

Zelf gebruik ik het voor een password mailer systeempje.
Ja ok, dat kan ik me dan nog voorstellen, doe dat zelf ook altijd anders, maar ok... we wachten op reactie :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 27 juni 2002 13:01 schreef Cheater het volgende:
Ik neem aan dat je de post boven jou post niet hebt gezien toen je dit postte...
Die had ik idd niet gezien, maar doet niet zoveel af aan mijn vermoeden dat het ergens anders aan ligt ;)

Zie verder de post van oa Janoz, die hetzelfde idee heeft :)

Om het maar voor je te bewijzen:
code:
1
2
3
4
<?
$blaat= " ... // ...";
?>
<?=$blaat?>

Levert op:
code:
1
 ... // ...

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 28-08 16:22
Na een hoop veranderen deed hij het nog niet, maar kwam ik wel een fout tegen die ik eerder heb gemaakt (maar wel na het posten van m'n eerste posting).

Op een gegeven moment stond er ".clan." in plaats van ".$clan."

Ik had toen een heeele hoop veranderd. Ik had er een keer de echte tabelnaam neergezet en later weer teruggezet, en toen heb ik het misschien er verkeerd neergezet. Na alles goed terug te hebben gezet (ik had zelfs de nicknames veranderd waar // in voorkwam , doet hij het nu wel.

Ik was erachtergekomen dat ik een tabelnaam opvroeg die toevallig niet in die tabel bestond. in alle andere tabellen wel. Ik heb een tijdje terug een pagina gemaakt die die tabellen automatisch aanmaakt, maar die tabel was nog niet met die pagina gemaakt.

om iets specifieker te zijn:
PHP:
1
<?$query = "select nick,pass,Catg,mpn from ".$clan."pass where nick='$nick2'";?>

en de tabelnaam mpn bestond niet. Tja, mijn fout.

  • jsiegmund
  • Registratie: Januari 2002
  • Laatst online: 13:13
Misschien een idee om je error_reporting wat hoger te zetten, wil nogwel eens helpen als je scriptjes aan het debuggen bent. Regelnummers die er dan aangegeven worden kloppen ook niet altijd, maar de omschrijvingen helpen al veel (zoals je hier dus waarschijnlijk een SQL syntax error had gekregen, wist je al zeker dat die // er niets mee te maken hadden!).

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 28-08 16:22
Op donderdag 27 juni 2002 15:37 schreef iCe01 het volgende:
Misschien een idee om je error_reporting wat hoger te zetten, wil nogwel eens helpen als je scriptjes aan het debuggen bent. Regelnummers die er dan aangegeven worden kloppen ook niet altijd, maar de omschrijvingen helpen al veel (zoals je hier dus waarschijnlijk een SQL syntax error had gekregen, wist je al zeker dat die // er niets mee te maken hadden!).
Ik gebruik Cromson Editor voor al m'n PHP files. Daarmee krijg je leuke kleurtjes en ook regelnummers ervoor. Tevens support voor online bestanden bewerken.
Ik had inderdaad een SQL syntax error meegekregen, en dat was inderdaad een gewone foutmelding dat hij niets kon vinden. Dat had ik ook gezegd, maar waarom moeilijk doen..... Bovendien wist ik bij het begin nog niet dat het de // er niets mee te maken kon hebben, maar een kolom die hij niet kan vinden. Dan krijg je dezelfde foutmelding (met fetch_rows) als geen gegevens gevonden.

  • jsiegmund
  • Registratie: Januari 2002
  • Laatst online: 13:13
Nou als er bij mij geen gegevens gevonden worden krijg ik geen foutmelding hoor, beetje lullig als je zoekmachine scriptje sterft omdat tie nix gevonden heeft :D
Pagina: 1