|
| Rette i en databese 2(mysql) newbye Fra : Jan Hansen |
Dato : 13-11-03 14:52 |
|
Hejsa
Hvad er der galt med følgende kode??
<?php
require("aaben_luk.php");
$gren = $_POST['gren'];
$fnavn = $_POST['fnavn'];
$enavn = $_POST['enavn'];
$adr = $_POST['adr'];
$hus = $_POST['hus'];
$lby = $_POST['lby'];
$pnr = $_POST['pnr'];
$by = $_POST['by'];
$tnr = $_POST['tnr'];
$fnr = $_POST['fnr'];
$sort = $_POST['sort'];
$titel = $_POST['titel'];
$id = $_POST['T2'];
// her er der de korekte data i alle variable//
//echo "$id $sort $gren $titel $fnavn $enavn $adr $hus $lby $pnr $by $tnr";
//
// åbner og lukker korekt da functionen bruges på andre sider og virker//
aaben_database();
$sql = "
UPDATE adresse
SET sort = $sortering, gren = '$gren', titel = '$titel', fornavn =
'$fnavn', efternavn = '$enavn', adr = '$adr', husnr = '$hus', lokalby =
'$lby', postnr = $pnr, byen = '$by', telefon = $tnr, foeselsdag = $fnr
WHERE id = $id
";
mysql_query( $sql);
luk_data();
?>
//header("Location: ret1.php");//
På forhånd tak.
--
MVH Jan
| |
Jan Hansen (13-11-2003)
| Kommentar Fra : Jan Hansen |
Dato : 13-11-03 14:57 |
|
Hejsa
Følgende kode virker nå jeg skal ligge data ind.
$sql = 'INSERT INTO `adresse` ( `id`,`sortering` , `gren` , `titel` ,
`fornavn` ,`efternavn` , `adr` , `husnr` , `lokalby` , `postnr` , `byen` ,
`telefon` , `foeselsdag` ) ';
$sql .= "VALUES ('$id','$sort', '$gren', '$titel', '$fnavn', '$enavn',
'$adr', '$hus', '$lby', '$pnr', '$by', '$tnr', '$fnr' );";
$sql .= '';
mysql_query( $sql);
Ved ikke om det kan hjælpe!!
--
MVH Jan
"Jan Hansen" <jan.h@rnet.invalid> skrev i en meddelelse
news:bp023v$euq$1@news.net.uni-c.dk...
> Hejsa
>
> Hvad er der galt med følgende kode??
>
> <?php
> require("aaben_luk.php");
> $gren = $_POST['gren'];
> $fnavn = $_POST['fnavn'];
> $enavn = $_POST['enavn'];
> $adr = $_POST['adr'];
> $hus = $_POST['hus'];
> $lby = $_POST['lby'];
> $pnr = $_POST['pnr'];
> $by = $_POST['by'];
> $tnr = $_POST['tnr'];
> $fnr = $_POST['fnr'];
> $sort = $_POST['sort'];
> $titel = $_POST['titel'];
> $id = $_POST['T2'];
> // her er der de korekte data i alle variable//
> //echo "$id $sort $gren $titel $fnavn $enavn $adr $hus $lby $pnr $by
$tnr";
> //
> // åbner og lukker korekt da functionen bruges på andre sider og virker//
> aaben_database();
> $sql = "
> UPDATE adresse
> SET sort = $sortering, gren = '$gren', titel = '$titel', fornavn =
> '$fnavn', efternavn = '$enavn', adr = '$adr', husnr = '$hus', lokalby =
> '$lby', postnr = $pnr, byen = '$by', telefon = $tnr, foeselsdag = $fnr
> WHERE id = $id
> ";
> mysql_query( $sql);
> luk_data();
> ?>
> //header("Location: ret1.php");//
>
> På forhånd tak.
>
> --
> MVH Jan
>
>
| |
Troels Arvin (13-11-2003)
| Kommentar Fra : Troels Arvin |
Dato : 13-11-03 14:58 |
|
On Thu, 13 Nov 2003 14:52:11 +0100, Jan Hansen wrote:
> Hvad er der galt med følgende kode??
Hvad får du af fejlmeddelelser? - Hvordan ved du, at det ikke virker?
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Jan Hansen (13-11-2003)
| Kommentar Fra : Jan Hansen |
Dato : 13-11-03 15:02 |
|
"Troels Arvin" <troels@arvin.dk> skrev
> > Hvad er der galt med følgende kode??
>
> Hvad får du af fejlmeddelelser? - Hvordan ved du, at det ikke virker?
Jeg får igen fejlmeddeleser, men når jeg ser i databasen er der intet blevet
rettet.
--
MVH Jan
| |
Troels Arvin (13-11-2003)
| Kommentar Fra : Troels Arvin |
Dato : 13-11-03 15:06 |
|
On Thu, 13 Nov 2003 15:02:18 +0100, Jan Hansen wrote:
>
> "Troels Arvin" <troels@arvin.dk> skrev
>> > Hvad er der galt med følgende kode??
>>
>> Hvad får du af fejlmeddelelser? - Hvordan ved du, at det ikke virker?
>
> Jeg får igen fejlmeddeleser, men når jeg ser i databasen er der intet blevet
> rettet.
Prøv midlertidigt at skrive
print htmlspecialchars($sql);
i stedet for
mysql_query( $sql);
- Og lad os da se, hvad det giver af output.
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Jan Hansen (13-11-2003)
| Kommentar Fra : Jan Hansen |
Dato : 13-11-03 15:13 |
|
"Troels Arvin" <troels@arvin.dk> skrev
> Prøv midlertidigt at skrive
>
> print htmlspecialchars($sql);
>
> i stedet for
>
> mysql_query( $sql);
>
> - Og lad os da se, hvad det giver af output.
Hejsa
Den kom med følgende meddelese
UPDATE adresse SET sort = , gren = 'Leder', titel = 'fdgfdf', fornavn =
'Nfds', efternavn = 'Kdsf', adr = 'hjdf', husnr = '4', lokalby = 'Spandet',
postnr = 6760, byen = 'Ribe', telefon = 74858787, foeselsdag = 451512 WHERE
id = 34
og hvad nu??
--
MVH Jan
| |
Troels Arvin (13-11-2003)
| Kommentar Fra : Troels Arvin |
Dato : 13-11-03 15:23 |
|
On Thu, 13 Nov 2003 15:13:17 +0100, Jan Hansen wrote:
> UPDATE adresse SET sort = , gren = 'Leder', titel = 'fdgfdf', fornavn =
> 'Nfds', efternavn = 'Kdsf', adr = 'hjdf', husnr = '4', lokalby = 'Spandet',
> postnr = 6760, byen = 'Ribe', telefon = 74858787, foeselsdag = 451512 WHERE
> id = 34
Det går galt lynhurtigt efter "SET sort =". Følgende er ikke valid SQL:
UPDATE adresse SET sort = ,
Der mangler at blive sat en værdi for sort.
Ret fejlen og prøv derefter at omgøre den tidligere ændring. Skift
således
print htmlspecialchars($sql);
til
if (!mysql_query($sql)) {
die("opgav efter mysql-fejl: ".mysql_error());
}
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Jan Hansen (13-11-2003)
| Kommentar Fra : Jan Hansen |
Dato : 13-11-03 15:25 |
|
Hejsa
Nu virker den, jeg havde lavet en fejl ved navngivningen af variablen sort,
da jeg kaldte den sortering virkede det.
Mange tak for hjælpen Troels.
--
MVH Jan
"Jan Hansen" <jan.h@rnet.invalid> skrev i en meddelelse
news:bp03bi$fru$1@news.net.uni-c.dk...
> "Troels Arvin" <troels@arvin.dk> skrev
>
> > Prøv midlertidigt at skrive
> >
> > print htmlspecialchars($sql);
> >
> > i stedet for
> >
> > mysql_query( $sql);
> >
> > - Og lad os da se, hvad det giver af output.
> Hejsa
>
> Den kom med følgende meddelese
>
> UPDATE adresse SET sort = , gren = 'Leder', titel = 'fdgfdf', fornavn =
> 'Nfds', efternavn = 'Kdsf', adr = 'hjdf', husnr = '4', lokalby =
'Spandet',
> postnr = 6760, byen = 'Ribe', telefon = 74858787, foeselsdag = 451512
WHERE
> id = 34
>
> og hvad nu??
>
> --
> MVH Jan
>
>
| |
Troels Arvin (13-11-2003)
| Kommentar Fra : Troels Arvin |
Dato : 13-11-03 15:38 |
|
On Thu, 13 Nov 2003 14:52:11 +0100, Jan Hansen wrote:
> $gren = $_POST['gren'];
[...]
> $id = $_POST['T2'];
> $sql = "
> UPDATE adresse
> SET sort = $sortering, gren = '$gren', titel = '$titel', fornavn =
> '$fnavn', efternavn = '$enavn', adr = '$adr', husnr = '$hus', lokalby =
> '$lby', postnr = $pnr, byen = '$by', telefon = $tnr, foeselsdag = $fnr
> WHERE id = $id
> ";
Denne slags kode er meget farlig, fordi den åbner for såkaldt
SQL-injection: Du lader eksternt forsynede værdier ryge direkte i dit
SQL-udtryk.
Forestil dig fx. hvad det kunne få af konsekvenser, hvis en (mis-)bruger
får sneget følgende værdi ind i $id:
0 OR 0=0
Da 0 altid er lig 0, vil ændringen gælde for data i alle rækker i din
tabel.
En måde at gøre din kode mere sikker på:
$gren = addslashes($_POST['gren']);
$fnavn = addslashes($_POST['fnavn']);
$enavn = addslashes($_POST['enavn']);
[... osv ...]
$pnr = intval($_POST['pnr']);
[... osv ...]
$id = intval($_POST['T2']);
Med andre ord sørger jeg for at bringe de i SQL'en benyttede værdier på
en tilstand hvor de i hvertfald ikke kan gøre voldsom skade.
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Jan Hansen (13-11-2003)
| Kommentar Fra : Jan Hansen |
Dato : 13-11-03 17:13 |
|
Tak
havde læst om det, men viste ikke hvordan man gjorde.
--
MVH Jan
| |
Lars Olesen (15-11-2003)
| Kommentar Fra : Lars Olesen |
Dato : 15-11-03 09:56 |
|
Jan Hansen wrote:
> Hvad er der galt med følgende kode??
[SNIP en masse kode]
Ved ikke om du har fået løst problemet, men en anden ting, der er galt
er at først kører alle array-variablene ind i lokale variable for kun at
bruge dem en gang. Det er spild af gode serverkræfter. Skriv dem
direkte i SQL'en, så kan man også hurtigt overskue, hvor de forskellige
værdier kommer fra.
/lars
--
www.fodboldenslegestue.dk www.larsolesen.dk
www.discimport.dk www.vih.dk
| |
|
|