[php] Update mysql record script

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BasXcore
  • Registratie: April 2002
  • Laatst online: 18-04 08:59
Dag, ik ben php/mysql lerende. Ik ben bezig een update script te maken voor een mysql veld. Ik kom vanaf een andere pagina aan met een link zoals:

PHP:
1
http://www.server.com/update.php?id=3


Hier staat de variabele "id" voor het eerste "auto_incement" veld in mijn tabel, int(4).

Met het onderstaand script wil ik de inhoud van het veld "id" in tabel "www_gigdates" en aanverwanten weergeven.

update.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?
include("dbinfo.inc.php");
mysql_connect($server,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");


$query="SELECT * FROM www_gigdates WHERE id='$id'";
$result=mysql_query($query);
$num=mysql_numrows($result); 
mysql_close();

$i=0;
while ($i < $num) {
$date=mysql_result($result,$i,"date");
$event=mysql_result($result,$i,"event");
$location=mysql_result($result,$i,"location");
$link=mysql_result($result,$i,"link");
?>

<form action="updated.php" method="post">
<input type="hidden" name="ud_id" value="<? echo $id; ?>">
Date: <input type="text" name="ud_date" value="<? echo $date; ?>"><br>
Event: <input type="text" name="ud_event" value="<? echo $event; ?>"><br>
Location: <input type="text" name="ud_location" value="<? echo $location; ?>"><br>
Link: <input type="text" name="ud_link" value="<? echo $link; ?>"><br>
<input type="Submit" value="Update">
</form>


<?
++$i;
} 
?>


Als ik de "id" uit de url haal dan displayed dit script niets. Het script werkt wel als ik zelf het veld "id" op een waarde zet in het script.

Ik heb het idee dat ik de "id" waarde uit de URL niet goed inlees in het script. Wie kan mij opweg helpen?

[ Voor 19% gewijzigd door BasXcore op 27-06-2006 23:29 ]


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

PHP:
7
$query="SELECT * FROM www_gigdates WHERE id=".$_GET['id'];


je id is int, dus geen quotes ( ' ' ) en je moet werken met $_GET voor vars uit je url te halen

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • BasXcore
  • Registratie: April 2002
  • Laatst online: 18-04 08:59
snake903 schreef op dinsdag 27 juni 2006 @ 23:30:
PHP:
7
$query="SELECT * FROM www_gigdates WHERE id=".$_GET['id'];


je id is int, dus geen quotes ( ' ' ) en je moet werken met $_GET voor vars uit je url te halen
Het werkt. Hier kan ik mee verder. Dank je wel Snake903.

Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 21:53

orf

Poe, let ook even op sql-injectie, wat gebeurt er als de pagina zo wordt opgevraagd:

domain.com?id=1 OR 1=1

beter om eerst te valideren of te casten naar een integer:
PHP:
1
2
3
4
5
<?php

if (is_numeric($_GET['id'])){
}
?>


of
PHP:
1
2
3
4
5
<?php

intval($_GET['id']);

?>

Acties:
  • 0 Henk 'm!

  • Pyrus
  • Registratie: November 2001
  • Laatst online: 21:48

Pyrus

Hardknock life

Let er wel op dat dit gevaarlijk is om zo op een website te zetten die toegankelijk is voor jan en alleman. Je loopt nu het risico op SQL-injecties

LinkedIn


Acties:
  • 0 Henk 'm!

  • sky-
  • Registratie: November 2005
  • Niet online

sky-

qn ella 👌

en waarom :

<?php
@mysql_select_db($database) or die( "Unable to select database");
?>

Waarom onderdruk je de fout ? Er staat toch "or die" , daar zet je dan de foutmelding die je wel of niet wil gebruiken. Of anders gebruik : trigger_error.

don't be afraid of machines, be afraid of the people who build and train them.


Acties:
  • 0 Henk 'm!

  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03 13:41

Crayne

Have face, will travel

PHP:
1
2
3
4
<?
include("dbinfo.inc.php");
mysql_connect($server,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
En waarom zet je mysql_connect en mysql_select_db niet in de include file die je vlak daarboven aanroept?

Mijn Library Thing catalogus


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

orf schreef op woensdag 28 juni 2006 @ 00:03:
Poe, let ook even op sql-injectie, wat gebeurt er als de pagina zo wordt opgevraagd:
[/php]
of...
PHP:
1
2
// Ik gebruik regelmatig dit:
sprintf("ID als int: %d", $_GET['id']);


-- edit --

Om het nog even iets nuttiger te maken; op sommige configuraties staan globals aan. Hierdoor worden waardes uit de url ($_GET) en uit een formulier ($_POST) als gewone variabelen beschikbaar zijn. Zo wordt met globals aan de url index.php?id=1 (wat je normaal aanroept met: $_GET['id']) ook als $id bruikbaar.

Het is alleen aan te raden om globals uit te zetten, wat dan ook bijna overal zo is. Daaorm is het verstandig om nooit uit te gaan van globals, en dus altijd $_GET en $_POST te gebruiken. :)

En daarnaast nog eens elke waarde uit GET en POST grondig te checken, aangezien dit user-input is, welke je per defenitie nooit moet vertrouwen.

[ Voor 62% gewijzigd door OkkE op 28-06-2006 13:19 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

Verwijderd

is_numeric() liever niet gebruiken, want die accepteert ook hexadecimale en wetenschappelijke notaties. Liever met ctype_digit(). Toevallig heb ik gisteren wat geschreven over SQL injections, met een voorbeeld van Joomla bugs als case.
Pagina: 1