Avatar billede hoppe11 Nybegynder
30. marts 2009 - 10:11 Der er 13 kommentarer og
1 løsning

stripslashes

hej

jeg vil gerne lave en funktion der strip'er slashes, men kun hvis der altså er lavet en addslashes i forvejen.. synes ikke det her virker i alle tilfælde!?

måske også der findes en meget bedre løsning på det?

function str_stripslashes($str)
{
    $ref = $str;
    $count = 0;
    $strip = 0;
   
    $arr = array(
        '\'' => '\\\'',
        '"' => '\"',
        '\\' => '\\\\'
        );
   
    foreach($arr as $key => $value)
    {
        if($count = substr_count($ref, $value))
        {
            if($count == substr_count($ref, $key))
            {
                $ref = str_replace($value, '', $ref);
                $strip = 1;
            }
            else $strip = 0;
        }
    }
   
    return $strip ? stripslashes($str):$str;
}
Avatar billede olebole Juniormester
30. marts 2009 - 11:26 #1
<ole>

Jeg ved ikke i vilken forbindelse, du ønsker at bruge det i, men er det forbindelse med data fra MySQL, bør du overveje at migrere til MySQLI (I for improved) og prepared statements:
    http://dk2.php.net/manual/en/book.mysqli.php

- se evt. eksemplet under:
    http://dk2.php.net/manual/en/mysqli-stmt.prepare.php

Derved slipper du helt for at tænke på SQL-injections. Det har gjort mit liv væsentligt lettere  ;o)

/mvh
</bole>
Avatar billede hoppe11 Nybegynder
30. marts 2009 - 12:26 #2
nej, det er ikke kun i forbindelse med MySQL, men også hvis jeg f.eks. modtager variabler fra _GET eller _POST...

så synes jeg det er lettest bare altid at køre strings igennem funktionen som det første
Avatar billede hoppe11 Nybegynder
30. marts 2009 - 12:27 #3
- før jeg foretager yderligere behandling af stringen :)
Avatar billede olebole Juniormester
30. marts 2009 - 12:37 #4
Hvordan kan det være, du har behov for det?
Avatar billede hoppe11 Nybegynder
30. marts 2009 - 13:30 #5
det er svært at forklare.. jeg bruger aldrig stripslashes() direkte, men altid min egen.. i nogle tilfælde er der slashes der skal strippes og andre gange er der ikke.. så derfor jeg tjekker for det først
Avatar billede olebole Juniormester
30. marts 2009 - 14:18 #6
Hvorfor er der slashes, der skal strippes?
Avatar billede hoppe11 Nybegynder
30. marts 2009 - 16:37 #7
fordi variablen evt. kan komme fra _GET eller _POST
Avatar billede olebole Juniormester
30. marts 2009 - 16:47 #8
Jamen, jeg forstår ikke, hvorfor det skulle være nødvendigt at bruge stripslashes. Hvad er det for slashes, du må fjerne ... og hvordan opstår de?
Avatar billede hoppe11 Nybegynder
30. marts 2009 - 17:00 #9
der bliver jo lavet addslashes efter en variabel er blevet sendt med post eller get? det sker i hvert fald her hos mig
Avatar billede olebole Juniormester
30. marts 2009 - 17:11 #10
Hvor? Prøv:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<?php
var_dump($_POST);
?>

<form action="" method="post">
<input type="text" name="gnu" value="Ole's eksempel">
<button type="submit">Send</button>
</form>

</body>
</html>
Avatar billede hoppe11 Nybegynder
30. marts 2009 - 18:12 #11
' bliver escaped... => \'

men det er bare lidt sent at ændre på nu.. er bare ved at lave en mindre opdatering til siden :)

vil næsten tro det er noget på apache/php serveren

kan du hjælpe med mit script? :)
Avatar billede fixxxer Nybegynder
31. marts 2009 - 11:36 #12
Avatar billede hoppe11 Nybegynder
13. juli 2009 - 00:54 #13
smid et svar ole
Avatar billede hoppe11 Nybegynder
18. juli 2009 - 23:42 #14
lukker
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