Modul search_index und die neuste CVS Version

Jede Art von Fehler die REDAXO betreffen.

Modul search_index und die neuste CVS Version

Beitragvon PEN » 2. Sep 2005, 16:33

... funktioniert das "Suche Index erneuern" nicht mehr.

Es erscheint immer foglender Fehler:
Code: Alles auswählen
Fatal error: Cannot redeclare clean_text() (previously declared in /home/virtual/site151/fst/home/redaxo/public_html/redaxo/include/classes/class.article.inc.php(147) : eval()'d code:30) in /home/virtual/site151/fst/home/redaxo/public_html/redaxo/include/classes/class.article.inc.php(147) : eval()'d code on line 30




Hier der PHP-Code der den Fehler erzeugen soll:
Code: Alles auswählen
<?php
   
// ============== Form config ==============
// Daten für die Ausgabe der Fehlermeldung,
// Überschrift, Legend, Beschreibung, Feldnamen, "Submit"-Button

   $page_info = "";
   $hack_meldung = "Leider konnten wir deine Anfrage nicht bearbeiten, weil das Formular nicht korrekt ausgefüllt ist. Bitte überprüfe folgendes Eingabefeld:";
   
   //Formular
   $formular_legend = "";
   $formular_info = "";
   $formular_name = "Name";
   $formular_email = "E-Mail";
   $formular_meldung = "Nachricht";
   $submit_value = "absenden";
   $submit_titel = "Zum Absenden bitte nur 1x klicken";
   $reset_value = "zurücksetzen";
   
   // Danke-Seite
   $danke_meldung = "Vielen Dank für deine Nachricht. Sie wurde soeben erfolgreich versendet. Wir werden uns in Kürze bei dir melden.";
   
   // Empfänger E-Mail
   $empfaenger="webmaster@nagl.ch";
   $email_titel="Kontaktformular nagl.ch";
   
// ============== Ende Form config ==============

// Daten aus Form config konvertieren
    function clean_text($value = "")
    {
        $value = htmlentities($value);
        return $value;
   }

   $page_info = clean_text($page_info);
   $hack_meldung = clean_text($hack_meldung);
   $formular_legend = clean_text($formular_legend);
   $formular_name = clean_text($formular_name);
   $formular_email = clean_text($formular_email);
   $formular_meldung = clean_text($formular_meldung);
   $submit_value = clean_text($submit_value);
   $submit_titel = clean_text($submit_titel);
   $danke_meldung = clean_text($danke_meldung);
   
// ============== Formularüberprüfung ==============

function cleanup ($string) {
   // falls magic quotes on
   if (get_magic_quotes_gpc())
   {
       $string = stripslashes($string);
    }
   $string = addslashes($string);
    $string = strip_tags($string);
    // "--","#";";","`","/"   Ausfiltern von SQL-Statements
    $string = str_replace(array("--","- -","#",";","`","/","<",">","{","}","[","]"),array("","","","","","","","","","","",""),$string);
   // - mit Leerzeichen dazwischen (SQL-Kommentare!)
    $string = preg_replace('#-\s+-#i',"",$string);
    return $string;
} // end function cleanup

function checkName ($string) {
// $name am Anfang Buchstabe; keine Zahlen und Nicht-Wortzeichen; dann
// beliebig viele Buchstaben, Bindestriche, Leerzeichen und Punkte
    if (preg_match("/^[^\W\d_]([^\W\d_]|[\-\'\s\.\ä\ö\ü\Ä\Ö\Ü\ß])*$/", stripslashes($string)))
    {
       return true; // OK
   }
   else
   {
       return false; // falsche Eingabe
   }   
} // end function checkName

function checkNumeric ($string) {
// nur Zahlenr
    if (preg_match("/^\d*$/", stripslashes($string)))
    {
       return true; // OK
   }
   else
   {
       return false; // falsche Eingabe
   }   
} // end function checkNumeric

function checkEmail ($string) {
// $email mindestens a@a.aa
    if (($string != "") && (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", stripslashes($string))))
    {
       return true; // OK
   }
   else
   {
       return false; // falsche Eingabe
   }   
} // end function checkEmail

function checkMessage ($string) {
//
    if (preg_match("/^[^\d_]([^\W]|[\-\'\s\"\.\!\?\;\,\:\€\%\(\)\+\=\@\*\ä\ö\ü\Ä\Ö\Ü\ß])*$/", stripslashes($string)))
    {
       return true; // OK
   }
   else
   {
       return false; // falsche Eingabe
   }   
} // end function checkMessage


   $hack = false;  // Bool'sche Variable zeigt an, ob
                    // ein Hackingversuch vorliegt
                       
   // Auslesen und Säubern der Daten aus $_POST
   if (sizeof($_POST) == 0)
   {
        $name = "";
        $email = "";
        $message = "";
        $submit = "";
    }
    else
    {
       $name = $_POST["name"];       
       $email = $_POST["email"];
       $message = $_POST["message"];
       $submit = $_POST["submit"];
       
       $name = cleanup($name);
       $email = cleanup($email);
       $message = cleanup($message);
       $submit = cleanup($submit);
   
       // Verifizieren der Daten

       if (checkName($name)!=1)
      {
         $hack = true; $feld = $formular_name;
      }

      if (checkEmail($email)!=1)
      {
         $hack = true; $feld = $formular_email;
      }

      if (checkMessage($message)!=1)
      {
         $hack = true; $feld = $formular_meldung;
      }
       
   } // end else

// ============== Ende Formularüberprüfung ==============


// beim ersten Aufruf oder unkorrekten Eingaben Formular ausgeben
if (($submit == "") OR (($submit == $submit_value) AND ($hack == true)))
{
   
   // Bei inkorrekten Eingaben eine Fehlermeldung ausgeben:
   if ($hack)
   {
?>
<p><?php echo $hack_meldung; ?></p>
<ul>
<li><?php echo $feld; ?></li>
</ul>
<br>
<?php
   } // end if ($hack)
   else
   {
      if ($page_info != "")
      {
         echo "<p>" . $page_info . "</p>\n";
      }

   } // end else
   
?>

<form class="kontakt" id="kontakt" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
<?php
   if ($formular_info != "")
   {
      echo "<p>" . $formular_info . "</p>\n";
   }
?>
<div>
<div class="label"><label for="name"><?php echo $formular_name; ?></label></div>
<input type="text" id="name" name="name" title="<?php echo $formular_name; ?>" value="<?php echo stripslashes($name); ?>" tabindex="1">
</div>
<div>
<div class="label"><label for="email"><?php echo $formular_email; ?></label></div>
<input type="text" id="email" name="email" title="<?php echo $formular_email; ?>" value="<?php echo stripslashes($email); ?>" tabindex="2">
</div>
<div>
<div class="label"><label for="message"><?php echo $formular_meldung; ?></label></div>
<textarea id="message" name="message" title="<?php echo $formular_meldung; ?>" cols="36" rows="8" tabindex="3"><?php echo stripslashes($message); ?></textarea>
</div>
<div class="buttons">
<br><input type="submit" class="button" name="submit" value="<?php echo $submit_value; ?>" tabindex="4">
<input type="reset" class="button" value="<?php echo $reset_value; ?>" tabindex="5">
</div>
</form>


<?php
} // if (($submit == "") OR (($submit == $submit_value) AND ($hack == true)))

elseif (($submit == $submit_value) AND ($hack == false))
{
   //email abschicken
    $recipient=$empfaenger;
    $subject=$email_titel;
    $header="From: " . $email . "\n";
    $mail_body ="Das Anfrage-Formular wurde am " . date("d.m.Y") . " um " . date("H:i") . "h ausgeführt.\n";
    $mail_body.="Folgende Werte wurden eingetragen:\n\n";
    $mail_body.="Name: " . $name . "\n";
    $mail_body.="E-Mail: " . $email . "\n\n";
    $mail_body.="Nachricht:\n\n";
    $mail_body.=$message . "\n\n ---- Ende der automatisch generierten eMail ----";

    mail($recipient,$subject,$mail_body,$header);
   
   echo "<p>" . $danke_meldung . "</p>\n";

?>



Mit einer früheren Version ging es. Vermute es hat was mit der Umstellung der Classen zu tun, oder liege ich wiedermal falsch?
Übrigens das Formular funktioniert einwandfrei und ohne Fehler. Eben nur kann ich einen neuen Index mehr erstellen.

Gruss
PEN
XP, IE 6
PEN
 
Beiträge: 78
Registriert: 21. Apr 2005, 13:49

Beitragvon Markus.Staab » 2. Sep 2005, 17:20

Hi,

vermute du bindest dieses Modul mehrfach in einen Artikel ein?

Oder ich könnte mir vorstellen, dass du in einem anderen Modul auch eine Funktion hast, die clean_text heisst.

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon PEN » 4. Sep 2005, 11:59

Das Modul wurde nur auf einer Seite verwendet.
clean_text gibt es sonst niergens. Habe den Namen der Funktion auch mal in "gugus" geändert - gleicher Fehler, nur das eben gugus da steht.

PEN
XP, IE 6
PEN
 
Beiträge: 78
Registriert: 21. Apr 2005, 13:49

Beitragvon PEN » 4. Sep 2005, 14:17

Habe die CVS Version in ein neues Verzeichnis heruntergeladen - jetzt gehts wieder. Seltsam :?:

Danke und Gruss
PEN
XP, IE 6
PEN
 
Beiträge: 78
Registriert: 21. Apr 2005, 13:49

-->Mehrsprachigkeit

Beitragvon gemüsebrühe » 24. Jan 2008, 23:48

Diesen Fehler habe ich mit dem gleichen Modul seit heute, undzwar seit der Änderung bzw. Einführung der Mehrsprachigkeit :!:

Wie werde ich den Fehler wieder los?
So clickable, design is lickable.
Code is poetry.
Benutzeravatar
gemüsebrühe
 
Beiträge: 183
Registriert: 14. Feb 2007, 20:31

Beitragvon Markus.Staab » 25. Jan 2008, 09:42

Hi,

einmal hier
http://wiki.redaxo.de/index.php?n=R3.FA ... tredeclare

Ausserdem ist das Addon in der CVS Version für R4 angepasst... Wieso verwendest du nicht das Addon aus dem Downloadbereich?

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon gemüsebrühe » 25. Jan 2008, 14:47

Okay, ich habe mich missverständlich ausgedrückt, ich verwende nicht das Modul aus dem CVS, aber trotzdem das gleiche Modul...

Der Fehler tritt auf, da das Modul logischerweise für mehrere Sprachen doppelt eingebunden werden muss... :?: :?:

Ich muss jedes Modul doch mehrfach einbinden, wenn ich mehrere Sprachen verwende?!

Muss _jede_ Funktion, die dadurch doppelt auftritt, umbenannt werden?
So clickable, design is lickable.
Code is poetry.
Benutzeravatar
gemüsebrühe
 
Beiträge: 183
Registriert: 14. Feb 2007, 20:31

Beitragvon Markus.Staab » 25. Jan 2008, 17:36

Hi,

generell würd ich bei funktionen folgendes machen
http://wiki.redaxo.de/index.php?n=R3.FA ... tredeclare

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany


Zurück zu Bugs [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast