Gå til innhold

Problemer med edit script


Anbefalte innlegg

Videoannonse
Annonse

Jeg antok ihvertfall at du skulle kjøre en update funksjon i mysql?

Poenget er at du skal escape variabler og tekst før du setter de inn i en spørring. Slik at du ikke kan kjøre en såkalt "SQL-injection". Som jeg igjen antar at er grunnen til at update-spørringen ikke virker skikkelig.

Lenke til kommentar

Takker for at du tar deg tid til å hjelpe, er som du sikkert skjønner rimelig fersk på dette ;)

 

Her er hele koden slik den er nå :

 

Først har jeg en side med en liste over alle nyhetene, og trykker jeg på en av disse komer jeg til en side som henter opp innholdet i databasen og setter det inn i et skjema slik at det kan endres. Det er her jeg har problemer med at strengen kuttes ved ".

 

Denne siden ser slik ut:

 

<?php

include 'felles/config.php';
include 'felles/opendb.php';

$result = mysql_query("SELECT * FROM nyheter WHERE ID='{$_GET['ID']}'");


while($myrow = mysql_fetch_assoc($result))
{
?>                
<form action ="nyhet_oppdater.php" method = "post">
<table>

<tr>
 <td>OVERSKRIFT</td>
 <td><input type ="text" name = "overskrift" value="<? echo $myrow['overskrift']; ?>" </td>
</tr>

<tr>
 <td>INTRO</td>
 <td><input type ="text" name = "intro" value="<? echo $myrow['intro']; ?>" </td>
</tr>

<tr>
 <td>ARTIKKEL</td>
 <td><TEXTAREA NAME="tekst" ROWS=10 COLS=30><? echo $myrow["tekst"] ?></TEXTAREA>
 </td>
</tr>


<tr>
 <td>FORFATTER</td>
 <td><input type ="text" name = "forfatter" value="<? echo $myrow['forfatter']; ?>" </td>
</tr>



<tr>
 <td><input type="submit" value="OPPDATER"></td><td>
 <input type = "reset" value="SLETT INNHOLD"></td>
</tr>

</table>
</form>
<?

 

Og nyheter_oppdater.php ser ut som dette :

 

<?php

include 'felles/config.php';
include 'felles/opendb.php';


$result = mysql_query("SELECT * FROM nyheter WHERE ID = '{$_GET['ID']}'");

$result = "UPDATE nyheter SET overskrift = '$overskrift', intro = '$intro', tekst = '$tekst', forfatter = '$forfatter' WHERE id = '$ID'";
   
mysql_query($result) or die('Error : ' . mysql_error());

   	echo "Article '$overskrift' saved";



                    echo "<b>OPPDATERT<br>DU blir nå sendt tilbake til nyhets listen";

                    //header("location: admin.php");

                    echo "<meta http-equiv=Refresh content=4;url=nyhet_liste.php>";

?>

 

Og som du sikkert kan se så fungerer ikke dette, dvs. ingen endringer blir gjort selv om scriptet kjøres... :hmm:

Lenke til kommentar

Dette skyldes vel mest sannsynlig at register_globals er skrudd av.

Slik at du må bruke $_POST['overskrift'] isteden for $overskrift.

Gode kodevaner gjør at du bruker dette enten det virker uten, eller ikke.

For å omgå problemet kan du bruke extract($_POST); men det er ikke anbefalt.

 

edit: omgås med extract(), løses med å bruke $_POST på samme måte som du har brukt $_GET

Endret av LoS
Lenke til kommentar

:blush: Ja noen ganger ser man ikke skogen for bare trær.. Var det at jeg ikke sendte ID'en som var galt, nå fungerer scriptet, men jeg har ikke fått til det med å se " tegnet i teksten jeg vil endre. all teksten fra og med dette tegnet kommer ikke med. Hvilken syntax skal jeg bruke for å få til dette, noen som kan hjelpe ?

 

Jeg prøver med

$result = mysql_query("SELECT * FROM nyheter WHERE ID='{$_GET['ID']}'",
          mysql_real_escape_string($myrow["intro"]),
          mysql_real_escape_string($myrow["bilde"])

 

Men da blir bare siden blank når jeg trykker oppdater og ingenting skjer.

 

Takker for GOD hjelp så langt :)

Endret av WebKnight
Lenke til kommentar

Du blander bruken av sprintf-eksempelet med en vanlig mysql_query fra manualen. Se her for bedre eksempel på hvordan du kan bruke den på en måte som fungerer.

Denne gjør omtrent det samme som mysql_real_escape_string, men grunnen til at man ikke skal bruke det er denne notisen fra php.net

Note:  This function has been deprecated since PHP 4.3.0. Do not use this function. Use mysql_real_escape_string()  instead.

 

edit: det er ikke nødvendig å bruke hverken printf eller sprintf, til dette.

Endret av LoS
Lenke til kommentar
ikke helt sikker på om det vil ha noe å si, men prøv:

 

$myrow['bilde'] istedet for $myrow["bilde"]

Liten leif fra meg det der, forsøkte med ' istedenfor, men det hjalp ikke.

 

Det jeg sliter med er altså:

I tabellen har jeg f.eks teksten - han sa "Dette funker ikke"

 

Når jeg så skal laste dette inn i form'en hvor dette skal endres så forsvinner teksten f.o.m den første ".

Lenke til kommentar
hm hvordan ser insert queryen din ut? bruker du mysql_real_escape_string på variablene du setter inn der.

Sent i seng, eller tidlig oppe :)

 

Insert går greit, så jeg bruker ikke noe der. Problemet oppstår som sagt når jeg laster verdiene inn i et form for å redigere.

 

Skal teste din løsning LoS når jeg kommer meg hjem!

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...