Zum Inhalt springen

PHP Chat


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ???

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ???

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D [/b]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...