Avatar billede cmau Nybegynder
20. oktober 2005 - 11:49 Der er 14 kommentarer og
2 løsninger

smid \ foran alle 'er i teksten

Hejsa

jeg har lavet en lille søgemaskine, men hvis der kommer en beskrivelse med ' ind, så fucker den, hvordan kan jeg så lige hurtigt smide \ foran? strengen hedder $tags[description].

Og som sidste spg, findes der flere tegn, som kan få min inset her til at fucke?

mysql_query("INSERT INTO search_data (time,url,title,description,keywords) VALUES ('$time','$url','$tags[title]','$tags[description]','$tags[keywords]')") or die(mysql_error());
Avatar billede bromer Nybegynder
20. oktober 2005 - 11:52 #1
se på addslashes?
Avatar billede dmdisco Nybegynder
20. oktober 2005 - 11:52 #2
addslashes($tags);
Avatar billede cmau Nybegynder
20. oktober 2005 - 11:53 #3
hmm kan i fortælle hvad den funktio gør?
Avatar billede cmau Nybegynder
20. oktober 2005 - 11:53 #4
det skal være sådan at når den bliver udskrevet igen skal der ikke være \'er foran '
Avatar billede dmdisco Nybegynder
20. oktober 2005 - 11:53 #5
eller mysql_escape_string()
Avatar billede dmdisco Nybegynder
20. oktober 2005 - 11:54 #6
stripslashes()
Avatar billede dmdisco Nybegynder
20. oktober 2005 - 11:54 #7
først tilføjer du med addslashes() og når du hiver dem ud igen bruger du stripslashes()
Avatar billede cmau Nybegynder
20. oktober 2005 - 11:55 #8
evt forklar dem, så jeg forstår det.
Avatar billede bromer Nybegynder
20. oktober 2005 - 11:55 #9
cmau: Som noget helt andet ville jeg anbefale at du benyttede et abstraktionslag så du ikke bruge mysql_ funktionerne direkte. Selve bruger jeg PEARS DB klasse [1].

Hvis man benytter den sammen med placeholders kunne du lave din query som

$db->query("INERT INTO search_data (time,url,description,keywords) VALUES (?,?,?,?,?)",array(($time,$url,$tags[title],$tags[description],$tags[keywords])));

Så klarer den den slags problemer for dig.


[1] http://pear.php.net/DB
Avatar billede cmau Nybegynder
20. oktober 2005 - 11:59 #10
Forstår intet af den der linje:
$db->query("INERT INTO search_data (time,url,description,keywords) VALUES (?,?,?,?,?)",array(($time,$url,$tags[title],$tags[description],$tags[keywords])));

Jojo self "INERT INTO search_data (time,url,description,keywords) VALUES " men resten med de der spørgsmåltegn, $db->query og et array i en query giver ingen mening for mig.
Avatar billede bromer Nybegynder
20. oktober 2005 - 12:24 #11
Det var bare et eksempel på hvordan det blev gjort hvis du benyttede PEAR. Ikke hvordan du skal løse dit nuværende problem, hvilket du gør som følger:

Når du skal smide tekster ind i databasen kører du først dine data igennem addslashes().

Når du henter en værdi du som er blevet indsat et sted hvor den blev kørt igennem addslashes skal du først lige køre den igennem stripslashes(). Så er du kørerende.
Avatar billede cmau Nybegynder
20. oktober 2005 - 12:31 #12
Her er fejlene, når jeg prøver http://localhost/search/add.php?url=http://gratisting.dk:

Notice: Use of undefined constant description - assumed 'description' in c:\programmer\php\www\search\add.php on line 16

Notice: Use of undefined constant keywords - assumed 'keywords' in c:\programmer\php\www\search\add.php on line 17
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '://gratisting.dk,http://gratisting.dk,Bestil vareprøver, musik c

Her er min kode:

<?
include('sql.php');

if(isset($_GET['url']))
{
  $url = $_GET['url'];
  $tags = get_meta_tags($url);
  $time = time();

  if(empty($tags['description']) || empty($tags['keywords']))
  {
      echo "Der mangler metatags på siden! Læs mere om metatags på http://www.metamaten.dk/";
  }
  else if(empty($tags['title']))
  {
      $description = addslashes($tags[description]);
      $keywords = addslashes($tags[keywords]);
      mysql_query("INSERT INTO search_data (time,url,title,description,keywords) VALUES ($time,$url,$url,$description,$keywords)") or die(mysql_error());
      echo "Linket blev smidt ind i databasen og kan nu findes på forsiden (Søgesiden).";
  }
  else
  {
      $description = addslashes($tags[description]);
      $keywords = addslashes($tags[keywords]);
      mysql_query("INSERT INTO search_data (time,url,title,description,keywords) VALUES ($time,$url,$tags[title],$description,$keywords)") or die(mysql_error());
      echo "Linket blev smidt ind i databasen og kan nu findes på forsiden (Søgesiden).";
  }
}
?>
Avatar billede cmau Nybegynder
20. oktober 2005 - 13:44 #13
?
Avatar billede cmau Nybegynder
24. oktober 2005 - 16:42 #14
help me..
Avatar billede bromer Nybegynder
24. oktober 2005 - 16:45 #15
Du kan ikke give jo et link til localhost. Det kan vi jo ikke se.
Avatar billede cmau Nybegynder
10. november 2005 - 22:41 #16
Fandt ud af noget, tak for hjælpen.
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