FisyX Geschrieben 19. Januar 2004 Teilen Geschrieben 19. Januar 2004 habe einen PHP Chat und möchte diesen mit der user knebeln Funktion erweitern. Der chat basierd auf einer MYSQL Datenbank. Ich möchte erstmal eure Ideen wissen wie man so etwas überhaupt proggt.... in JAVA oder geht das auch in PHP ( /gag user -> der user kann nix mehr schreiben / /rgag -> der user kann wieder schreiben)? Also noch nicht wie ich das realisieren kann... nur ob es eine methode in php oder java gibt die soetwas ermöglicht...... vieleicht auch noch hinschreiben wie die methode heisst und dann sehen wir weiter Hoffe auf antwort Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FisyX Geschrieben 19. Januar 2004 Autor Teilen Geschrieben 19. Januar 2004 Habe es vor volgendermaßen zu lösen: elseif (eregi("^/gag ",$text)) { # Knebeln eines Users $text=eregi_replace("^/gag ","",$text); $a=explode(" ",$text); if (online($a[0])) { global $ur; if ($ur->nick==$_user->nick) { schreiben_1(); echo "Sie dürfen sich nicht selbst Knebeln."; schreiben_2(); } elseif ($ur->status>1 && $_user->status=="2") { schreiben_1(); echo "Sie dürfen Administratoren und Superuser nicht knebeln."; schreiben_2(); } elseif ($ur->status>2 && $_user->status=="3") { schreiben_1(); echo "Sie dürfen Superuser nicht ins Knebeln."; schreiben_2(); } elseif ($ur->chat_raum!=$_user->chat_raum) { schreiben_1(); echo "User '$ur->nick' befindet sich in einem anderen Raum."; schreiben_2(); } else { $variable=true; while($variable) { mysql_query("DROP * FROM $_T_MESSAGES WHERE von='$ur->nick'",$v) $zaehler++; if ($zaehler == 10000) { $variable=false; mysql_query("INSERT INTO ".$_T_CHAT_MESSAGES." VALUES ('','$_user->chat_raum','User \'".$ur->nick."\' wurde vom System wieder entknebelt','".$_CHAT_ROBOTER."','','','','<b>','".date("YmdHis")."')",$v); } else { schreiben_1(); echo "'$ur->nick' konnte nicht geknebelt werden (Fehler bei der Ausführung des MySQL-Befehls)."; schreiben_2(); } } } }[/PHP] Ich lasse nur für 10 sekunden knebeln ...... Bitte könnt ihr mal über den surcecode drüberschauen ob der so korrekt ist??? Hab das Problem mit einer schleife gelößt... Doch wie kann ich das machen das die schleife auch tatsächlich 10 sekunden dauert??? Schleifen zähler hochsetzen ??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 19. Januar 2004 Teilen Geschrieben 19. Januar 2004 ich würde das mit ner while schleife machen: $start_time = time(); //holt sich den UNIX-Timestamp in Sekunden while (time() < $start_time + 10) { //schleife für 10 sek durchführen //sperre benutzer usw. }; das problem ist nur, dass das skript dann für 10 sekunden in dieser schleife hängt. deshalb würde ich ein feld in der message-db hinzufügen, nämlich ein timestamp, der ungleich null ist, wenn der user geknebelt wurde und die startzeit angibt. dann musst du die stelle im chat abändern, wo die messages per sql in die db geschrieben werden und das schreiben von diesem timestamp abhängig machen: wenn timestamp !=0 wenn (timestamp + 10) > time() dann nicht eintragen sonst timestamp wieder auf null setzen //sozusagen den knebel wieder rausnehmen hoffe, du kannst was damit anfangen kLeiner_HobBes Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FisyX Geschrieben 19. Januar 2004 Autor Teilen Geschrieben 19. Januar 2004 wie mach ich denn das mit einem TIMESTAMP.... noch nie gehört..... bitte erklähr mir mal Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FisyX Geschrieben 19. Januar 2004 Autor Teilen Geschrieben 19. Januar 2004 Habe das hier gefunden : Wie lösche ich alle Datensätze, die älter als n Tage sind? DELETE FROM kalender AS k WHERE (to_days(current_date) - to_days(k.datum)) > 30 2. DELETE FROM kalender AS k WHERE to_days(k.datum) < to_days(current_date)-30; 3. DELETE FROM kalender AS k WHERE k.datum < date_add(current_date, interval -30 day) Wie wende ich dies auf das obere beispiel an ??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FisyX Geschrieben 19. Januar 2004 Autor Teilen Geschrieben 19. Januar 2004 Das ist das script das die chatter massages in die db schreibt <?php $min=1000; include("settings.inc.php"); if ($ist_user==0 || $_user->chat_raum=="0") { include("commands/fehler.inc.php"); } echo "<html><head></head><body>"; $text=htmlspecialchars(strip_tags(trim($HTTP_POST_VARS['text']))); $schriftart=trim(stripslashes($HTTP_POST_VARS['schriftart'])); $fett=$HTTP_POST_VARS['fett']; $kursiv=$HTTP_POST_VARS['kursiv']; $farbe=$HTTP_POST_VARS['farbe']; if ($text=="") { die(); } $an=""; # Nachricht wird formatiert $text=strip_tags($text); $text=eregi_replace(";","{#[-sk-]#}",$text); if(eregi("^/|\@",$text)) { include "commands/einfach.inc.php"; } if(eregi("http://",$text)) { $text = eregi_replace("([url]http://[/url][^\n< ]+)","<a href='\\1' target='_blank'>\\1</a>",$text); } if(eregi("ftp://",$text)) { $text=eregi_replace("([url]ftp://[/url][^\n< ]+)","<a href='\\1' target='_blank'>\\1</a>",$text); } $text=ereg_replace("{s([^}]+)}","<img src=smilies/\\1.gif vspace=0 border=0>",$text); $text=addslashes($text); if ($fett=="ja") { $format.="<b>"; } if ($kursiv=="ja") { $format.="<i>"; } $sql="INSERT INTO $_T_CHAT_MESSAGES VALUES ('','$_user->chat_raum','$text','$_user->nick','$an','$farbe','$schriftart','$format','".date('YmdHis')."')"; mysql_query($sql,$v); # Die alten Daten werden gelöscht $e=mysql_query("SELECT * FROM $_T_CHAT_MESSAGES WHERE raum_id='$_user->chat_raum' AND an='' ORDER BY nummer DESC LIMIT $min,1",$v); $i=mysql_fetch_object($e); mysql_query("DELETE FROM $_T_CHAT_MESSAGES WHERE nummer<'$i->nummer'",$v); mysql_close($v); ?> </body> </html> [/PHP] hoffentlich hilft es euch weiter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FisyX Geschrieben 19. Januar 2004 Autor Teilen Geschrieben 19. Januar 2004 Ich denke an dieser stelle muss eine abfrage rein: if ($fett=="ja") { $format.="<b>"; } if ($kursiv=="ja") { $format.="<i>"; } ---> Hier $sql="INSERT INTO $_T_CHAT_MESSAGES VALUES ('','$_user->chat_raum','$text','$_user->nick','$an','$farbe','$schriftart','$format','".date('YmdHis')."')"; mysql_query($sql,$v); OK, meine Idee: Ich erstelle ein weiteres Feld namens GAG in der Tabelle Users. ort trag ich standartmäsig den wert false ein! Mein Chatbefehl /gag username schreibt in dieses feld den wert true rein! /rgag setzt diesen wert wieder auf false Im bigen code setze ich eine abfrage rein wenn gag von tabelle user = true mache nichts else füge massage in die tabelle. währe nett wenn ihr mir beim quellsurce helfen würdet Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 19. Januar 2004 Teilen Geschrieben 19. Januar 2004 vielleicht hilt dir das weiter: http://de2.php.net/manual/de/function.sleep.php Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FisyX Geschrieben 19. Januar 2004 Autor Teilen Geschrieben 19. Januar 2004 Also ... ich habe die lösung.... Ich bitte nur darum vorher noch kurz zu kontrollieren ob die abfrage stimmt: Ich habe jetzt folgendes umgeschrieben: $result= mysql_query("SELECT gag FROM $_T_USERS WHERE nick = $user"); if ($result ==0) { $sql="INSERT INTO $_T_CHAT_MESSAGES VALUES ('','$_user->chat_raum','$text','$_user->nick','$an','$farbe','$schriftart','$format','".date('YmdHis')."')"; mysql_query($sql,$v); } else die(); }[/PHP] erst soll er aus der spalte gag den wert des jeweiligen users auslesen und in $result speichern. danach wird result verglichen ob es 0 ist. wenn ja erfolgt der datenbankeintrag .... wenn nein kann man soweit ich weiss die abfrage mit die(); beenden ...oider??? Bitte um eine kurze rückmeldung danke schonmal im vorraus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 19. Januar 2004 Teilen Geschrieben 19. Januar 2004 Original geschrieben von FisyX Also ... ich habe die lösung.... Ich bitte nur darum vorher noch kurz zu kontrollieren ob die abfrage stimmt: Ich habe jetzt folgendes umgeschrieben: $result= mysql_query("SELECT gag FROM $_T_USERS WHERE nick = $user"); if ($result ==0) { $sql="INSERT INTO $_T_CHAT_MESSAGES VALUES ('','$_user->chat_raum','$text','$_user->nick','$an','$farbe','$schriftart','$format','".date('YmdHis')."')"; mysql_query($sql,$v); } else die(); }[/PHP] erst soll er aus der spalte gag den wert des jeweiligen users auslesen und in $result speichern. danach wird result verglichen ob es 0 ist. wenn ja erfolgt der datenbankeintrag .... wenn nein kann man soweit ich weiss die abfrage mit die(); beenden ...oider??? Bitte um eine kurze rückmeldung danke schonmal im vorraus [/b] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 19. Januar 2004 Teilen Geschrieben 19. Januar 2004 hallo! wie merkst du dir den im gag-feld, wann die 10 sekunden des users um sind? sonst ist der user ja ewig gesperrt. hast du das ganze schon getestet? gruß kLeiner_HobBes Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 19. Januar 2004 Teilen Geschrieben 19. Januar 2004 Ich hab die beiden Threads mal zusammengebaut. Ist doch etwas übersichtlicher, wenn alles in einem Thread ist Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 20. Januar 2004 Teilen Geschrieben 20. Januar 2004 sry wegen dem post oben, wir hatten hier probleme mit dem proxy ich würde ein timestamp feld in die db rein machen, und da reinschreiben falls der user gesperrt sein sollte Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.