Avatar billede oldschool Nybegynder
16. august 2006 - 10:19 Der er 5 kommentarer og
1 løsning

Indsætter uønskede tegn foran links ved update i sql

For et par uger siden fik jeg dette script http://www.eksperten.dk/spm/723407 til at fungere ved stor hjælp fra jacobdo ... Men nu har jeg opdaget at når jeg er inde og rette i mine news tilføjer mit script \\\ forann " i mine links.

Så hvis jeg fx har haft linjen
<a href="http://www.eksperten.dk">LINK</a>
bliver den opdateret til
<a href=\\\"http://www.eksperten.dk\\\">LINK</a>'

Der må findes en eller anden kodestump man kan indsætte for at undgå dette?

Php filen som tager sig af opdateringen:


<?php

include 'db.inc.php';

switch($_GET['go'])
{
    //DELETE
    case 'delete':
        $id = intval($_GET['id']);
        @mysql_query("DELETE FROM news_table WHERE id='$id'");
        if(mysql_affected_rows()==0)
        {
            echo '<p><h3>Deleted</h3></p>';
        }
        else
        {
            echo '<p>Could not delete, sorry<br />Error: ' . mysql_error() . '</p>';
        }
        break;

    //EDIT
    case 'edit':
        if (isset($_POST['text']))
        {
            $text = mysql_real_escape_string($_POST['text']);
            $id = intval($_POST['id']);
      @mysql_query("UPDATE news_table SET text='$text' WHERE id='$id'");
      if(mysql_affected_rows()==0)
      {
        echo '<p>News updatet</p>';
      }
      else
      {
        echo '<p>Sorry, could not update news: ' . mysql_error() . '</p>';
      }
    }
    else
    {
            $id = intval($_GET['id']);
            $link = @mysql_query("SELECT text FROM news_table WHERE id='$id'");
            if(mysql_num_rows($link)!=1)
      {
        exit('<p>Error fetching news details: ' . mysql_error() . '</p>');
      }

            $link = mysql_fetch_array($link);

            $text = $link['text'];
        }

    echo '<form action="' . $_SERVER['PHP_SELF'] . '?go=edit" method="post">';
    echo '<textarea name="text" cols="70" rows="10">' . $text . '</textarea>';
    echo '</label><br />';
    echo '<input type="hidden" name="id" value="' . $id . '" />';
    echo '<input type="submit" value="SUBMIT" /></p>';
    echo '</form>';

    break;

    default:
        echo 'ERROR, sorry';
        break;
}

?>
Avatar billede expnet Seniormester
16. august 2006 - 10:30 #1
prøv at fjene denne ved opret funktion

mysql_real_escape_string()
Avatar billede flashbordon Nybegynder
16. august 2006 - 10:39 #2
eller prøv
$text = stripslashes($link['text']);
når du henter teksten igen
Avatar billede oldschool Nybegynder
16. august 2006 - 10:50 #3
Expnet - det gør i dette tilfælde ingen umiddelbar mærkbar forskel...

Flashbordon - det ser ud til at fungere, thanks! Smid et svar...

-Men er der ikke en måde man kan undgå at de tegn overhovedet bliver skrevet?
Avatar billede jakobdo Ekspert
16. august 2006 - 11:06 #4
Tegnet bliver skrevet fordi du bruger mysql_real_escape_string().
Den bør du bruge, det er bedre sikkerhed.
Du skal så bare huske at bruge stripslashes() når du trækker data ud.
Avatar billede flashbordon Nybegynder
16. august 2006 - 11:09 #5
svar
Avatar billede oldschool Nybegynder
16. august 2006 - 11:15 #6
Ahh ok, det vil jeg holde mig til så!

Mange tak:o)
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