Syntax Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Syntax Problem

    Also, ich bin schon am verzweifeln, die Sache ist die, das ich dabei bin für ein bestimmtes Forensystem etwas zu coden. Dazu muss ich die Datei die die Antwort erstellt bearbeiten...

    Vorher sieht sie so aus:

    PHP-Code:
    <?php
    require("global.php");
    require(
    "_header.php");
    require(
    "rpg_config.php");
    include(
    "posticons.php");


    if(!isset(
    $_POST['action'])) $_POST['action']="";
    if(!isset(
    $_POST['preview'])) $_POST['preview']="";
    if(!isset(
    $_GET['mode'])) $_GET['mode']="";

    $thread_info $db_zugriff->query_first("SELECT * FROM bb".$n."_threads WHERE threadid = '$threadid'");

    if(
    $boardid != $thread_info['boardparentid'])
    {
            eval(
    "dooutput(\"".gettemplate("hack_error")."\");");
            exit;
    }


    if(((
    $thread_info['authorid'] && $thread_info['authorid'] != $user_id && $userdata['canreplytopic']) || ($thread_info['authorid'] && $thread_info['authorid'] == $user_id && $userdata['canreplyowntopic']) || (!$thread_info['authorid'] && $userdata['canreplytopic'])) && check_boardobject($boardid,$user_group,"replypermission"))
    {
            if(
    $_POST['action'] == "send" && (!trim($_POST['message']) || check_posts($_POST['message'])

            )) eval (
    "\$error = \"".gettemplate("newthread_error")."\";");
            if(
    $_POST['action'] == "send" && !$_POST['preview'])
            {
                    if(
    trim($_POST['message']) && !check_posts(trim($_POST['message'])))
                    {
                            if(
    $user_id && !$userdata['avoidfc'] && floodcontrol($user_id))
                            {
                                    require(
    "_board_jump.php");
                                    eval(
    "dooutput(\"".gettemplate("floodcontrol")."\");");
                                    exit;
                            }


    ### -> Hier will ich meinen Code einfügen ###

                            
    $subject trim($_POST['subject']);
                            
    $message trim($_POST['message']);
                            if(
    $_POST['previewed'])
                            {
                                    
    $subject rehtmlspecialchars($subject);
                                    
    $message rehtmlspecialchars($message);
                            }
                            
    $subject addslashes($subject);
                            
    $message addslashes($message);
                            if(isset(
    $_POST['posticon']))
                            {
                                    
    $posticon $_POST['posticon'];
                                    if(!
    in_array($posticon,$posticons)) $posticon="";
                            }
                            else 
    $posticon="";
                            
    $posticon=addslashes($posticon);
                            if(isset(
    $_POST['parseurl'])) $parseurl intval($_POST['parseurl']);
                            else 
    $parseurl=0;
                            if(isset(
    $_POST['email'])) $email addslashes($_POST['email']);
                            else 
    $email=0;
                            if(isset(
    $_POST['disablesmilies'])) $disablesmilies intval($_POST['disablesmilies']);
                            else 
    $disablesmilies=0;
                            if(isset(
    $_POST['signature'])) $signature intval($_POST['signature']);
                            else 
    $signature=0;
                            if(isset(
    $_POST['close'])) $close intval($_POST['close']);
                            else 
    $close=0;

                            
    $result newPost($boardid,$threadid,$user_id,$subject,$message,$posticon,$parseurl,$email,$disablesmilies,$signature,$close);

                            if(
    $result==2)
                            {
                                    eval (
    "\$output = \"".gettemplate("note4")."\";");
                                    
    $ride "thread.php?threadid=$threadid&boardid=$boardid&styleid=$styleid";
                            }
                            if(
    $result==4)
                            {
                                    
    $ride getLastPost($user_id,4);
                                    
    header("Location: $ride");
                                    exit;
                            }
                            eval (
    "\$headinclude = \"".gettemplate("headinclude")."\";");
                            eval(
    "dooutput(\"".gettemplate("action_ride")."\");");
                            exit;
                    }
                    else eval (
    "\$error = \"".gettemplate("newthread_error")."\";");

            }


            if(!isset(
    $error)) $error="";
            if(!isset(
    $preview)) $preview="";
            if(!isset(
    $subject)) $subject="";
            if(!isset(
    $message)) $message="";
            
    $checked=array("","","","","");
            if(
    $ch_parseurl$checked[0] = "CHECKED";
            if(
    $ch_email$checked[1] = "CHECKED";
            if(
    $ch_disablesmilies$checked[2] = "CHECKED";
            if(
    $ch_signature$checked[3] = "CHECKED";
            
    $previewed 0;


            
    /*
            * Vorschau ...
            */

    //Aus Platzgründen entfernt => war allerdings auch irrelevant

            
    $post_result $db_zugriff->query("SELECT bb".$n."_posts.*, bb".$n."_user_table.username FROM bb".$n."_posts LEFT JOIN bb".$n."_user_table USING (userid) WHERE threadparentid='$threadid' ORDER by posttime DESC LIMIT 0,".($eproseite));
            
    $reply_threadview="";
            while(
    $posts $db_zugriff->fetch_array($post_result))
            {
                    unset(
    $posttopic);
                    if(
    $posts['userid']) $authorname $posts['username'];
                    else eval (
    "\$authorname = \"".gettemplate("lg_anonymous")."\";");
                    if(
    $posts['posticon']) $posticon "<img src=\"".$posts['posticon']."\">";
                    else 
    $posticon "&nbsp;";
                    
    $posttopic prepare_topic($posts['posttopic']);
                    
    $post editPost($posts['message'],$posts['disable_smilies']);
                    
    $backcolor rowcolor($j);
                    eval (
    "\$reply_threadview .= \"".gettemplate("reply_threadview")."\";");
                    
    $j++;
            }


            if(
    $user_id) eval ("\$quick_logout = \"".gettemplate("newthread_logout")."\";");
            else 
    $quick_logout "";

            eval(
    "dooutput(\"".gettemplate("reply")."\");");
    }
    else 
    header("LOCATION: misc.php?action=access_error&boardid=$boardid&styleid=$styleid$session");
    ?>
    So funktioniert nun alles, nur will ich an der Stelle wo ich oben "Hier will ich meinen Code einfügen" kommentiert habe, folgendes ausführen:

    PHP-Code:
    if($boardid == $rpgboardparentid){

    //Code

    if($user_id && $user_id != $fight_info['player1'] && $user_id != $fight_info['player2']){
    // Code
    }

    elseif(
    $user_id && $thread_info['replies'] == "0" && $user_id == $fight_info['player2']){
    // Code
    }


    elseif(
    $user_id && $thread_info[replies] > "0" && $user_id == $fight_info[player1]){
    // Code 
    }


    Nur dann erhalte ich 2 Fehlermeldungen:

    Warning: Failed to Connect in c:\programme\easyphp\www\_functions.php on line 1494

    Warning: Cannot add header information - headers already sent by (output started at c:\programme\easyphp\www\_functions.php:1494) in c:\programme\easyphp\www\reply.php on line 190
    Das Problem: Die erste Fehlermeldung bezieht sich auf eine Zeile die rein gar nichts mit dem Reply an sich zu tun hat (dem Newsletter-System des Boards) und die 2te Fehlermeldung bezieht sich auf diesen header():

    PHP-Code:
                            if($result==4)
                            {
                                    
    $ride getLastPost($user_id,4);
                                    
    header("Location: $ride");
                                    exit;
                            } 
    Wenn ich in meinem Code noch ein exit; einfügen würde, dann wär die 2te Fehlermeldung natürlich weg, aber die erste würde bleiben.
    Wenn ich versuche den restlichen Code mit einer else-Case zu umschliessen, dann gibt es einen T_VARIABLE Fehler in dieser else-Zeile:

    PHP-Code:
     }
                    else eval (
    "\$error = \"".gettemplate("newthread_error")."\";");

            } 
    Ich weiss nicht, wie ich meins einbinden kann, ohne das es zu Fehlermeldungen kommt. Falls ich versuche es in die Funktion newPost() in der _functions.php zu integrieren, dann kommt es genauso zu Fehlern...

  • #2
    die 1. fehldermeldung bekommst du nicht wenn du abfragst ob der header schon gesendet wurde
    PHP-Code:
    if(!headers_sent())
        
    header(...); 
    und was macht die _functions.php bei 1494?

    Kommentar


    • #3
      Super, die eine Fehlermeldung wär damit weg...hier der Auszug aus der _functions.php:

      PHP-Code:
      /**
      * @return void
      * @param userid int
      * @param link string
      * @param threadid int
      * @param boardid int
      * @desc Wenn jemand die Email Benachrichtigung zum Thema mit der id threadid aktiviert hat,
      * wird eine Benachrichtigung per email gesendet, dass der benutzer (mit der id userid) einen neuen
      * Beitrag im Thema (mit der Id threadid - im Board mit der id boardid) geschrieben hat.
      * link ist die direkte URL zu diesem Beitrag.
      */
      function sendEmail($userid,$link,$threadid,$boardid) {
              global 
      $boardid$master_email$php_path$db_zugriff$n;
              
      $result $db_zugriff->query("SELECT * FROM bb".$n."_notify WHERE threadid = '$threadid'");
              if(
      $db_zugriff->num_rows($result)) {
                      
      $boardname getBoardname($boardid);
                            
      $threadname getThreadname($threadid);
                            if(
      $userid$authorname getUsername($userid);
                            else eval (
      "\$authorname = \"".gettemplate("lg_anonymous")."\";");
                            eval (
      "\$inhalt = \"".gettemplate("notify_inhalt")."\";");
                      eval (
      "\$betreff = \"".gettemplate("notify_betreff")."\";");
                      while(
      $row $db_zugriff->fetch_array($result)) {
                              if(
      $row['userid']==$userid) continue;
                              
      $email getUserEmail($row['userid']);
                              
      /* Zeile 1494 */ mail($email,$betreff,$inhalt.$row['userid'],"From: ".$master_email);
                      }
              }

      Zeile 1494 ist die wo mit mail() die E-Mail versendet wird...achja, ist doch nicht der Newsletter, hatte es falsch überflogen...es hat tatsächlich was mit dem Reply zu tun, also könnte dort wohl auch der Fehler stecken...

      Kommentar


      • #4
        hmmm dann heist "Failed to Connect" -> konnte keine verbindung zu (lokalen) smtp-server aufbauen

        probies vielleicht mal mit einem anderen smtp
        PHP-Code:
        ini_set('smtp''smtpserver'); 
        gmx (mail.gmx.net) ist glaube ich ohne auth?

        Kommentar


        • #5
          glaub ich eher nicht, da mail.gmx.net bis gestern bei ordb.org gelistet war und jetzt nicht mehr

          http://www.ordb.org/lookup/?host=mail.gmx.net
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Das mit meinem lokalem smtp-Server könnte durchaus stimmen, bin da von alleine noch gar nicht drauf gekommen.
            Aber da ich die mail()-Funktion auf meinem Lokalhost eh nicht benötige habe ich erstmal die betreffende Zeile als Kommentar gekennzeichnet und jetzt kommt zumindestens keine Fehlermeldung mehr beim posten
            Und wenn ich es online testen würde, dann würde die Fehlermeldung ja wahrscheinlich eh gar nicht erscheinen, da dort der ja zum smtp-Server connectet werden kann. War also nur ein Problem, was lokal bedingt war...wenn ich das gewusst hätte.
            Auf jeden Fall vielen Dank für die gute und schnelle Hilfe, ich werd jetzt wohl mit meinen Arbeiten fortfahren können

            Kommentar


            • #7
              dann würd ich's aber nich auskommentieren, sondern ein @mail aus dem mail machen

              damit unterdrückst du die fehlermeldung und du kriegst weder lokal noch online ne fehlermeldung und online werden deine mails verschickt
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                Jetzt weiss ich auch, warum man beim WBB das ob_start(); mit einem "@" versehen sollte, falls man dort eine Fehlermeldung bekommt...
                Thx, ist wohl sogar die bessere Lösung

                Kommentar

                Lädt...
                X