/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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

|
| 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

PHP version 4.2.3
Det er en offentlig arbejdsplads jeg sidder på og vi opdater sandelig ikke
bare lige

Lars

Lars



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

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste