Avatar billede mltrfan Nybegynder
20. marts 2007 - 09:14 Der er 5 kommentarer og
1 løsning

Fejl pga id ikke er der. Hvordan fjerner jeg denne fejlmeddelse

Hej eksperter

Jeg har en kode hvor man retter i databasen med det id man for  fra en anden side. Men når er ikke er noget indhold til det id melder den selvfølig en fejl. Hvordan fjerner man den fejl så brugeren ikke kan se den.

min kode er

<html>
<head>
<LINK rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<?
include("db.inc.php");


$id=$_GET[id];
?>
<table border="0" align="center" width="628" cellpadding="0" cellspacing="0" align="center">
<tr>
<td valign="top"  bgcolor="#002afc" class="streg1" valign="top">
<?   
if(isset($_POST["opret3"])){

    echo "Siden er rettet<br>";
   
?>



    <?

    $overskrift=$_POST["overskrift"];
    $tekst=$_POST["tekst"];
    $sideid=$_POST["sideid"];


$ret= " UPDATE indhold SET sideid='$sideid', overskrift='$overskrift', tekst='$tekst'  WHERE sideid=$id ";
mysql_query($ret);
}else{

   
$sql2="SELECT * FROM indhold WHERE sideid=$id";
$result = mysql_query($sql2);
$data= mysql_fetch_array($result);

?>
<p class="indryk3">       
<table border="0" align="center" width="628" cellpadding="0" cellspacing="0" align="center">
<tr>
<td valign="top"  bgcolor="#002afc" class="streg1" valign="top">
       
   
<h3>  Ret indhold p&aring; din side:</h3>
<table>
<tr>

<form method="POST" action="<? echo $PHP_SELF;?>">

<td>Overskrift p&aring; siden</td>
<td><input type="text" name="overskrift" value="<? echo $data[overskrift]?>"><br></td>
</tr>

<tr>
<td valign="top">Tekst p&aring; siden </td>
<td><textarea name="tekst" rows="20" cols="40"><? echo $data[tekst]?></textarea><br><br></td>
</tr>

<tr>
<td><input type="hidden" name="sideid" value="<? echo $id=$_GET["id"];?>"></td>
</tr>

<tr>
<td colspan="2" align="center">
<input type="submit" name="opret3" value="Ret" class="knap">
<input type="reset" name="slet" value="Slet alt" class="knap">


</td>
</tr>
</form></p>
</table>


</td>   
</tr>
</table>
    <?
}


?>

</body>
</html>
Avatar billede mcardle Nybegynder
20. marts 2007 - 09:33 #1
Prøv:

$id = @$_GET[id];
Avatar billede mcardle Nybegynder
20. marts 2007 - 09:34 #2
Hvis det første ikke virker, så gør det her:

if(isset($_GET["id"])){
  $id = $_GET["id"];
}
Avatar billede mltrfan Nybegynder
20. marts 2007 - 09:51 #3
Tak det virker det sidste til min kode lægger du et svar
Avatar billede mcardle Nybegynder
20. marts 2007 - 10:22 #4
Svar
Avatar billede mltrfan Nybegynder
20. marts 2007 - 10:35 #5
point til dig og tak for hjælpen
Avatar billede johan.o Nybegynder
20. marts 2007 - 13:55 #6
Så blander jeg mig utidigt igen :)

Hvis koden skal være tilgængelig på det ganske internet er den temmelig sårbar overfor SQL injection (Ubehagelig ting som gør at brugerne kan læse og i værste fald ødelægge indholdet i din database).

Hvis du gerne vil sikre din kode lidt bedre bør du nok bruge lidt tid på at læse om mysql_real_escape_string() og den 'korrekte' brug af ' og "

Lad mig give dig et eksempel :

Denne linje : SELECT * FROM indhold WHERE sideid=$id

Hvis nu at jeg skriver noget ala det her i URL'en : dinside.php?id=1%20DELETE%20FROM%20indhold%20WHERE%201

så ser din query sådan ud :

SELECT * FROM indhold WHERE sideid=1 DELETE FROM indhold WHERE 1

Det var vist ikke det du ville have :)

$sql2="SELECT * FROM indhold WHERE sideid='".mysql_real_escape_string($id)."'";

Så er du bedre sikret......hvor har jeg hørt det før ??.....nåh anyways, hvis du vil vide mere....det har jeg da også hørt før ??....arghh...altså hvis du har spørgsmål så skyd bare løs :)

Mvh. Johan

og hvis du allerede ved det her, så undskylder jeg naturligvis min utidige indblanding :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester