login  Naam:   Wachtwoord: 
Registreer je!
 Forum

query vraagje

Offline copyfile - 15/04/2007 21:57
Avatar van copyfileNieuw lid Ik onderstaande mysql query voor mijn website. Het werkt goed dus dat is niet het probleem. Het probleem dat ik wel heb is dat ik wil dat als "p" niet bestaat dat hij dan als pagina `index` gebruikt. Hoe zou ik dit kunnen doen ?

$sql="SELECT * FROM menu_extra WHERE pagina='" .$_GET["p"] ."' ORDER BY id ASC";

7 antwoorden

Gesponsorde links
Offline vinTage - 15/04/2007 21:59
Avatar van vinTage Nieuw lid
  1. <?
  2. if(isset($_GET['p'])){
  3. //query
  4. }else{
  5. //niks
  6. }


Dat ?
Offline copyfile - 15/04/2007 22:41
Avatar van copyfile Nieuw lid Het is gelukt, eigenlijk makkelijker dan ik dacht. Had het eigenlijk gewoon moeten proberen haha. Bedankt !
Offline ArndJan - 16/04/2007 08:27
Avatar van ArndJan PHP interesse Even wat anders voor de veiligheid zou ik nooit een GET direct in een SQL query zetten het kan lang goed. Gaan maar het is niet veilig!!! 

Maak bijvoorbeeld eerst enkele controlles waar de gebruiker vandaan komt of hij rechten heeft op de pagina en of de pagina bestaand. Als je dit nu al doe dan doe je het wel achteraf!!
Offline delta_004 - 16/04/2007 08:40 (laatste wijziging 16/04/2007 08:41)
Avatar van delta_004 Onbekend http://en.wikipedia.org/wiki/SQL_injection
  1. <?
  2. // String2DB Controle
  3. function in ($input)
  4. {
  5. return htmlspecialchars(addslashes($input),ENT_QUOTES);
  6. }
  7. // DB2String Controle
  8. function uit ($input)
  9. {
  10. return stripslashes($input);
  11. }
  12. ?>

Ik heb in alle scripts hier die ik gebruik die 2 functies:) Alles dat in een query staat zet je tusse in(). En alles dat eruit komt: uit($assoc['..'])
Offline laars - 16/04/2007 13:35 (laatste wijziging 16/04/2007 13:36)
Avatar van laars Onbekend
Citaat:
het kan lang goed. Gaan maar
:o 

Als magic_quotes aanstaan (dat wil je niet en die gaan er ook uit in PHP 6) kan het wel, maar verder heb je gelijk.

@delta: dat is onzin. htmlspecialchars heeft niets met SQL injection te maken en het escapen van quotes dmv addslashes doe je idd wel bij het inserten, maar je database herkent de slashes als escape characters en slaat die dus niet op in de database.
stripslashes heb je nooit nodig. Nouja, misschien in het ongelukkige geval dat je met magic_quotes zit. Dan heb je addslashes bij het inserten niet meer nodig, maar als je gegevens uit $_POST direct wilt echo'en moet je de slashes eerst strippen.
Offline Rmy - 16/04/2007 17:23 (laatste wijziging 16/04/2007 17:24)
Avatar van Rmy Nieuw lid Waarom gebruik je gewoon niet mysql_real_escape_string()? Die is hartstikke veilig. Daarnaast horen integers niet tussen enkele quote's. Dus:

  1. <?php
  2. $sql="SELECT * FROM menu_extra WHERE pagina='" .$_GET["p"] ."' ORDER BY id ASC";
  3. ?>


Moet

  1. <?php
  2. $sql="SELECT * FROM menu_extra WHERE pagina= ".$_GET['p']." ORDER BY id ASC";
  3. ?>


worden. 

Offline ikkedikke - 16/04/2007 17:31
Avatar van ikkedikke PHP expert alleen als P een numerieke waarde heeft, zolang dat niet heel streng gecontroleerd wordt, moet je die quotes laten staan.(en dan alsnog quotes escapen.)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.211s