login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Met javascript een mySql query uitvoeren

Offline vinTage - 03/11/2005 13:03
Avatar van vinTageNieuw lid mijn knop:
  1. onclick="javascript:(wegtjoppen());"


mijn js functie :
  1. <script type="text/javascript" language="javascript">
  2. wegtjoppen = function(){
  3. dubbelCheck = confirm('Zeker weten dat je deze record wilt verwijderen ?');
  4. if (dubbelCheck == true){
  5. <?php mysql_query("DELETE FROM online_parket WHERE id=".$_POST['delID']) or (mysql_error()); ?>
  6. }
  7. }
  8. </script>


Ten eerste word mn hele js functie gewoon als text geplaatst op mn pagina, en op de koop toe heb ik een MySql error erbij staan.
De foutmelding komt zoieso door de MySql query
Als ik die weghaal heb ik geen foutmelding meer, en word ook de functie niet als text geplaatst, ik kan dan alleen niet meer deleten natuurlijk.
Wat doe ik fout ? 

14 antwoorden

Gesponsorde links
Offline Ibrahim - 03/11/2005 13:08
Avatar van Ibrahim PHP expert Ik weet het niet zeker maar volgens mij mag je geen php in javascript gebruiken. Ik ben nog niet zo erg veel bezig met js
Offline b4nkr0bz0r - 03/11/2005 13:10
Avatar van b4nkr0bz0r PHP gevorderde Dit is mijn delete script, Hij kijkt of action=del in de URL staat, zo ja dan delete hij.

  1. <script language="javascript">
  2. function del(url)
  3. {
  4. if(window.confirm('Ben je zeker dat je dit bericht wilt verwijderen?'))
  5. {
  6. window.location = url;
  7. }
  8. }
  9. </script>
  10.  
  11. <?php
  12. if (!IsSet($_GET['id']) || !is_numeric($_GET['id']))
  13. {
  14. exit ('<div align="center"> Geen geldig ID opgegegeven, Check de URL.</div>');
  15. }
  16.  
  17. if (IsSet($_GET['action']) && $_GET['action'] == 'del' && IsSet($_GET['id']))
  18. {
  19. header ('location: /index.php');
  20.  
  21. $rVerwijder = 'DELETE FROM categorie WHERE id = ' . $_GET['id'];
  22.  
  23. if (!MySQL_Query($rVerwijder))
  24. {
  25. die ('Query mislukt...');
  26. }
  27.  
  28. }
  29. else
  30. {
  31. ?>
  32. </p>
  33. <table width="67%" align="center" cellpadding="2" cellspacing="1" class="frame">
  34. <tr>
  35. <td width="286" align="center" class="header">Verwijderen:</td>
  36. </tr>
  37. <tr>
  38. <td height="68" align="center" valign="top" class="dark"><table width="100%" border="0" cellpadding="0" cellspacing="0" class="kader">
  39. <tr>
  40. <td width="291" height="3" bgcolor="#E8E8E8" class=""><div align="center">Weet je zeker dat jet het item <b><?=$_GET['id']?></b> wilt verwijderen? </div></td>
  41. </tr>
  42. </table>
  43. <table width="100%" height="10" border="0" cellpadding="0" cellspacing="0">
  44. <tr>
  45. <td height="14">&nbsp;</td>
  46. </tr>
  47. </table>
  48. <table width="100%" border="0" cellpadding="0" cellspacing="0" class="kader">
  49. <tr>
  50. <td width="291" height="26" bgcolor="#E8E8E8" class=""></td>
  51. <td width="356" bgcolor="#E8E8E8" class=""><input name="delete" type="submit" id="delete" value="Verwijder" onClick="JavaScript:del('?id=<?=$_GET['id']?>&action=del');">
  52. <input type="reset" name="Submit2" value="Herstel" onClick="window.location.href='/categorie.php'"></td>
  53. </tr>
  54. </table></td>
  55. </tr>
  56. </table>
  57. <p>&nbsp; </p>
  58. <p>
  59. <?php
  60. }
  61. ?>


Offline vinTage - 03/11/2005 13:14 (laatste wijziging 03/11/2005 13:15)
Avatar van vinTage Nieuw lid @ b4nkr0bz0r je mag geen superglobals in je query zetten, dat is gevoelig voor injection 
Offline b4nkr0bz0r - 03/11/2005 13:19
Avatar van b4nkr0bz0r PHP gevorderde 1. Jij hebt ook nog een superglobal in je script
2. Je vraagt hier om een script niet hoe je je waarden voor in de query kan beveiligen
3. Ik heb een functie die kijken of er een % ; % ( ) in de URL staat, Wel veilig dus
Offline vinTage - 03/11/2005 13:22
Avatar van vinTage Nieuw lid 1:ik heb geen superglobal in mijn script maar een variable
2:ik vraag niet om een script, maar wat er fout is bij mij 
3, hmm okay, maar mij is er op mn hart gedrukt dat je geen superglobal in je query mag zetten 
Offline b4nkr0bz0r - 03/11/2005 13:23 (laatste wijziging 03/11/2005 14:03)
Avatar van b4nkr0bz0r PHP gevorderde 1. $_POST['delID'] dit is geen superglobal ? 
2. Je hebt gelijk maar bekijk mij nscriptje gewoon:P

edit mischien helpt dit?
var blaat = window.confirm('blaat');
if (blaat == true)
{
query
}

en anders kan je zo doen:
if (window.confirm('WIl je dit item verwijderen?'))
{
// quer
}

EDIT: dit scriptje gebruik ik en het houdt ontzettend veel SQL-injection tegen, Het kijkt gewoon of er vieze tekens in de URL staan. LET OP: dat als er % in de URL staat dan wordt dit ook als vies gerekend (% = een spatie in een query-string). Je kan hiervoor dus trim(); of ltrim(); gebruiken:
  1. <?php
  2. if (preg_match('(;|\(|\)|%|`)', substr($_SERVER['REQUEST_URI'], 1)))
  3. {
  4. exit ('Je zielig hack poging is mislukt');
  5. }
  6. ?>
Offline Fenrir - 03/11/2005 14:16
Avatar van Fenrir PHP expert 1. Gebruik addslashes($_POST['bla']) in je query om sql injection tegen te gaan.

2. <a href="delete.php?id=5" onclick="return confirm('Wil je het echt verwijderen');">Delete</a>
Offline ikkedikke - 03/11/2005 14:49
Avatar van ikkedikke PHP expert Ik snap het probleem niet, hij controleert of de string alleen numeriek is. Als iemand een sql-injection kan vinden met alleen maar cijfers, ben ik sinterklaas
Offline Ibrahim - 03/11/2005 17:08
Avatar van Ibrahim PHP expert
Citaat:
Ik snap het probleem niet, hij controleert of de string alleen numeriek is. Als iemand een sql-injection kan vinden met alleen maar cijfers, ben ik sinterklaas


Hij kijkt of hij niet numeriek is. Als het niet numeriek is moet ie een error afdrukken, dus als je dit gaat zitten gebruiken ( ' " enz.) zal het niet werken want dan krijg je een error 
Offline Fenrir - 03/11/2005 17:22
Avatar van Fenrir PHP expert Bij numerieke dingen gebruik je intval() bij strings gebruik je addslashes().

Verder gebruik je bij het afdrukken van input (bijv. een forumpost) htmlspecialchars() om XSS (cross-site-scripting) tegen te gaan.
Offline nathanael - 03/11/2005 21:23
Avatar van nathanael Gouden medaille

HTML gevorderde
sorry, maar dit deel van je mysql_query zal sowieso niet werken:

WHERE id=".$_POST['delID'])

dit moet namelijk:

WHERE id=".$_POST['delID']."") or die...

zijn.
Offline Rens - 03/11/2005 21:36
Avatar van Rens Gouden medaille

Crew algemeen
Citaat:
sorry, maar dit deel van je mysql_query zal sowieso niet werken:

WHERE id=".$_POST['delID'])

dit moet namelijk:

WHERE id=".$_POST['delID']."") or die...

zijn.


Want...?
Je voegt alleen ."" toe, en dan dat or die...
Dat or die is optioneel.
Dat ."" is nutteloos, het doet hetzelfde als niks.
Offline vinTage - 03/11/2005 21:42
Avatar van vinTage Nieuw lid En or "die" vergalt de pagina ipv alleen een error te geven.
Offline Slipie - 03/11/2005 23:01
Avatar van Slipie PHP beginner Maar de vraag van vinTage was toch uit eindelijk waarom z'n script niet werkt? Of ben ik nou degene die het niet snap?
Naja ik zal 'm iig beantwoorden:

Je script werkt niet omdat javascript client side is en php server side.
De sql query word dus al geladen voordat je iets op je scherm ziet.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.23s