Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PHP Chat

Empfohlene Antworten

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

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

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

wie mach ich denn das mit einem TIMESTAMP.... noch nie gehört..... bitte erklähr mir mal

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

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

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

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

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]

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

Ich hab die beiden Threads mal zusammengebaut. Ist doch etwas übersichtlicher, wenn alles in einem Thread ist

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.