Headline-Blöcke Probleme mit Anführungszeichen

Begonnen von henne, 02 April 2003, 15:42:36

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

henne

Hi ich mal wieder,

habe zwei Headline-Blöcke die aus rdf dateien erstellt werden auf meiner
Seite. Nun das Problem: immer wenn in der Überschrift für ne Url ein Anführungszeichen vorkommt zerschießt es mir den Block total.(you have a error near... die stelle wo die Anführungszeichen sind)
Hat jemand ne Idee wie man das ändern kann.

Ciao Henne

[Editiert am 2/4/2003 von henne]
bye Henne

don't click the blue "e" on your desktop, use Firefox

Jeden Tag verschwinden Rentner im Internet, weil sie gleichzeitig alt und entfernen drücken

jubilee

Hallo !
Ich denke, die Anführungszeichen müssen maskiert werden ( voranstellen eines / ). Wenns nicht anders geht, musst du den Betreffenden Text vorher parsen oder mit der Funktion addslashes bearbeiten
---> $textNeu = addslashes($zuBearbeitenderText) <---
Das könnte dann vielleicht funktionieren.
MfG
jubilee

[Editiert am 2/4/2003 von SiteAdmin jubilee]

henne

Hi Jubilee,

also so sieht der Code aus mit der die headlines erstellt werden(ist aus der mainfile.php)
er holt sich ja die Überschriften z.B. von heise aus ner rdf datei, die Anführungszeichen kommen also schon automatisch mit wo könnte ich jetzt die funktion addslashes einfügen damit das Problem verschwindet.

 function headlines($bid, $cenbox=0) {
    global $prefix, $dbi, $admin;
$cont = 0;
    $result = sql_query("select title, content, url, refresh, time from ".$prefix."_blocks where bid='$bid'", $dbi);
    list($title, $content, $url, $refresh, $otime) = sql_fetch_row($result, $dbi);
    $past = time()-$refresh;
    if ($otime < $past) {
$btime = time();
$rdf = parse_url($url);
$fp = fsockopen($rdf['host'], 80, $errno, $errstr, 15);
if (!$fp) {
   $content = "";
   $result = sql_query("update ".$prefix."_blocks set content='$content', time='$btime' where bid='$bid'", $dbi);
   $cont = 0;
   if ($cenbox == 0) {
themesidebox($title, $content);
   } else {
themecenterbox($title, $content);
   }
   return;
}
if ($fp) {
   if (empty($rdf['query'])){
fputs($fp, "GET " . $rdf['path'] . " HTTP/1.0\r\n");
}
else {
fputs($fp, "GET " . $rdf['path'] . "?" . $rdf['query'] . " HTTP/1.0\r\n");
}
   
fputs($fp, "HOST: " . $rdf['host'] . "\r\n\r\n");
   $string = "";
   while(!feof($fp)) {
    $pagetext = fgets($fp,300);
    $string .= chop($pagetext);
   }
   fputs($fp,"Connection: close\r\n\r\n");
   fclose($fp);
   $items = explode("</item>",$string);
   $content = "<font class=\"content\">";
   for ($i=0;$i<10;$i++) {
$link = ereg_replace(".*<link>","",$items[$i]);
$link = ereg_replace("</link>.*","",$link);
$title2 = ereg_replace(".*<title>","",$items[$i]);
$title2 = ereg_replace("</title>.*","",$title2);
if ($items[$i] == "") {
   $content = "";
   sql_query("update ".$prefix."_blocks set content='$content', time='$btime' where bid='$bid'", $dbi);
   $cont = 0;
   if ($cenbox == 0) {
themesidebox($title, $content);
   } else {
themecenterbox($title, $content);
   }
   return;
} else {
   if (strcmp($link,$title)) {
$cont = 1;
               $content .= "<tr><td valign=\"top\"><img src=dot.gif> </td><td  valign=\"top\"><a href=\"$link\" target=\"new\">$title2</a><br></tr></td>\n";



   }
}
   }

}
sql_query("update ".$prefix."_blocks set content='$content', time='$btime' where bid='$bid'", $dbi);
    }
    $siteurl = ereg_replace("http://","",$url);
    $siteurl = explode("/",$siteurl);
    if (($cont == 1) OR ($content != "")) {
$content .= "<br><a href=\"http://$siteurl[0]\" target=\"blank\"><b>"._HREADMORE."</b></a></font>";
    } elseif (($cont == 0) OR ($content == "")) {
if(is_admin($admin)){ #by ae u. Joschau
$content = "<font class=\"content\">"._RSSPROBLEM."</font>";
}
else{
return;
}
    }
    if ($cenbox == 0) {
themesidebox($title, $content);
    } else {
themecenterbox($title, $content);
    }
}  

Ciao Henne :cry
bye Henne

don't click the blue "e" on your desktop, use Firefox

Jeden Tag verschwinden Rentner im Internet, weil sie gleichzeitig alt und entfernen drücken

jubilee

Hallo !
Ich würde hier einmal ansetzen.
 
Zitat< /font>$pagetext = fgets($fp,300);
              < /font>$string .= chop($pagetext);
und das versuchsweise einmal so abändern :
 
Zitat< /font>$pagetext = fgets($fp,300);
            < /font>$string .= chop($pagetext);
               $string=addslashes($string);
 
Keine Ahnung ob das klappt. Versuchs einfach einmal und gib mir Rückmeldung.
MfG
jubilee

henne

Hi Jubilee,

danke ich probiers gleich mal aus und meld mich dann wieder.

Ciao Henne
bye Henne

don't click the blue "e" on your desktop, use Firefox

Jeden Tag verschwinden Rentner im Internet, weil sie gleichzeitig alt und entfernen drücken

henne

Hu Jubilee,

also danke erst mal das mit den Anführungszeichen klappt jetzt aber dieses Zeichen ( ' ) schmeißt immer noch alles durcheinander.
Vieleicht haste ja noch ne Idee.

Ciao und danke Henne
bye Henne

don't click the blue "e" on your desktop, use Firefox

Jeden Tag verschwinden Rentner im Internet, weil sie gleichzeitig alt und entfernen drücken

jubilee

Hmmmm ...
Das muss ich nicht verstehen.
Auch das einfache Anführungszeichen (Hochkomma) sollte
von dem addslashes () auch maskiert werden.
Schick mir das doch bitte einmal zu. Da muss man wohl mal genauer drauf schauen.
MfG
jubilee

henne

Hi Jubilee,

das ging ja wieder fix. Brauch ich nicht schicken ist in jeder Nuke Version vorhanden auch beim VKP Maxi in der Mainfile.php >> funktion headlines

hab mich auch zu früh gefreut Fehler trat doch wieder auf ein bißchen genauer kann ich ihn jetzt eingrenzen.
Immer wenn in der ersten headline ein (") oder (') vorkommt und in den anderen headlines nocheimal das Zeichen vorkommt tritt es auf in der zweiten oder dritten u.s.w. werden die besagten Zeichen anstandslos angezeigt.

Hier mal die genauen Fehlermeldungen:

', time='1049450130' where bid='547'
description: You have an error in your SQL syntax near 'em-Up Ikaruga ab Mai auch in Europa

error in sql-statement: mysql_query, err-no: 1064
qry: update nuke_blocks set content='

kannst es Dir jetzt auch life ansehen auf meiner Seite lasse den Fehler mal ne Stunde stehen. Kannst Dich ja per PM melden ob Du jetz mal auf meiner Site schauen kannst dann kann ich den Fehler schneller wieder wegmachen.


Ciao Henne

[Editiert am 4/4/2003 von henne]
bye Henne

don't click the blue "e" on your desktop, use Firefox

Jeden Tag verschwinden Rentner im Internet, weil sie gleichzeitig alt und entfernen drücken

jubilee

Ja ,kannst abschalten. Ich habs gesehen.
Du willst diese Funktion also in einen Block packen....
Ich schau mir das einmal in Ruhe an. er interpretiert auf jeden Fall das was die query's zurückgeben falsch.
Ich schau mal.
Geb Dir wieder bescheid.
MfG
jubilee

henne

bye Henne

don't click the blue "e" on your desktop, use Firefox

Jeden Tag verschwinden Rentner im Internet, weil sie gleichzeitig alt und entfernen drücken

jubilee

So !
Nimm mal diesen Quellcode für den Block (ist fertig, brauchst Du nur unter
block-RDF.php speichern.
 
Zitat<?php
if (eregi("block-RDF.php", $PHP_SELF)) {
    Header("Location: index.php");
    die();
}
$rdfsource = "http://www.heise.de/newsticker/heise.rdf";

$content = "<center><b>HEISE NEWS</center></b><br><br>\n\n";
$data = implode ("", file ($rdfsource));
      preg_match_all("|<item>(.*)</item>|Uism",$data, $items, PREG_PATTERN_ORDER);
      for ($i=0;$i<count($items[1]);$i++)
      {
        preg_match_all("|<title>(.*)</title>(.*)<link>(.*)</link>|Uism",$items[1][$i], $regs, PREG_PATTERN_ORDER);
        $content = $content . "<a href=\"".$regs[3][0]."\" target='_blank'>".$regs[1][0]."</a><br><br>\n\n";
      }
      $content = $content . "<a href=\"http://www.heise.de\" target='_blank' >mehr ...</a><br><br>\n\n";
      
?>
Der funktioniert so.
Anhand dessen kannst Du dir weitere Modifikationen überlegen.
MfG
jubilee

henne

Hi Jubilee,

ich danke Dir werde es gleich morgen probieren.
ich da nuß ich mal ne Spende rüberwachsen lasse ;o)

Ciao Henne
bye Henne

don't click the blue "e" on your desktop, use Firefox

Jeden Tag verschwinden Rentner im Internet, weil sie gleichzeitig alt und entfernen drücken