php und javascript IM

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

  • php und javascript IM

    Hi leute!

    Habe in PHP und MySQL einen Instant Messanger programmiert.

    Es gibt eine Datei check.php, die alle 7 Sekunden checkt ob einen neue Nachricht vorhanden ist. Wenn ja, öffnet sie den IM in einem Pop-Up.
    In diesem Pop-Up ist eine Datei send.php die ebenfalls alle 7 Sekunden checkt ob eine neue Nachricht vorhanden ist. Allerdings nur von dem Partner mit dem man in diesem Fenster schreibt.

    Wenn jetzt die send.php merkt das eine neue Nachricht vorhanden ist, schreibt sie diese in einen 2ten Frame.
    Wenn aber die check.php, die für die ganze Seite zuständig ist, früher wie die send.php merkt das eine neue Nachricht vorhanden ist, läd sie alle Frames im Pop-Up neu.


    Wie kann man das machen, dass die check.php merkt, dass eine Pop-Up mit einem bestimmten Partner geöffnet ist, und alle Messages die von diesem kommen nicht berücksichtigt?

    Hier der Code der Dateien:

    check.php
    PHP-Code:
    <?
    include("global.php");
    if ($loggedin == 1) {
        $fromdet = $DBase->fetch("SELECT * FROM boarduser WHERE name = '$userid' LIMIT 1");
        $fromuser = $fromdet['userid'];
        $count = $DBase->num_rows("SELECT * FROM instant WHERE touser = '$fromuser' AND
    instantread = 0");
        if ($count > 0) {
            $getmessages = $DBase->query("SELECT * FROM instant WHERE touser = '$fromuser' AND
    instantread = 0");
            while ($row = $DBase->fetch_array($getmessages)) {
                $onload .= "javascript:instant(" . $row['fromuser'] . ");\n";
            }
        }
    }
    ?>
    <html>
    <head>
    <title>Check-Frame</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="refresh" content="7">
    <SCRIPT LANGUAGE="JavaScript">
    function instant(touser) {
        var id = touser;
        var page = "page" + id;
        if (!page.closed && page.location) {
        } else {
            eval(page + " = window.open('instant.php?touser='+touser, '" +
    id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=1,
    menubar=0,resizable=0,width=450,height=300');");
            if (!page.opener) page.opener = self;
        }
        return false;
    }
    </script>
    <?
    echo "<SCRIPT LANGUAGE=\"JavaScript\">";
    echo $onload;
    echo "</script>";
    ?>
    </head>

    <body>

    </body>
    </html>
    send.php
    PHP-Code:
    <?
    include("global.php");
    if ($loggedin == 1) {
    if ($first == "1") {
        $lastrec = $DBase->fetch("SELECT * FROM instant WHERE touser = '$fromuser' AND
    instantread = 1 ORDER BY timecode DESC LIMIT 1");
        $first = $lastrec['timecode'];
    }
    if ($action == "send") {
        $time = time();
        $DBase->query("INSERT INTO instant VALUES ('','$fromuser','$touser','$text','$time','0')");
        echo "<SCRIPT LANGUAGE=\"JavaScript\">";
        echo "parent.bottomFrame.document.message.imtext.value = \"\";";
        echo "</script>";
        echo "<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=send.php?
    touser=$touser&fromuser=$fromuser&first=$first\">";
    }
    $count = $DBase->num_rows("SELECT * FROM instant WHERE fromuser = '$fromuser' AND
    instantread = 0 OR touser = '$fromuser' AND instantread = 0");
    if ($count > 0) {
        echo "<SCRIPT LANGUAGE=\"JavaScript\">";
        echo "eval(\"parent.messages.location='instant.php?action=middle
    &touser=$touser&first=$first'\");\n";
        echo "</script>";
    }
    } else {
        echo "Sie haben keine Berechtigung Instant Messages zu schreiben!";
    }
    ?>
    <html>
    <head>
    <title>IM-Sender</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="refresh" content="7">
    </head>

    <body>
    </body>
    </html>
    Zuletzt geändert von wahsaga; 25.01.2004, 18:51.

  • #2
    Re: php und javascript IM

    Original geschrieben von easysystem
    Habe in PHP und MySQL einen Instant Messanger programmiert.
    dass HTTP absolut kein geeignetes protokoll zum schreiben eines chat-ähnlichen systems ist, muss hoffentlich nicht erneut erwähnt werden ...

    Wie kann man das machen, dass die check.php merkt, dass eine Pop-Up mit einem bestimmten Partner geöffnet ist, und alle Messages die von diesem kommen nicht berücksichtigt?
    benutze sessions, und schreibe beim öffnen des popups den usernamen in die session, so dass check.php aus der session auslesen kann, zu welchen namen es keine ausgaben machen soll.
    (ein unter-array unterhalb von $_SESSION bietet sich vllt. an, damit die prüfung mit in_array() gemacht werden kann.)
    Zuletzt geändert von wahsaga; 25.01.2004, 18:53.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar

    Lädt...
    X