Ergebnis 1 bis 20 von 288

Thema: Allgemeiner Fragenthread II

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Javascript/Ajax

    Mit folgendem Script erstelle ich über die getdata.php einen DB Request und alsse ihn ausgeben

    Code:
    function loadData(nid)
    {
     if (xmlHttp) {
         xmlHttp.open('GET', 'getdata.php?nid='+nid+'', true);
         xmlHttp.onreadystatechange = function () {
             if (xmlHttp.readyState == 4) {
                 document.getElementById("comments").innerHTML = xmlHttp.responseText;
             }
         };
         xmlHttp.send(null);
     }
    }
    Dazu muss ich sagen, dass es um ein Newsscript geht, wobei der Ajax-Anteil die Kommentare ausgibt.
    Der Parameter "nid" steht für die News-Id. Das Problem ist nur folgendes:
    Das Newsscript wird in die index.php includet, und dort wird auch die Variable "nid" festgelegt, allerdings befindet sich der Javascript der index.php schon im Head-Teil, obwohl die Funktion (loadData) erst im body-Teil ausgeführt wird.
    Von daher kennt das Javascript die Variable nid noch nicht.

    Klar, man kann die Variable nid selbstverständlich auch vor dem Head-Teil in der index.php festlegen, aber das will ich nicht, ich will dass sie erst in der includeten Datei festgelegt wird.

    Also, wie kann ich die Funktion loadData ausführen, sodass nur Kommentare mit der entsprechenden Newsid ausgegeben werden?

  2. #2
    Zitat Zitat von Antares Beitrag anzeigen
    Javascript/Ajax

    Mit folgendem Script erstelle ich über die getdata.php einen DB Request und alsse ihn ausgeben

    Code:
    function loadData(nid)
    {
     if (xmlHttp) {
         xmlHttp.open('GET', 'getdata.php?nid='+nid+'', true);
         xmlHttp.onreadystatechange = function () {
             if (xmlHttp.readyState == 4) {
                 document.getElementById("comments").innerHTML = xmlHttp.responseText;
             }
         };
         xmlHttp.send(null);
     }
    }
    Dazu muss ich sagen, dass es um ein Newsscript geht, wobei der Ajax-Anteil die Kommentare ausgibt.
    Der Parameter "nid" steht für die News-Id. Das Problem ist nur folgendes:
    Das Newsscript wird in die index.php includet, und dort wird auch die Variable "nid" festgelegt, allerdings befindet sich der Javascript der index.php schon im Head-Teil, obwohl die Funktion (loadData) erst im body-Teil ausgeführt wird.
    Von daher kennt das Javascript die Variable nid noch nicht.

    Klar, man kann die Variable nid selbstverständlich auch vor dem Head-Teil in der index.php festlegen, aber das will ich nicht, ich will dass sie erst in der includeten Datei festgelegt wird.

    Also, wie kann ich die Funktion loadData ausführen, sodass nur Kommentare mit der entsprechenden Newsid ausgegeben werden?
    Irgendwie verstehe ich dein Problem nicht so recht. Du hast eine Funktion in einer Datei die includet wird. Diese Funktion willst du später mit einem Parameter aufrufen. Spätestens dort, wo du den Funktionsausruf mit PHP ausgeben lässt, müsste dir doch aber die News-ID bekannt sein, oder? Also im Stil von
    PHP-Code:
    while($row mysql_fetch_assoc($result)) {
      
    // ...
      
    echo '<a href="news.php?id='.$row['id'].'" onclick="javascript:loadData('.$row['id'].');">Kommentare</a>';
      
    // ...

    Oder verstehe ich das falsch?

  3. #3
    Also, der Javascript, welcher die Funktion erhält befindet sich im Head-Teil der index.php
    Danach (und das ist warscheinlich das Problem meines Scripts) wird die Funktion loadData() im Body-Teil der index.php aufgerufen.
    Das ist insofern problematisch, weil die Funktion auf diese Weise quasi immer aufgerufen wird, da sie in der index definiert ist, auch wenn das entsprechende News-Script nicht includet wird.
    Demnach habe ich den Body folgendermaßen definiert.

    PHP-Code:
    <?php if ($content == "news_single") { $nid=$_GET["nid"]; echo"<body onLoad='loadData($nid);'>"; } else { echo"<body>"; }  ?>
    Wobei der content=news_single hier für das newsscript steht.
    Am liebsten wäre es mir aber, wenn sich loadData() in der includeten Datei ausführen lässt, allerdings ohne klicken.
    Das Problem ist, dass mir hierbei nur noch <body onload=""> bleibt, aber in eine Datei, welche man includet gehört nunmal kein <body>

  4. #4
    Zitat Zitat von Antares Beitrag anzeigen
    Also, der Javascript, welcher die Funktion erhält befindet sich im Head-Teil der index.php
    Danach (und das ist warscheinlich das Problem meines Scripts) wird die Funktion loadData() im Body-Teil der index.php aufgerufen.
    Das ist insofern problematisch, weil die Funktion auf diese Weise quasi immer aufgerufen wird, da sie in der index definiert ist, auch wenn das entsprechende News-Script nicht includet wird.
    Demnach habe ich den Body folgendermaßen definiert.

    PHP-Code:
    <?php if ($content == "news_single") { $nid=$_GET["nid"]; echo"<body onLoad='loadData($nid);'>"; } else { echo"<body>"; }  ?>
    Wobei der content=news_single hier für das newsscript steht.
    Am liebsten wäre es mir aber, wenn sich loadData() in der includeten Datei ausführen lässt, allerdings ohne klicken.
    Das Problem ist, dass mir hierbei nur noch <body onload=""> bleibt, aber in eine Datei, welche man includet gehört nunmal kein <body>
    HTML-Code:
    <script type="text/javascript">loadData(<?php echo $_GET['nid']; ?>);</script>
    Kannst du überall unterbringen und dürfte auch valid sein.
    Wenn du die Daten aber eh ohne Userinteraktion anzeigen willst, frage ich mich, warum du sie nicht gleich mit ausgibst o_O

  5. #5
    Zitat Zitat von dead_orc Beitrag anzeigen
    HTML-Code:
    <script type="text/javascript">loadData(<?php echo $_GET['nid']; ?>);</script>
    Kannst du überall unterbringen und dürfte auch valid sein.
    Wenn du die Daten aber eh ohne Userinteraktion anzeigen willst, frage ich mich, warum du sie nicht gleich mit ausgibst o_O

    Joa..hätte ich auch drauf kommen können
    Trotzdem danke !

    Naja, ich lasse sie doch ausgeben, nur eben per Ajax. Sie aktualisieren sich eben nur nicht im Shoutboxstil, sondern nur dann, wenn jemand einen Kommentar schreibt, was mich auch gleich zur zweiten Frage führt, denn genau das möchte ich auch irgendwie erreichen..

    Bei meinem Eingabeformular benutze ich folgenden Code im Form Tag
    HTML-Code:
    onsubmit='saveData(); return false;'
    Schreibe ich jetzt hinter savaData(); noch loadData(); so trägt er den Kommentar zwar ein, aber ich lande wieder auf der index ohne $content.

    Wie kann ich also am besten die Kommentare aktualisieren, wenn jemand einen Eintrag verfasst?

  6. #6
    HTML-Code:
    <script type="text/javascript">loadData(<?php echo $_GET['nid']; ?>);</script>
    Man sollte niemals eine Benutzereingabe direkt ausgeben bzw. anders weiterverwenden.
    Man sollte die Eingabe immer erst prüfen bzw. dafür sorgen, das keine gefährlichen Daten drin vorkommen.
    In diesem Fall kämme wohl intval in Frage.

  7. #7
    Zitat Zitat von Xardas der Dunkle Beitrag anzeigen
    HTML-Code:
    <script type="text/javascript">loadData(<?php echo $_GET['nid']; ?>);</script>
    Man sollte niemals eine Benutzereingabe direkt ausgeben bzw. anders weiterverwenden.
    Man sollte die Eingabe immer erst prüfen bzw. dafür sorgen, das keine gefährlichen Daten drin vorkommen.
    In diesem Fall kämme wohl intval in Frage.
    Javascript und HTML kann ja sowieso vom Benutzer geändert werden, also was kann denn in diesem Falle passieren?

  8. #8
    Zitat Zitat von Drakes Beitrag anzeigen
    Javascript und HTML kann ja sowieso vom Benutzer geändert werden, also was kann denn in diesem Falle passieren?
    Der Inhalt der Seite kann über die URL beinflußt werden, in diesem Falle könnte beliebiges HTML eingeschleust werden. Damit lässt sich beliebiger Inhalt in die Seite einfügen und damit kann man den User wunderbar täuschen, indem man falsche Informationen einbindet. Oder man stiehlt dem User einfach seine Cookies und damit möglicherweise seine Login-Informationen. Im Zweifelsfalle wartet man, bis der User sein Passwort eingibt und schickt es dann an den Angreifer. XSS sollte man nicht unterschätzen.

  9. #9
    Ist mir durchaus bewusst, aber ich sehe mich einfach nicht in der Pflicht, produktionsreifen Code zu liefern.
    Ich denke, sowas sollte man jemandem nicht vorkauen, sondern wenn überhaupt gleich mit erklären.

  10. #10
    Hallo,ich bin ein absoluter PHP-Anfänger,und möchte ein Formular erstellen,dass die Ergebnisse auf eine andere Seite überträgt und anzeigt.
    Das funktioniert aber nicht,sooft ich das auch umändere.
    Das Formular in HTML:
    Code:
    <html>
    <body>
    <form action="dataget.php" method="post">
        Name:  <input type="text" name="benutzername" /><br />
        Email: <input type="text" name="email" /><br />
        <input type="submit" name="submit" value="Und ab!" />
    </form>
    </body>
    </html>
    Das PHP-Script,wo es ausgelesen wird:
    Code:
    <?php
       echo $_POST['benutzername'];
     ?>
    Ich habe irgendwie das Gefühl,dass was fehlt...
    Ist es überhaupt möglich,die Daten in einem reinen HTML-Dokument (ohne irgendwelche PHP-Zeilen) zu erhalten?

    Das seltsamste ist eigentlich,dass der größte Teil eigentlich aus einer anderen Seite rüberkopiert wurde und trotzdem im dem Zieldokument nix steht!(Ich benutze Firefox 2.0.0.14)

    Geändert von Myriad (25.05.2008 um 14:08 Uhr)

  11. #11
    Befindet sich die Zeile
    Code:
    <?php echo $_POST['benutzername']; ?>
    auch in der dataget.php (der im form-Element verlinkten Datei)?

    Wenn nein, hineinschreiben. Falls ja: HTML-Quelltext anschauen, ob der PHP-Code überhaupt verarbeitet wurde.

  12. #12
    Natürlich ist
    HTML-Code:
    <?php echo $_POST['benutzername']; ?>
    in der dataget.php.Aber wenn ich ja mir die dataget.php ansehe,steht da nichts!

    Zur Verarbeitung:Ich habe die Form action auf ="Abc.html" umbenannt,die Seite,wo die die Formulardaten eingebe,damit sie sich selbst wieder aufruft.Und unter dem Formular-Code habe ich die
    HTML-Code:
    <?php echo $_POST['benutzername']; ?>
    eingegeben,damit er sie ausgibt.Aber das funktioniert auch nicht.Oder wie soll man das machen?
    Also so:

    Ich hab echt keine Ahnung...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •