Ajax en post gegevens in php

Pagina: 1
Acties:
  • 101 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb de volgende ajax code die een post verstuurd met een id nummer
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  function ajaxDelImg()
  {
    var xmlHttpRequest = new XMLHttpRequest();
    xmlHttpRequest.open("POST", "imgDelete.php", true);
    xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=iso-8859-15'); 
    sendData = "id="+id;
    alert(sendData);
    xmlHttpRequest.send(sendData);
    globalxmlHttpRequest = xmlHttpRequest;
    xmlHttpRequest.onreadystatechange = deleteImg;
    deleteImg.globalxmlHttpRequest = xmlHttpRequest;
  }
  
  function deleteImg()
  {
    if(globalxmlHttpRequest.readyState == 4)
    {
      alert("deleted");
    }
  }


Dan heb ik de volgende code staan in het imgDelete.php bestand
code:
1
2
3
4
5
6
7
<?php
$db=mysql_connect("localhost", "******", "*******") or die('Could not connect: ' . mysql_error());
mysql_select_db("*******", $db);

$query = 'DELETE FROM wt_photoview WHERE id = $id';
print "deleted {$_POST['id']}";
?>


Toch kan ik de id waarde die ik mee gestuurd heb met het ajax script niet uitlezen met php. Iemand een idee hoe ik dit oplos?

[ Voor 5% gewijzigd door Verwijderd op 15-11-2006 14:26 ]


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Je mist een header:

JavaScript:
1
xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=iso-8859-15');

March of the Eagles


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

code:
1
2
$query = 'DELETE FROM wt_photoview WHERE id = $id';
print "deleted {$_POST['id']}";

En $id is niet hetzelfde als $_POST['id']. Let daarbij dan ook nog op het verschuil tussen "" en '' (alles wat tussen enquete quotes staat wordt letterlijk opgenomen, in je uiteindelijke query staat dus letterlijk $id). En als laatste: kijk aub uit voor SQL injection.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nee dat klopt, maar de delete query laat ik nog helemaal niet uitvoeren, daar hoeft hij dus niet mee toe doen, gaat me om de print die hij terug stuurt die het al niet doet. Heb gerpobeerd de header toe te voegen (heb me post ook geedit zoals ik het heb toegevoegt) maar het werkt nog steeds niet. Ik verstuur de volgende http request:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
POST /Photoview/imgDelete.php HTTP/1.1
Host: www.ethanol-online.eu
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: nl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Content-Length: 4
Content-Type: application/xml
Cookie: ASPSESSIONIDGGGGGGGG=CPLONSPJDTYHQTJIBESZCAQQUQQQHMIM
Pragma: no-cache
Cache-Control: no-cache

id=5


en krijg dan de het volgende terug

code:
1
2
3
4
5
6
7
8
9
10
11
HTTP/1.1 200 OK
Date: Wed, 15 Nov 2006 13:24:46 GMT
Server: Apache
X-Powered-By: PHP/5.2.0
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html

8  
deleted 
0


Zoals je ziet krijg ik de id waarde niet terug, dus het uitprinten van de id werkt niet

(en hoef niet bang te zijn voor sql injection aangezien het niet van een form vandaan komt ;) )

[ Voor 3% gewijzigd door Verwijderd op 15-11-2006 14:32 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op woensdag 15 november 2006 @ 14:29:
Zoals je ziet krijg ik de id waarde niet terug, dus het uitprinten van de id werkt niet
Ik doe niet veel met AJAX en dergelijke maar dat id hoor je toch ook niet terug te krijgen, dat verstuur je toch juist?
(en hoef niet bang te zijn voor sql injection aangezien het niet van een form vandaan komt ;) )
En dat maakt uit omdat...? Je hoeft geen form te hebben om SQL te injecteren hoor. Vertrouw nooit enige gebruikersinvoer! En ja, dat is dit ook. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik doe niet veel met AJAX en dergelijke maar dat id hoor je toch ook niet terug te krijgen, dat verstuur je toch juist?
Wil ff uittesten of dat ik hem uitgelezen kreeg. Daarom probeer ik heb terug te sturen om dat te testen, maar het uilezen werkt schijnbaar niet gezien de http die ik terugkrijg.

Acties:
  • 0 Henk 'm!

  • ReverendBizarre
  • Registratie: December 2001
  • Laatst online: 24-03-2021
Ik zou om te beginnen gewoon een bestaande AJAX library gebruiken in plaats van je eigen implementatie schrijven. Dat scheelt je werk en je hebt gelijk al een wat robustere en meer complete implementatie die op vrijwel iedere browser ook daadwerkelijk werkt (mits je een goede lib kiest natuurlijk).

Ik werk zelf al lange tijd met xajax (http://www.xajaxproject.org/) en die bevalt zeer goed. Zeer simpel in gebruik, vrijwel onnodig om zelf nog javascript meuk te schrijven en biedt goede standaard functionaliteit voor het afhandelen en terugsturen van return values vanaf de server kant.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Moet het voor school helaas zo uitschrijven ;). Leraar is alleen naar andere school gegaan, maar moet de opdracht nog steeds inleveren :P

Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Bij mij werkt die code wel. Kijk dus ook even of het niet aan een server/php-instelling ligt :)

[ Voor 69% gewijzigd door user109731 op 15-11-2006 15:59 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jezus, ik moet echt andere web hosting hebben, nix doet het daar :S. Niet eens alle html/javascript code werkt.

Acties:
  • 0 Henk 'm!

Verwijderd

Je hosting bedrijf heeft niks te maken met je javascript natuurlijk. Dat wordt namelijk client side afgehandelt. En html is statisch dus lijkt me ook niet dat ze daar wat mee doen.

Tenzij het een gratis provider is. Die willen er nog wel eens zooi in stoppen voor de nodige banners
Pagina: 1