|
| Validering af rettede data 2 Fra : Nederbasse |
Dato : 28-09-04 08:10 |
|
Hej
Jeg vil gerne bekræfte for en bruger at han/hun er slettet fra en liste.
Jeg fik nogle gode råd i tråden: validering af rettede data d. 23-09
problemet er at jeg ikke kan få dem til at virke uden fejl
Nu har jeg læst lidt på lektien og prøvet med flg. kode:
mysql_query("UPDATE proeve SET modtag='0' WHERE navn='$navn' AND
email='$email'") or die ("MySQL-fejl: ".mysql_error() );
$change = mysql_affected_rows();
if ($change);{
print "Du er slettet";
}
else
{
print "Dut navn eller email er ikke fundet";
}
?>
Og det virker stadig ikke, hvad gør jeg galt ?
Lars
| |
Troels Arvin (28-09-2004)
| Kommentar Fra : Troels Arvin |
Dato : 28-09-04 08:17 |
|
On Tue, 28 Sep 2004 09:09:56 +0200, Nederbasse wrote:
> Og det virker stadig ikke, hvad gør jeg galt ?
Hvad med, om du starter med at prøve at print'e den resulterende SQL ud,
fx. ved at ændre din kode til
$SQL="
UPDATE proeve
SET modtag='0'
WHERE navn='$navn' AND email='$email'
";
print "<p>About to do:</p><pre>$SQL</pre>"; // debug
mysql_query($SQL) or die ("MySQL-fejl: ".mysql_error());
Jeg kunne godt tænke mig at se, hvad output af dette bliver. Og så kunne
jeg godt tænke mig at høre, hvilken MySQL-fejl, du får.
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Nederbasse (28-09-2004)
| Kommentar Fra : Nederbasse |
Dato : 28-09-04 10:07 |
|
|
| Jeg kunne godt tænke mig at se, hvad output af dette bliver. Og så kunne
| jeg godt tænke mig at høre, hvilken MySQL-fejl, du får.
|
| --
| Greetings from Troels Arvin, Copenhagen, Denmark
Output
About to do:
UPDATE proeve SET modtag='0' WHERE navn='Hans' AND email='hans@hans.dk'Lars
| |
Troels Arvin (28-09-2004)
| Kommentar Fra : Troels Arvin |
Dato : 28-09-04 10:27 |
|
On Tue, 28 Sep 2004 11:06:55 +0200, Nederbasse wrote:
> UPDATE proeve SET modtag='0' WHERE navn='Hans' AND
> email='hans@hans.dk'Lars
Jeg går ud fra, at du mener
UPDATE proeve SET modtag='0' WHERE navn='Hans' AND
email='hans@hans.dk'
Jeg kan ikke se noget galt i forespørgslen. Hvad får du af
fejlmeddelelse, hvis du udskriver output fra mysql_error() efter kørsel
af din SQL?
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Nederbasse (28-09-2004)
| Kommentar Fra : Nederbasse |
Dato : 28-09-04 11:42 |
|
|
| Jeg kan ikke se noget galt i forespørgslen. Hvad får du af
| fejlmeddelelse, hvis du udskriver output fra mysql_error() efter kørsel
| af din SQL?
|
| --
| Greetings from Troels Arvin, Copenhagen, Denmark
|
Jeg får en parse error i linien med else
Du kan se hele koden her:
http://users.cybercity.dk/~dsl32642/test.htm
Lars
| |
Troels Arvin (28-09-2004)
| Kommentar Fra : Troels Arvin |
Dato : 28-09-04 11:50 |
|
On Tue, 28 Sep 2004 09:09:56 +0200, Nederbasse wrote:
> if ($change);{
> print "Du er slettet";
> }
Du har i førstnævnte linje fået smidt et semikolon ind, hvor det
ikke hører hjemme.
Når nu dette forhåbentlig er løst, så mangler du at få rettet et grimt
SQL-injection hul, der tilsyneladende eksisterer i din kode. Du kunne fx.
omskrive til
$SQL=sprintf(
"
UPDATE proeve
SET modtag='0'
WHERE navn='%s' AND email='%s'
",
mysql_real_escape_string($navn),
mysql_real_escape_string($email)
);
mysql_query($SQL);
$change = mysql_affected_rows();
if ($change);{
print "Du er slettet";
} else {
print "Dut navn eller email er ikke fundet";
}
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Nederbasse (29-09-2004)
| Kommentar Fra : Nederbasse |
Dato : 29-09-04 08:32 |
|
"Troels Arvin" <troels@arvin.dk> skrev i en meddelelse
news:pan.2004.09.28.10.49.43.276239@arvin.dk...
| On Tue, 28 Sep 2004 09:09:56 +0200, Nederbasse wrote:
|
| > if ($change);{
| > print "Du er slettet";
| > }
|
| Du har i førstnævnte linje fået smidt et semikolon ind, hvor det
| ikke hører hjemme.
|
| Når nu dette forhåbentlig er løst, så mangler du at få rettet et grimt
| SQL-injection hul, der tilsyneladende eksisterer i din kode. Du kunne fx.
| omskrive til
|
| $SQL=sprintf(
| "
| UPDATE proeve
| SET modtag='0'
| WHERE navn='%s' AND email='%s'
| ",
| mysql_real_escape_string($navn),
| mysql_real_escape_string($email)
| );
| mysql_query($SQL);
| $change = mysql_affected_rows();
| if ($change);{
| print "Du er slettet";
| } else {
| print "Dut navn eller email er ikke fundet";
| }
|
| --
| Greetings from Troels Arvin, Copenhagen, Denmark
Stadig fejl -parse error ved else
se her: http://users.cybercity.dk/~dsl32642/test.htm
Lars|
| |
Troels Arvin (29-09-2004)
| Kommentar Fra : Troels Arvin |
Dato : 29-09-04 08:42 |
|
On Wed, 29 Sep 2004 09:31:46 +0200, Nederbasse wrote:
> Stadig fejl -parse error ved else
> se her: http://users.cybercity.dk/~dsl32642/test.htm
Nu ved jeg ikke, hvordan nævnte URL skal tolkes, men tilsyneladende har
du ikke rettet tidligere nævnte semikolon-fejl:
if ($change);{
skal ændres til
if ($change) {
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Nederbasse (29-09-2004)
| Kommentar Fra : Nederbasse |
Dato : 29-09-04 10:31 |
|
| Nu ved jeg ikke, hvordan nævnte URL skal tolkes, men tilsyneladende har
| du ikke rettet tidligere nævnte semikolon-fejl:
|
| if ($change);{
|
| skal ændres til
|
| if ($change) {
|
| --
| Greetings from Troels Arvin, Copenhagen, Denmark
Efter at jeg har rettet div. fejl 40 kommer denne fejl:
Fatal error: Call to undefined function: mysql_real_escape_string() in
/usr/XXXXXXXX/fratest.php on line 16
| |
Troels Arvin (29-09-2004)
| Kommentar Fra : Troels Arvin |
Dato : 29-09-04 10:40 |
|
On Wed, 29 Sep 2004 11:31:01 +0200, Nederbasse wrote:
> Fatal error: Call to undefined function: mysql_real_escape_string() in
> /usr/XXXXXXXX/fratest.php on line 16
OK, din PHP er åbenbart ret gammel. Prøv mysql_escape_string() i stedet.
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Nederbasse (30-09-2004)
| Kommentar Fra : Nederbasse |
Dato : 30-09-04 08:11 |
|
|
| OK, din PHP er åbenbart ret gammel. Prøv mysql_escape_string() i stedet.
|
| --
| Greetings from Troels Arvin, Copenhagen, Denmark
Det virker bare SÅ godt
Tak for det
Lars
|
| |
Michael Foged (29-09-2004)
| Kommentar Fra : Michael Foged |
Dato : 29-09-04 10:43 |
|
On Wed, 29 Sep 2004 11:31:01 +0200, Nederbasse wrote:
> Fatal error: Call to undefined function: mysql_real_escape_string() in
> /usr/XXXXXXXX/fratest.php on line 16
Hvad version af php bruger du? mysql_real_escape_string() er med fra
version 4.3.0
http://de2.php.net/manual/en/function.mysql-real-escape-string.php
--
mvh
Michael Foged
| |
Nederbasse (29-09-2004)
| Kommentar Fra : Nederbasse |
Dato : 29-09-04 12:45 |
| | |
Michael Foged (29-09-2004)
| Kommentar Fra : Michael Foged |
Dato : 29-09-04 09:39 |
|
On Wed, 29 Sep 2004 09:31:46 +0200, Nederbasse wrote:
> Stadig fejl -parse error ved else
> se her: http://users.cybercity.dk/~dsl32642/test.htm
Bortset fra det semikolon der er efter if($change) er der heller ikke
lige mange { og }
--
mvh
Michael Foged
| |
|
|