Gegen Bilderklau - Das Original

Registrierung Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Statistik Chat Karte Zur Startseite

Gegen Bilderklau - Das Original » Design, Website, Copyright » Homepagehilfe » Homepagehilfe - Archiv » [PHP & MySQL] PN System - nachricht kommt nicht an » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen
Zum Ende der Seite springen PN System - nachricht kommt nicht an
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Kuhmuhphu Kuhmuhphu ist weiblich
Probiers mal mit Gemütlichkeit


Dabei seit: 20.12.2009
Beiträge: 3.168
Herkunft: Hinter den 7 Bergen..

PN System - nachricht kommt nicht an Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

So.. nach gefühlten 1000 Fehlermeldungen hab ichs nun doch einigermaßen zum laufen gebracht^^

Allerdings kommen die Nachrichten nicht an..
Sie werden aber in die Tabelle eingetragen..

Irgendwie komme ich gerade nicht weiter.. mein Kopf raucht sozusagen.

Ich hoffe ihr könnt mir weiter helfen..
Ist sicherlich mal wieder ganz simpel.

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:

<?php include("checkuser.php");
?>
<?php
        session_start();
        if(isset($_SESSION["nickname"])) { // Wenn eingeloggt..

                include("db.php");
                include("functions.inc.php");

                if(isset($_REQUEST["submit"])) { // Wenn abgeschickt
                        if($_REQUEST["status"] == "lesen") { // Als gelesen
                                foreach ($_REQUEST["nachricht"] as $pn) {
                                        if(exist("nachrichtensystem WHERE id = '".$pn."' AND empfaenger = '".$_SESSION["nickname"]."'")) {
                                                $update mysql_query("UPDATE nachrichtensystem Set status = 'alt' WHERE id = '".$pn."'");
                                        }
                                }
                        }
                        elseif($_REQUEST["status"] == "delete") { // Als gelöscht
                                foreach ($_REQUEST["nachricht"] as $pn) {
                                        if(exist("nachrichtensystem WHERE id = '".$pn."' AND empfaenger = '".$_SESSION["nickname"]."'")) {
                                                $loesch mysql_query("DELETE FROM nachrichtensystem WHERE id = '".$pn."'");
                                        }
                                }
                        }
                }
                ?>
<html>
<head>

<link rel="stylesheet" type="text/css" href="stylesheets.css">

</head>


<body style="background-color:transparent">

<h2 class="h2">POSTEINGANG</h2>
<br>
<br>

                <center>
                        <script language="JavaScript">// Funktion um alles auszuwählen
                        <!--
                        var Mark = true;
                        function Alle ()
                        {
                                for(i = 0; i < document.getElementsByName("nachricht[]").length; i++)
                                {
                                        document.getElementsByName("nachricht[]")[i].checked = Mark;
                                }
                                if(Mark) {
                                        Mark = false;
                                } else {
                                        Mark = true;
                                }
                        }
                        //-->
                        </script>
                        <form action=posteingang.php method=post>
                                <table width=90% border=0>
                                        <tr>
                                                <td width=10% class="dunkel">&nbsp;

                                                </td>
                                                <td width=40% class="dunkel">
                                                        <b>Betreff</b>
                                                </td>
                                                <td width=20% class="dunkel">
                                                        <b>Absender</b>
                                                </td>
                                                <td width=20% class="dunkel">
                                                        <b>Datum</b>
                                                </td>
                                                <td width=20% class="dunkel">
                                                        <b>Antworten</b>
                                                </td>
                                        </tr>
                                        <?php
                                        $abfrage "SELECT * FROM nachrichtensystem WHERE empfaenger = '".$_SESSION["nickname"]."' ORDER BY status,id DESC"// Zeigt PNs an wo Empfänger gleich User. Ordnet nach Status und dann nach ID
                                        $ergebnis mysql_query($abfrage);
                                        while($row mysql_fetch_object($ergebnis))
                                        { // Anzeige ->
                                ?>
                                                <tr>
                                                        <td width=10%>
                                                                <input type="checkbox" name="nachricht[]" value="<?= $row->id ?>">
                                                        </td>
                                                        <td width=40%>
                                                                <?php
                                                                        if($row->status == "neu") {
                                                                                echo "NEU: ";
                                                                        }
                                                                ?>
                                                                <b><a href=pn.php?id=<?= $row->id ?>><?= $row->betreff ?></a></b>
                                                        </td>
                                                        <td width=20%>
                                                                <?php
                                                                        $abfrage2 "SELECT nickname FROM mitglieder WHERE id = '".$row->absender."' LIMIT 0,1"// Usernamen des Absenders
                                                                        $ergebnis2 mysql_query($abfrage2);
                                                                        while($row2 mysql_fetch_object($ergebnis2))
                                                                        {
                                                                                echo "<a href=mitglieder.php?id=".$row->absender.">".$row2->name."</a>";
                                                                        }
                                                                ?>
                                                        </td>
                                                        <td width=20%>
                                                                <?= date("d.m.Y",$row->timestamp?> um <?= date("H:i",$row->timestamp?>
                                                        </td>
                                                        <td width=20%>
                                                                <a href=newpn.php?antwort=<?= $row->id ?>>Antworten</a>
                                                        </td>
                                                </tr>
                                <?php
                                        }
                                        ?>
                                </table>
                                <br />
                                <a href=javascript:Alle();>Alle Markieren</a>
                                <select size=1 name="status">
                                        <option value="lesen">Als gelesen</option>
                                        <option value="delete">Löschen</option>
                                </select>
                                <input type="submit" value="Ändern" name="submit">
                        </form>
                </center>
                <br /><br />
                <a href=newpn.php>Neue PN</a>
                <?php

        }
?>
</body>
</html>
14.10.2010 20:58 Kuhmuhphu ist offline E-Mail an Kuhmuhphu senden Beiträge von Kuhmuhphu suchen Nehmen Sie Kuhmuhphu in Ihre Freundesliste auf
Kuhmuhphu Kuhmuhphu ist weiblich
Probiers mal mit Gemütlichkeit


Dabei seit: 20.12.2009
Beiträge: 3.168
Herkunft: Hinter den 7 Bergen..

Themenstarter Thema begonnen von Kuhmuhphu
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Genau nicht im Posteingang des Users dem die Nachricht geschrieben wird..


Ich hab gerade nochmal nachgeschaut.. der Empfänger wird mit seiner id gespeichert.
Kann es sein das ich den aber mit seinem Nickname speichern müsste?


Es kommt keine Fehlermeldung die Nachricht wird ja korrekt verschickt und in die nachrichtensystem Tabelle bei phpmyadmin eingetragen. Kommt halt nur nicht beim Empfänger an.
15.10.2010 09:25 Kuhmuhphu ist offline E-Mail an Kuhmuhphu senden Beiträge von Kuhmuhphu suchen Nehmen Sie Kuhmuhphu in Ihre Freundesliste auf
Oli
Server-Administrator


Dabei seit: 13.06.2010
Beiträge: 1.540

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Ich hab gerade nochmal nachgeschaut.. der Empfänger wird mit seiner id gespeichert.
Kann es sein das ich den aber mit seinem Nickname speichern müsste?


Falls du damit meinst, dass in der Spalte "empfaenger" die ID des Users steht, dann musst du entweder in dieser Spalte den Nickname speichern, oder deine Abfrage so ändern, dass auf die ID geprüft wird.

php:
1:
abfrage "SELECT * FROM nachrichtensystem WHERE empfaenger = '".$_SESSION["nickname"]."' ORDER BY status,id DESC";

Wenn also in "empfaenger" 4 steht, für den User "Max", dann ergibt diese Abfrage natürlich keine Ergebnisse, denn 4 ist nicht "Max".

Im Zweifelsfall bitte mal den Code posten, der die PNs einfügt - dann können wir damit vergleichen.

LG
15.10.2010 10:34 Oli ist offline Beiträge von Oli suchen Nehmen Sie Oli in Ihre Freundesliste auf
Kuhmuhphu Kuhmuhphu ist weiblich
Probiers mal mit Gemütlichkeit


Dabei seit: 20.12.2009
Beiträge: 3.168
Herkunft: Hinter den 7 Bergen..

Themenstarter Thema begonnen von Kuhmuhphu
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Da wird sie eingetragen

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:

<?php
        session_start();
        if(isset($_SESSION["nickname"])) { // Wenn eingeloggt..

                include("db.php");
                include("functions.inc.php");

                if(anzahl("nachrichtensystem WHERE absender = '".$_SESSION["nickname"]."' AND timestamp > '".(time()-120)."'") <= 3) { // In den letzten 2 Minuten nicht mehr als 3PNs schreiben. Ist ein Spamschutz ;)
                        if(isset($_REQUEST["submit"])) { // Wenn abgeschickt
                                if(!empty($_REQUEST["empfaenger"]) && !empty($_REQUEST["betreff"]) && !empty($_REQUEST["text"])) { // Wenn alles audgefüllt
                                        $abfrage "SELECT * FROM mitglieder WHERE id = '".strip_tags($_REQUEST["empfaenger"])."' OR nickname = '".strip_tags($_REQUEST["empfaenger"])."' LIMIT 0,1";
                                        $ergebnis mysql_query($abfrage);
                                        while($row mysql_fetch_object($ergebnis))
                                        {
                                                $eintragen mysql_query("INSERT INTO nachrichtensystem (absender, betreff, timestamp, status, text, empfaenger) VALUES ('".$_SESSION["nickname"]."', '".strip_tags($_REQUEST["betreff"])."', '".time()."', 'neu', '".post($_REQUEST["text"])."', '".$row->id."')");
                                        }
                                }
                        }
                        if(isset($_REQUEST["antwort"]) && exist("nachrichtensystem WHERE id = '".strip_tags($_REQUEST["antwort"])."' AND empfaenger = '".$_SESSION["nickname"]."'")) { // Wenn man antworten will..
                                $abfrage "SELECT absender, betreff FROM nachrichtensystem WHERE id = '".strip_tags($_REQUEST["antwort"])."' LIMIT 0,1";
                                $ergebnis mysql_query($abfrage);
                                while($row mysql_fetch_object($ergebnis))
                                {
                                        $betreff "RE: ".$row->betreff;
                                        $empfaenger $row->absender;
                                }
                        } else {
                                $betreff "";
                                $empfaenger "";
                        }
                ?>
<html>
<head>

<link rel="stylesheet" type="text/css" href="stylesheets.css">

</head>


<body style="background-color:transparent">

<h2 class="h2">POSTEINGANG</h2>
<br>
<br>

                        <center>
                                <form action=newpn.php method=post>
                                        <table width=90%>
                                                <tr>
                                                        <td width=50% class="hell">
                                                                <b>Betreff:</b>
                                                        </td>
                                                        <td width=50%>
                                                                <input type="text" name="betreff" value="<?= $betreff ?>">
                                                        </td>
                                                </tr>
                                                <tr>
                                                        <td width=50% class="hell">
                                                                <b>Empfänger:</b>
                                                        </td>
                                                        <td width=50%>
                                                                <input type="text" name="empfaenger" value="<?= $empfaenger ?>">
                                                        </td>
                                                </tr>
                                                <tr>
                                                        <td width=50% class="hell">
                                                                <b>Text:</b>
                                                        </td>
                                                        <td width=50%>
                                                                <textarea name="text" cols=25 rows=4></textarea>
                                                        </td>
                                                </tr>
                                                <tr>
                                                        <td width=100% colspan=2 align=right>
                                                                <input type="submit" value="Abschicken" name="submit">
                                                        </td>
                                                </tr>
                                        </table>
                                </form>
                                <br /><a href=posteingang.php>Posteingang</a>
                        </center>
                <?php
                }
                else { // Wenn zu viele PNs
                ?>
                        Du darfst nur 3 PNs in 2 Minuten abschicken!
                <?php
                }

        }
?>
</body>
</html>

15.10.2010 10:43 Kuhmuhphu ist offline E-Mail an Kuhmuhphu senden Beiträge von Kuhmuhphu suchen Nehmen Sie Kuhmuhphu in Ihre Freundesliste auf
Oli
Server-Administrator


Dabei seit: 13.06.2010
Beiträge: 1.540

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Aaaaaalso.. genau, wie du vermutet hast, liegt das Problem darin, dass du die ID einträgst, aber den Nickname abfrägst.

Du hast jetzt also 2 Möglichkeiten.


1. Möglichkeit: Beim Eintragen statt der ID, den Nickname speichern.
Dazu müsstest du einfach nur am Ende der Zeile
php:
1:
$eintragen mysql_query("INSERT INTO nachrichtensystem (absender, betreff, timestamp, status, text, empfaenger) VALUES ('".$_SESSION["nickname"]."', '".strip_tags($_REQUEST["betreff"])."', '".time()."', 'neu', '".post($_REQUEST["text"])."', '".$row->id."')");
das $row->id zu $row->nickname ändern. Achtung: In der Tabelle muss dann für das Feld natürlich z.B. "VARCHAR" als Typ ausgewählt sein. Wenn das Feld ein INT ist, kannst du keinen Nickname darin speichern und müsstest das Feld ändern.



2. Möglichkeit: Beim Abruf zuerst die ID des Users ermitteln.
Den Code dafür hast du bereits verwendet - in der Datei zum Eintragen - um eben dort die ID zu ermitteln.
Ich habe lediglich $_SESSION["nickname"] angepasst, das strip_tags entfernt (das brauchst du nicht, da der Wert ohnehin sicher ist, er kommt ja unverändert von dir) und die 2. Abfrage nach der ID entfernt, denn $_SESSION["nickname"] wird ohnehin niemals eine ID beinhalten:
php:
1:
2:
3:
$abfrage "SELECT * FROM mitglieder WHERE nickname = '".$_SESSION["nickname"]."' LIMIT 0,1";
$ergebnis mysql_query($abfrage);
// ...
Damit könntest du die ID ermitteln und anschließend die Abfrage mithilfe der ID machen, statt des Nicknames.


LG

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Oli: 15.10.2010 10:57.

15.10.2010 10:56 Oli ist offline Beiträge von Oli suchen Nehmen Sie Oli in Ihre Freundesliste auf
Kuhmuhphu Kuhmuhphu ist weiblich
Probiers mal mit Gemütlichkeit


Dabei seit: 20.12.2009
Beiträge: 3.168
Herkunft: Hinter den 7 Bergen..

Themenstarter Thema begonnen von Kuhmuhphu
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ok..ich habs jetzt mit der 2 Möglichkeit gemacht..

Jetzt hab ich im Posteingang eine nachricht vom 1.1.1970 die ich nicht löschen kann^^ (meine Tabelle ist aber leer.. also es exestiert eigentlich kein inhalt in der tabelle nachrichtensystem)


Und wenn ich jetzt eine neue schreiben will dann kommt

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /users/rvbuchenhain/www/Buchenhain/login/newpn.php on line 17
15.10.2010 11:29 Kuhmuhphu ist offline E-Mail an Kuhmuhphu senden Beiträge von Kuhmuhphu suchen Nehmen Sie Kuhmuhphu in Ihre Freundesliste auf
Oli
Server-Administrator


Dabei seit: 13.06.2010
Beiträge: 1.540

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von Kuhmuhphu
Jetzt hab ich im Posteingang eine nachricht vom 1.1.1970 die ich nicht löschen kann^^ (meine Tabelle ist aber leer.. also es exestiert eigentlich kein inhalt in der tabelle nachrichtensystem)
[...]
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /users/rvbuchenhain/www/Buchenhain/login/newpn.php on line 17


Zu der "nicht-existierenden" PN: Mach einfach mal ein
php:
1:
2:
3:
if(mysql_num_rows($ergebnis) > 0) {
 //hier das while($row = ...
}
um die Ausgabe herum, sodass deine Ausgabe (das ist die while-Schleife) nur dann erfolgt, wenn auch mehr als 0 Datensätze gelesen wurden.

Hast du irgendwas an der newpn.php geändert? Falls ja poste bitte die Änderungen oder mach sie rückgängig, es hat ja vorher funktioniert.
15.10.2010 11:47 Oli ist offline Beiträge von Oli suchen Nehmen Sie Oli in Ihre Freundesliste auf
Kuhmuhphu Kuhmuhphu ist weiblich
Probiers mal mit Gemütlichkeit


Dabei seit: 20.12.2009
Beiträge: 3.168
Herkunft: Hinter den 7 Bergen..

Themenstarter Thema begonnen von Kuhmuhphu
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Also verändert hab ich nichts dran.. hab mich eben gerade nochmal aus und eingeloggt da gings wieder..

Wenn ich jetzt anstelle der 2 die 1 Möglichkeit nehmen würde.. dann müsste ich ja noch mehr am code verändern richtig?
15.10.2010 12:00 Kuhmuhphu ist offline E-Mail an Kuhmuhphu senden Beiträge von Kuhmuhphu suchen Nehmen Sie Kuhmuhphu in Ihre Freundesliste auf
Oli
Server-Administrator


Dabei seit: 13.06.2010
Beiträge: 1.540

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von Kuhmuhphu
Wenn ich jetzt anstelle der 2 die 1 Möglichkeit nehmen würde.. dann müsste ich ja noch mehr am code verändern richtig?


Nur, wenn du irgendwelche Stellen hast, die eine ID erwarten.

Du könntest jedoch auch gleich beim Login die ID in die Session schreiben, das wäre am einfachsten.. also einfach beim Einloggen auch die ID mit abfragen und zusätzlich zum Nickname die ID in z.B. $_SESSION["userid"] speichern.
15.10.2010 12:31 Oli ist offline Beiträge von Oli suchen Nehmen Sie Oli in Ihre Freundesliste auf
Kuhmuhphu Kuhmuhphu ist weiblich
Probiers mal mit Gemütlichkeit


Dabei seit: 20.12.2009
Beiträge: 3.168
Herkunft: Hinter den 7 Bergen..

Themenstarter Thema begonnen von Kuhmuhphu
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wusst ich gar nicht das man das kann..
Muss ich dann einfach im login_action schreiben

php:
1:
2:
$_SESSION["nickname"] = $nickname; 
 $_SESSION["userid"] = $id;



Oder irgendwie besondern?

Und dann statt
php:
1:
".$row->id."


php:
1:
".$row->.$_SESSION["userid"]."
15.10.2010 13:01 Kuhmuhphu ist offline E-Mail an Kuhmuhphu senden Beiträge von Kuhmuhphu suchen Nehmen Sie Kuhmuhphu in Ihre Freundesliste auf
Oli
Server-Administrator


Dabei seit: 13.06.2010
Beiträge: 1.540

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von Kuhmuhphu
Wusst ich gar nicht das man das kann..
Muss ich dann einfach im login_action schreiben

php:
1:
2:
$_SESSION["nickname"] = $nickname; 
 $_SESSION["userid"] = $id;
Wenn die ID zu dem Zeitpunkt in $id steht, ja. Du kannst in der Session soviele Daten speichern wie du willst, es ist jedoch nicht empfehlenswert, unnützes Zeug zu speichern, weil das alles auf deinem Server abgelegt wird (bis du die Daten wieder aus der Session löscht oder ein Limit abgelaufen ist, bei dem alte Sessions gelöscht werden..).

Zitat:
Original von Kuhmuhphu
Und dann statt
php:
1:
".$row->id."

php:
1:
".$row->.$_SESSION["userid"]."
Wieso $row-> ?? Steht deine Session in der MySQL-Zeile? Augenzwinkern
15.10.2010 13:16 Oli ist offline Beiträge von Oli suchen Nehmen Sie Oli in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Gegen Bilderklau - Das Original » Design, Website, Copyright » Homepagehilfe » Homepagehilfe - Archiv » [PHP & MySQL] PN System - nachricht kommt nicht an

Impressum

Forensoftware: Burning Board, entwickelt von WoltLab GmbH