Avatar billede tekniskdesigner Nybegynder
21. februar 2011 - 17:36 Der er 12 kommentarer og
1 løsning

$GET problem

Er kørt fast og mangler nogle friske øjne på det her

Har denne her fil hvor man kan rette i 2 felter

<?php
$con = mysql_connect("xxxxxxxxxxx","xxxxxxxxxx","xxxxxxxxxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("xxxxxxxxxxxx", $con);

$id = mysql_real_escape_string($_GET['id']);

$result = mysql_query("SELECT * FROM links WHERE LinkID = '$id'");

while($row = mysql_fetch_array($result))
{
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Linkindex</title>
</head>
<body>

<br /><br />

<form name="input" action="LinkRetAdd.php" method="get">
Navn: <input type="text" name="LinkNavn" value="<?php echo $row['LinkNavn'] ;?>" />
URL: <input type="text" name="LinkURL" value="<?php echo $row['LinkURL'] ;?>"  />
<input type="hidden" name="LinkID" value="<?php echo $row['LinkID'] ;?>"  />
<input type="submit" value="update" />
</form>

</body>
</html>

<?php
}
;
?>

<?php
mysql_close($con);
?>

********** Den sender videre til denne her fil

<?php
$con = mysql_connect("xxxxxxxx","xxxxxxxxxxxx","xxxxxxxxxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("xxxxxxxxxx", $con);

mysql_query("UPDATE links SET LinkNavn = '$_GET['LinkNavn']' AND LinkURL = '$_GET['LinkURL']' WHERE LinkID = '$_GET['LinkID']' ");

mysql_close($con);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Link rettet</title>
<meta http-equiv="refresh" content="5;url=index.php">
</head>
<body>

Auto send tilbage

</body>
</html>

Men får en fejl:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/otito.dk/public_html/LinkRetAdd.php on line 10

linie 10 er denne her mysql_query("UPDATE link..............

Det er garanteret en eller anden dum ' jeg har sat forkert eller mangler men har stiret mig blind på det og er helt tabt
Avatar billede repox Seniormester
21. februar 2011 - 17:57 #1
To ting:

1. Hvorfor dælen bruger du GET til sådan noget?
2. Du er ikke sikret mod SQL injection - din kode er meget sårbar.

Dit problem ligger i du ikke har styr på dine quotes - du er alt for gavmild med dem i din SQL forespørgsel i LinkRetAdd.php
Avatar billede tekniskdesigner Nybegynder
21. februar 2011 - 18:03 #2
Bruger GET fordi jeg så kan følge med i hvad der bliver transporteret frem, fordi jeg troede fejlen lagde der :)

Hvordan skal den så se ud? syntes efterhånden jeg har prøvet flere forskellige
Avatar billede zynzz Praktikant
21. februar 2011 - 18:18 #3
Som repox skriver er dette en meget usikker måde da du ikke er sikret mod SQL injections...

Men måske det skal være:

mysql_query("UPDATE links SET LinkNavn = '".$_GET['LinkNavn']."' AND LinkURL = '".$_GET['LinkURL']."' WHERE LinkID = '".$_GET['LinkID'],"' ");
Avatar billede patrickreck Nybegynder
21. februar 2011 - 18:19 #4
mysql_query("UPDATE links SET LinkNavn = ".$_GET['LinkNavn']." WHERE LinkID = ".$_GET['LinkID']."");
Avatar billede patrickreck Nybegynder
21. februar 2011 - 18:19 #5
Hovsa, jeg var vidst for langsom :-)
Avatar billede webweaver Praktikant
21. februar 2011 - 18:27 #6
Det er fint at bruge $_GET på den første, til at "fange" id variablen fra en URL formentlig.

På de andre, som du modtager fra formen, der bør du ikke bruge $_GET men $_POST.

Og så som repox siger, så driller det med dine quotes i dit SQL statement. Det er der dog kommet svar på nu, fra andre kan jeg se :)
Avatar billede tekniskdesigner Nybegynder
21. februar 2011 - 18:27 #7
Det virker heller ikke:

Warning: mysql_query() expects parameter 2 to be resource, string given in /var/www/otito.dk/public_html/LinkRetAdd.php on line 10
Avatar billede webweaver Praktikant
21. februar 2011 - 18:30 #8
Svaret i #4 bør virke. Ikke #3'eren ...
Avatar billede tekniskdesigner Nybegynder
21. februar 2011 - 18:39 #9
med #4 kommer den ikke med nogen fejl, men den opdaterer heller ikke feltet
Avatar billede webweaver Praktikant
21. februar 2011 - 18:48 #10
Hvis du gemmer dem som nye variabler først, gør det så en forskel? Et problem med den viste måde, kan nemlig godt give fejl, hvis du har et punktum i din string.

$linkNavn = $_POST['LinkNavn'];
$linkId = $_POST['LinkId'];

mysql_query("UPDATE links SET LinkNavn = '$linkNavn' WHERE LinkID = '$linkId'");
Avatar billede tekniskdesigner Nybegynder
21. februar 2011 - 18:57 #11
Så lykkedes det endelig, tak webweawer for den løsning smider du lige et svar
Avatar billede webweaver Praktikant
21. februar 2011 - 19:03 #12
Det kan du tro :-)
Avatar billede johan.o Nybegynder
21. februar 2011 - 20:01 #13
Du er vist stadig sårbar overfor SQL injection.

mysql_query("UPDATE links SET LinkNavn = '".mysql_real_escape_string($linkNavn)."' WHERE LinkID = '".mysql_real_escape_string($linkId)."'");

Mvh. Johan
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

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