charly: Fatal error: Function name must be a string in

Guten Abend ,

ich habe folgenden fehler wenn ich mich einlogen möchte Fatal error: Function name must be a string in /users/phpbb3forum/www/login.php on line 20> hier mal der Script vielleicht könnt ihr mir da helfen wo ich was ändern muß

~~~<? include("common.php"); if( $_POST['username'] && $_POST['password'] ){ $failed = 1; $username = $_POST['username']; $password = $_POST['password']; $query = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = mysql_query($query) or die ("Error in query: $query. " . mysql_error()); if ( ($result) && (mysql_num_rows($result) > 0) ){ $row = mysql_fetch_object($result); $adlogin = $row->username; $myname = $row->username; $adpassword = $row->password; $myuid = $row->uid; if ( ($username != $adlogin) || ($password != $adpassword) ){ $failed = 1; }else{ $failed = 0; $loggedin = 1; $_session_register("loggedin"); $_session_register("myuid"); $_session_register("myname"); } }else{ $failed = 1; } } if($loggedin){ ob_start(); header("Location: account.php"); } include("header.php"); ?><div style="float:left;"><img src="login.gif"></div><br /><strong>Einloggen :</strong><br /><br /> Hier gelangst Du in Dein Benutzer Zentrum.<br/ ><br />Du kannst Dein Forum verwalten und administrieren und zb Beiträge löschen usw. <br /> <br /><br /><br /><br /><form action="login.php" method="POST"> <input type="hidden" name="action" value="login"><font face="arial" size="2"><b>Username</b><br /> <input type=text name=username size=30 tabindex="1" maxlength="12"> </font><br> <font face="arial" size="2"><br> <b>Passwort</b><br> <input type=password name=password size=30 maxlength="12"> </font><br> <br> <font face="arial" size="2"><input type="submit" name="" value="Login"> <br><br> </font> <font face="arial" size="2"><b><a href="mailto:<?=$adminemail?>?subject=<?=$sitename?>/Password"><b>Passwort vergessen?</b></a><br /></font> <font face="arial" size="2"><b><a href="anmelden.php"><b>Neu anmelden!</b></a></font> </form> <? include("footer.php"); ?> code text here ~~~

  1. Hallo,

    ich habe folgenden fehler wenn ich mich einlogen möchte

    du hast vor allem ein erhebliches Problem beim Schreiben von Postings hier im Forum.

    Fatal error: Function name must be a string in /users/phpbb3forum/www/login.php on line 20

    Wenn man nun erkennen könnte, wo Zeile 20 ist ...

    hier mal der Script vielleicht könnt ihr mir da helfen wo ich was ändern muß

    Erstens heißt es das Script; zweitens weiß ich nicht, wie du es schaffst, den Code im Posting derart zu verstümmeln, dass jegliche Zeilenumbrüche verschwinden. Das ist so konfus, dass ich mir nicht einmal die Mühe antun möchte, diese Code-Wurst in Ordnung zu bringen.

    Bitte sorge dafür, dass dein Code lesbar formatiert ist, wenn du wirklich Hilfe erwartest.

    So long,
     Martin

    1. [Vollzitat]

      Bitte sorge dafür, dass dein Code lesbar formatiert ist, wenn du wirklich Hilfe erwartest.

      würde ich gern aber wo finde ich hier das ich hier php-code einfügen kann?

      Folgende Nachrichten verweisen auf diesen Beitrag:

      1. Hallo,

        </>-Taste drücken, Sprache eingeben und dann den Quelltest bei „code text here“ einfügen, oder Quelltest markieren und dann auf „</>“ klicken:

        <php><? include("common.php"); if( $_POST['username'] && $_POST['password'] ){ $failed = 1; $username = $_POST['username']; $password = $_POST['password']; $query = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = mysql_query($query) or die ("Error in query: $query. " . mysql_error()); if ( ($result) && (mysql_num_rows($result) > 0) ){ $row = mysql_fetch_object($result); $adlogin = $row->username; $myname = $row->username; $adpassword = $row->password; $myuid = $row->uid; if ( ($username != $adlogin) || ($password != $adpassword) ){ $failed = 1; }else{ $failed = 0; $loggedin = 1; $_session_register("loggedin"); $_session_register("myuid"); $_session_register("myname"); } }else{ $failed = 1; } } if($loggedin){ ob_start(); header("Location: account.php"); } include("header.php"); ?><div style="float:left;"><img src="login.gif"></div><br /><strong>Einloggen :</strong><br <br /> Hier gelangst Du in Dein Benutzer Zentrum.<br/ ><br />Du kannst Dein Forum verwalten und administrieren und zb Beiträge löschen usw. <br /> <br /><br /><br /><br /><form action="login.php" method="POST"> <input type="hidden" name="action" value="login"><font face="arial" size="2"><b>Username</b><br /> <input type=text name=username size=30 tabindex="1" maxlength="12"> </font><br> <font face="arial" size="2"><br> <b>Passwort</b><br> <input type=password name=password size=30 maxlength="12"> </font><br> <br> <font face="arial" size="2"><input type="submit" name="" value="Login"> <br><br> </font> <font face="arial" size="2"><b><a href="mailto:<?=$adminemail?>?subject=<?=$sitename?>/Password"><b>Passwort vergessen?</b></a><br /></font> <font face="arial" size="2"><b><a href="anmelden.php"><b>Neu anmelden!</b></a></font> </form> <? include("footer.php"); ?></php>

        Gruß Jürgen

        1. Lieber JürgenB,

          $username = $_POST['username']; $password = $_POST['password']; $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";

          so schön sieht man SQL-Injection-Lücken selten präsentiert. Nicht nur werden hier die User-Eingaben "umbenannt", sie werden auch ungefiltert für eine SQL-Abfrage genutzt. Das Umbenennen verschleiert diesen Umstand, was die Sache noch gefährlicher macht. Hier wäre es besser zu sehen (ohne Umbenennen):

          $query = "SELECT * FROM users WHERE username='".$_POST['username']."' AND password='".$_POST['password']."'";

          Wie immer: Kontext beachten! Sonst ist die Schule wieder auf Bobbys Mutter sauer.

          Liebe Grüße,

          Felix Riesterer.

          Folgende Nachrichten verweisen auf diesen Beitrag:

    2. Hallo

      Fatal error: Function name must be a string in /users/phpbb3forum/www/login.php on line 20

      Wenn man nun erkennen könnte, wo Zeile 20 ist ...

      hier mal der Script vielleicht könnt ihr mir da helfen wo ich was ändern muß

      … weiß ich nicht, wie du es schaffst, den Code im Posting derart zu verstümmeln, dass jegliche Zeilenumbrüche verschwinden.

      Ich weiß es. Er weiß, was seine Folgefrage nach BB-Code sehr stark vermuten lässt, nicht um die Verwendung von Kramdown und dessen Eigenheiten. Das hättest du – so meine Meinung – als alter Hase, der der Verwendung von Kramdown in der hiesigen Umgebung ebenfalls kritisch gegenüberstehst, wissen oder zumindest ahnen können.

      Den </>-Button hätte er aber finden können, wenn er die Buttonleiste durchsucht hätte und, das Vorhandensein von Title-Attributen riechend, auf das Aufpoppen der Tooltips gewartet hätte. Dass man das aus Sicht Kramdowns auch falsch machen kann, sehen wir hier aber auch mindestens einmal täglich.

      *btw?* War da nicht mal der Plan, die Title-Inhalte der Buttons standardmäßig neben den Icons anzuzeigen?

      Tschö, Auge

      -- Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
      Terry Pratchett, „Gevatter Tod“
      1. Hallo

        Ich weiß es.

        Ich seh grad' das ` code text here ~~~`. Er hat also den Button gefunden. Ich nehme alles zurück und behaupte das Gegenteil (bis auf die Frage im *btw*).

        Tschö, Auge

        -- Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
        Terry Pratchett, „Gevatter Tod“
      2. Hallo Auge,

        *btw?* War da nicht mal der Plan, die Title-Inhalte der Buttons standardmäßig neben den Icons anzuzeigen?

        Ja, den Plan gibt es noch. (https://github.com/ckruse/cforum/issues/471)

        Bis demnächst
        Matthias

        -- Signaturen sind bloed (Steel) und Markdown ist mächtig.
      3. Hi,

        … weiß ich nicht, wie du es schaffst, den Code im Posting derart zu verstümmeln, dass jegliche Zeilenumbrüche verschwinden.

        Ich weiß es. Er weiß, was seine Folgefrage nach BB-Code sehr stark vermuten lässt, nicht um die Verwendung von Kramdown und dessen Eigenheiten.

        das hatte ich zunächst auch vermutet. Allerdings - wie du selbst schon gemerkt hast - hat charly ja tatsächlich den Code-Block als solchen markiert, wobei ich wieder nicht verstehe, wie das schiefgehen konnte: Normalerweise fügt die Forensoftware den notwendigen Zeilenumbruch nach den drei Tilden doch automatisch ein (und überflüssigerweise noch einen vor den drei Tilden, die am Ende des Code-Blocks stehen, so dass man eine Leerzeile wieder händisch entfernen kann).

        Was mich aber schockiert hat: Ich wollte den Beitrag ja in Ordnung bringen. Dachte mir, ich bringe einfach die Code-Markierungen in Ordnung, fertig. Aber beim Bearbeiten fehlten auch schon in der Posting-Textarea sämtliche Zeilenumbrüche. Und wie das passieren konnte, wollte mir nicht einleuchten.

        Das hättest du – so meine Meinung – als alter Hase, der der Verwendung von Kramdown in der hiesigen Umgebung ebenfalls kritisch gegenüberstehst, wissen oder zumindest ahnen können.

        Eben. Hab ich. ;-)

        So long,
         Martin

      4. Hallo Auge,

        *btw?* War da nicht mal der Plan, die Title-Inhalte der Buttons standardmäßig neben den Icons anzuzeigen?

        Christian hat den Buttons jetzt eine Beschriftung spendiert. Wer mag, kann die mit diesem CSS wieder entfernen.

        .btn-default.btn-sm.btn { margin-bottom: 0.25rem; margin-right: 0.25rem; } .groupFont button, .groupLink button, .groupMisc button { font-size: 0; } .groupFont button span, .groupLink button span, .groupMisc button span { font-size: 14px; line-height: 1.42857; }

        Bis demnächst
        Matthias

        -- Signaturen sind bloed (Steel) und Markdown ist mächtig.
  2. Hi there,

    meiner Meinung nach entsteht das dann, wenn Du Funktionsnamen mit einem $-Zeichen beginnst, so wie hier: $_session_register("myname");

    Im übrigen hat Martin recht, Dein Code ist unter aller Sau...;)

    1. Tach!

      meiner Meinung nach entsteht das dann, wenn Du Funktionsnamen mit einem $-Zeichen beginnst, so wie hier: $_session_register("myname");

      Nun, das wäre noch nicht das Problem, solange es eine Variable mit diesem Namen gibt, in der der Name einer existierenden Funktion steckt. Ich nehme mal an, da steht session_register drin. Diese Funktion wurde aber mit PHP 5.4 beerdigt, weil es schon sehr lange eine bessere Alternative gab.

      Im übrigen hat Martin recht, Dein Code ist unter aller Sau...;)

      Der scheint auch uralt zu sein. Mit beispielsweise <font> arbeitet man doch schon seit gefühlten Jahrzehnten nicht mehr.

      Trotzdem frage ich mich, wie er es beim Kopieren schafft, alle Zeilenumbrüche verschwinden zu lassen? Da hilft auch nicht das vorgeschlagene Auszeichnen als Code, denn selbst in der Bearbeiten-Ansicht, in der üblicherweise die Zeilenumbrüche nicht vom Kramdown kassiert werden, sind sie nicht da.

      dedlfix.

      1. Hallo

        Trotzdem frage ich mich, wie er es beim Kopieren schafft, alle Zeilenumbrüche verschwinden zu lassen? Da hilft auch nicht das vorgeschlagene Auszeichnen als Code, denn selbst in der Bearbeiten-Ansicht, in der üblicherweise die Zeilenumbrüche nicht vom Kramdown kassiert werden, sind sie nicht da.

        Was mich wundert, ist, dass die Kramdown-Auszeichnung als Codeblock vorhanden ist, die vor- und nachgeschaltete Leerzeile da sind und dennoch keine Umwandlung stattfand. Ist es etwa Pflicht, dass innerhalb eines als Codeblock ausgezeichneten Abschnitts ein Umbruch enthalten ist? Das Fehlen eines Zeilenumbruchs ist das Einzige, was mich sofort anspringt.

        Tschö, Auge

        -- Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
        Terry Pratchett, „Gevatter Tod“
        1. Was mich wundert, ist, dass die Kramdown-Auszeichnung als Codeblock vorhanden ist, die vor- und nachgeschaltete Leerzeile da sind und dennoch keine Umwandlung stattfand.

          ~~~<? kennt die Software nicht.

          Es wäre alles kein Problem, wenn die beknackte Forensoftware nicht völlig ohne Sinn und Verstand sämtliche Zeilenumbrüche und Leerzeichenketten fressen würde. Einfaches Formatieren ist hier so nicht mehr möglich, Code kurzerhand reinkopieren geht entsprechend auch nicht.

          An Letzterem wird es möglicherweise auch gelegen haben: Er hat den Code naheliegenderweise direkt ins Eingabefeld gesetzt, wo er vom Forum komplett verhunzt wurde. Dann hat er es mit dem Code-Teil probiert, aber dessen Funktion leider nicht sofort verstanden.

          Vor 30 Jahren gab es mal eine dolle Entwicklung bei Textverarbeitungen: WYSIWYG. Man konnte praktisch so schreiben, wie's später aussehen sollte. Dieses Forum hier ist inzwischen wieder beim Stand von vor 40 Jahren angelangt, als Texte nur mit eingestreuten Befehlen formatiert werden konnten.

          Herzlichen Glückwunsch zu dieser Glanzleistung.

          1. @@Ingmar Igitt

            Was mich wundert, ist, dass die Kramdown-Auszeichnung als Codeblock vorhanden ist, die vor- und nachgeschaltete Leerzeile da sind und dennoch keine Umwandlung stattfand.

            Es wäre alles kein Problem, wenn die beknackte Forensoftware nicht völlig ohne Sinn und Verstand sämtliche Zeilenumbrüche und Leerzeichenketten fressen würde.

            ACK.

            Aber was mich wundert, ist, dass hier desöfteren Leute was zu meckern haben, von denen man hier nie zuvor was gelesen hat. Oder vielleicht doch, die aber zum Meckern einen anderen wählen.

            Ich mecker auch ständig darüber, dass Markdown hier Pflicht ist, tue das aber unter meinem Namen. Du hast dazu offenbar nicht den Mumm. Um es mit deinen Worten zu sagen: Herzlichen Glückwunsch zu dieser Glanzleistung.

            LLAP 🖖

            -- Ist diese Antwort anstößig? Dann könnte sie nützlich sein.
            1. Aber was mich wundert, ist, dass hier desöfteren Leute was zu meckern haben, von denen man hier nie zuvor was gelesen hat.

              Darüber, dass du desöfteren angemeckert würdest, wunderst nur du dich.

              Und offenkundig kriegst du auch nicht alles mit – schreibt jemand, etwas ginge "nicht mehr", muss derjenige wohl schon den vorigen Zustand kennen.

              tue das aber unter meinem Namen. Du hast dazu offenbar nicht den Mumm.

              Hach, du Held. Da hast du ja ein schlagendes Argument für Markdown hervorgeholt, jenen, denen es nicht gefällt, kurzerhand die persönliche Eignung abzusprechen, überhaupt was zu sagen.

              Muss ich jetzt auf's Dach, die Antenne halten?

              1. @@Ingmar Igitt

                Darüber, dass du desöfteren angemeckert würdest, wunderst nur du dich.

                Nö. Das hält mich aber nicht davon ab, meine Meinung unter meinem Namen zu vertreten.

                Hach, du Held. Da hast du ja ein schlagendes Argument für Markdown hervorgeholt, jenen, denen es nicht gefällt, kurzerhand die persönliche Eignung abzusprechen, überhaupt was zu sagen.

                Ähm, nein. Ich hole immer wieder schlagende Argumente gegen Markdown (als Default) hervor. Und bin inhaltlich bei dir, auch bei deinem anderen Posting.

                Was ich dir ankreide ist, dass du die nicht unter dem Namen schreibst, unter dem du hier offenbar sonst unterwegs bist. Denn Kritik am Forum ist von jemanden, den man hier im Forum noch nie gesehen hat, wenig glaubwürdig.

                Muss ich jetzt auf's Dach, die Antenne halten?

                Genau um 22:04 schlägt der Blitz ein.

                LLAP 🖖

                -- Ist diese Antwort anstößig? Dann könnte sie nützlich sein.
      2. Hallo dedlfix,

        Trotzdem frage ich mich, wie er es beim Kopieren schafft, alle Zeilenumbrüche verschwinden zu lassen? Da hilft auch nicht das vorgeschlagene Auszeichnen als Code, denn selbst in der Bearbeiten-Ansicht, in der üblicherweise die Zeilenumbrüche nicht vom Kramdown kassiert werden, sind sie nicht da.

        Er gibt den Code in das JS-Feld ein, wo eigentlich die Sprache hingehört.

        EDIT: https://github.com/ckruse/cforum/issues/472

        Bis demnächst
        Matthias

        -- Signaturen sind bloed (Steel) und Markdown ist mächtig.
        1. Hallo,

          Er gibt den Code in das JS-Feld ein, wo eigentlich die Sprache hingehört.

          so verquer, wie User handeln, können Entwickler garnicht denken, geschweige denn programmieren...

          Gruß
          Kalk

          1. so verquer, wie User handeln, können Entwickler garnicht denken, geschweige denn programmieren...

            Das Problem sind erstmal nicht die Nutzer, das Problem sind Entwickler, die meinen, die Nutzer seien das Problem – völlig egal, ob es dieses Forum, ein Fernseher, der Fahrkartenautomat oder der neue Staubsauger ist.

            Folgende Nachrichten verweisen auf diesen Beitrag:

            1. Hallo,

              das Problem sind Entwickler, die meinen, die Nutzer seien das Problem

              das ist bestimmt auch ein Problem, trifft hier aber nicht zu. Entwickler entwickeln Lösungen für Probleme, von denen sie Kenntnis haben, sie können schlicht nicht für ein unbekanntes Problem eine Lösung entwickeln. Und dann kommt eine unbekannte Anzahl von Usern, mit völlig unterschiedlichen Erwartungen und Erfahrungen und soll diese eine bestimmte Lösung verwenden und sind dabei mehr oder weniger kreativ. Das ist das eigentliche Problem.

              Gruß
              Kalk

              1. [Vollzitat]

                Hallo ,ich dachte ich bekomme hier Hilfe aber das war wohl nichts.
                Ich habe mir den Script gekauft aber der Verkäufer ist für 1 Jahr in America schrib er mir dann könnte er erst weiter helfen.

                Ich habe nur gefragt wo müßte ich etwas ändern und was kommt dahin aber dieses weiß ja keiner.
                Gruß

                1. Tach!

                  Ich habe mir den Script gekauft aber der Verkäufer ist für 1 Jahr in America schrib er mir dann könnte er erst weiter helfen.

                  Dann empfehle ich dir sehr, den Kauf rückgängig zu machen. Das Script ist hornalt, läuft auf modernen PHP-Versionen nicht, hat Sicherheitslücken und der Hersteller ist nicht mal in der Lage, die versprochene Funktionalität herzustellen.

                  Ich habe nur gefragt wo müßte ich etwas ändern und was kommt dahin aber dieses weiß ja keiner.

                  Da lohnt keine Reparatur mehr. Zudem ist der gezeigte Code unvollständig - abgesehen davon, dass er wegen einer Forums-Fehlbedienung unleserlich war.

                  Was ist eigentlich das ziel deiner Übung? Ein sessionbasiertes Login-System haben wir beispielsweise in unserem Wiki kostenlos. Unser Ziel ist aber nicht, fertige Software anzubieten. Wir sind kein Dienstleister und können auch nicht Problemlöser spielen, wenn es nur darum geht, etwas lauffähig zu bekommen. Wir bieten Hilfe zur Selbsthilfe. Alles darüber hinausgehende fällt in den Tätigkeitsbereich von entsprechenden Dienstleistungsunternehmen.

                  dedlfix.

                2. Hi there,

                  Ich habe nur gefragt wo müßte ich etwas ändern und was kommt dahin aber dieses weiß ja keiner.

                  Offensichtlich hast Du mein Posting nicht gelesen. Du schreibst $_session_register("myname") und das führt zu dieser Fehlermeldung. Entweder es gibt eine Funktion _session_register in Deinem Skript (was ich nicht weiss, ich hab Deinen Code nur überflogen, sonst krieg ich Augenkrebs) oder, wahrscheinlicher, Du willst ein Array namens $_session_register ansprechen, dann aber mit eckigen Klammern und nicht mit runden. Ausserdem, das Internet ist voll mit Deiner Fehlermeldung, wenn Du "Fatal error: Function name must be a string in" in das Google-Suchfeld eingibst, dann geht sofort der Browser über...

                3. Lieber charly,

                  Hallo ,ich dachte ich bekomme hier Hilfe aber das war wohl nichts.

                  hast Du denn verstanden, was man Dir schreibt? Nicht jedermann kann mit der Hilfe hier etwas anfangen - insbesondere dann nicht, wenn er nicht versteht, dass unsere Hilfe darin besteht, ihn von etwas abzubringen, weil er sich in einen Lösungsweg verrannt hat, der keiner ist.

                  Ich habe mir den Script gekauft aber der Verkäufer ist für 1 Jahr in America schrib er mir dann könnte er erst weiter helfen.

                  Mach den Kauf rückgängig! Unbedingt! Offensichtlich gehört der von Dir gepostete Code zu einem phpBB-Board (oder "Forum"), der unglaublich veraltet ist. Man kann sich die neueste Version gratis (es ist freie kostenlose Software!) von phpbb.org herunterladen. Wieso hast Du dafür also Geld bezahlt?

                  Ich habe nur gefragt wo müßte ich etwas ändern und was kommt dahin aber dieses weiß ja keiner.

                  Du müsstest die Software komplett entsorgen (was Du nicht wahrhaben willst), da sie sehr gefährliche Sicherheitslücken hat, die aber bereits vor langer Zeit repariert wurden. Ja, so extrem(!) veraltet ist Deine Software!

                  Liebe Grüße,

                  Felix Riesterer.

        2. Hallo,

          Trotzdem frage ich mich, wie er es beim Kopieren schafft, alle Zeilenumbrüche verschwinden zu lassen? Da hilft auch nicht das vorgeschlagene Auszeichnen als Code, denn selbst in der Bearbeiten-Ansicht, in der üblicherweise die Zeilenumbrüche nicht vom Kramdown kassiert werden, sind sie nicht da.

          Er gibt den Code in das JS-Feld ein, wo eigentlich die Sprache hingehört.

          that explains it! Autsch.

          Auf die Idee wäre ich nie im Leben gekommen. Weder als Erklärung für das Phänomen, noch es selbst so zu machen - zumal das Eingabefeld im JS-Prompt ja IMO eindeutig genug beschriftet ist.

          BTW: Wenn man in eben diesem Popup auf "Cancel" klickt, wird trotzdem ein Code-Block erzeugt und als Sprache "null" eingetragen. Ich deklariere das mal als Bug, denn eigentlich sollte man erwarten, dass der Posting-Text dann unverändert bleibt.

          Ciao,
           Martin