Ein Script, viele Fragen

riddler2kone

Erfahrenes Mitglied
Hi!

Also,

1. Mit Hilfe folgender Schleife les ich alle Einträge aus meiner Datenbank in das Gästebuch:

PHP:
for($de = 1; $de <= $anzahl[0]; $de++) { $tmp = @mysql_query("SELECT * FROM lw_guest WHERE id='$de'");
$ae = @mysql_fetch_array($tmp); echo $ae[name]; }

anzahl[0] ist die gesammtanzahl der einträge, auslesen tu cih nach der id die $de entspricht. allerdings kommt der erste eintrag vorne und die anderen drunter. wie kann cih das, ohne den aufbau groß zu ändern andersrum machen?? danke


2. Mein Gästebuch soll natürlich eine Badwordlist haben! z.B. das word "arsc0h" (die null ist jetzt wegen der badwordlist dieses forums ;)) soll dur genau "*****" (5 sterne) ersetzt werden. ein anderes schimpfwort mit 7 zeichen soll auch durch 7 zeichen ersetzt werde. wie stell cih das an? danke


3. genauso solls auch mit den smieleys sein. wie stell ich das an?

Vielen Dank für antworten

riddler2kone
 
PHP:
$msg=str_replace("arsc0h","*****",$msg);
$msg=str_replace("scheiss0e","*******",$msg);
$msg=str_replace(":}","<img src=\"smiley.gif\" border=\"0\">",$msg);
 
Dein erstes Problem lässt sich so lösen:
PHP:
for($de = $anzahl[0]; $de <= 0; $de--)

Ich würde aber an deiner Stelle nicht immer einen Query schicken, sonder das Problem mit "einer" Anweisung machen.
PHP:
$bla =mysql_query("SELECT * FROM lw_guest order by id desc");
Jetzt hast du in $bla alle Datensätze, die du mit einer Schleife per mysql_fetch_array ausgeben kannst. Deine Datensätze sind in umgekehrter Reihenfolge, der id nach, geordnet.
 
-

PHP:
$bla =mysql_query("SELECT * FROM lw_guest order by id desc");
while( $row = mysql_fetch_array( $bla ) ) {
 echo "$row[id]<br>";
 echo "$row[text]<br>";
 echo "$row[bla]<br>";
 }
 
moin

mal ne frage: wie macht man das am besten mit der badword-liste? finde ja die idee, bei jedem mit ereg_replace dahinterzugehen, nicht gerade so berauschend.;) ich stelle mir da drei möglichkeiten vor:

1. mysql-tabelle
2. text-datei (ist wahrscheinlich am handlichsten)
3. array (in der datei drin definiert)

kann mir jetzt einer die vorteile von der einen/anderen methode nennen und warum man was auf keinen fall machen sollte? danke schonmal.

ich persönlich tendiere ja am ehesten dazu, die zweite methode zu nehmen, eben aus gründen der handlichkeit. denn: hat man den code erstmal, ist man froh über die bequeme handhabung. das kann ich net oft genug betonen.:p
 
Original geschrieben von SilentWarrior
moin

mal ne frage: wie macht man das am besten mit der badword-liste? finde ja die idee, bei jedem mit ereg_replace dahinterzugehen, nicht gerade so berauschend.;)

wieso? schreib dir doch dafür ne kleine funktion ;)

z.b.
PHP:
function badwordList($strMsg) {

     $strMsg = str_replace("arsc0h","*****",$strMsg);
     $strMsg = str_replace("scheiss0e","*******",$strMsg);     
     $strMsg = str_replace(":}","<img src=\"smiley.gif\" border=\"0\">",$strMsg);

     return $strMsg;
}
so, und alles, was du jetzt filtern lassen möchtest übergibst du an die funktion:
PHP:
$strVar1 = badwordList($strVar1);
$strVar2 = badwordList($strVar2);
$strVar3 = badwordList($strVar3);
was is denn jetzt daran nich so berauschend? ;)
 
Nein, ich würde das per mySQL-Tabelle machen, dann muss man nicht immer im Code rumfuschen wenn man was ändern/hinzufügen/etc will:
PHP:
<?php
function badword($str) {
    global $link;
    $sql = mysql_query("SELECT word FROM badwords", $link);
    while($row = mysql_fetch_array($sql)) {
        $rep = "";
        for($i = 0; $i < strlen($row['word']); $i++) {
            $rep.="*";
        }
        $str = str_replace($row['word'],$rep,$str);
    }
    return $str;
}
?>

Oder so :D
 
chino, das problem is: mal angenommen, dir fällt nach all der programmiererei noch ein, dass die variable für den zu überprüfenden text doch besser anders heissen sollte - dann kannst du im schlimmsten fall das zeug dreihundert mal verbessern. (is jetzt n blödes beispiel, ich weiss)

mhm... mysql geht. aber ich hab trotzdem ne textdatei. hier der code:
PHP:
$badword = "false";
    $array_badwords = file("badwords.txt");
    for($b = 0; $b < sizeof($array_badwords); $b++)
      $word = chop($array_badwords[$b];
      if(eregi($word,$message))
        $badword = "true";
sobald $badword true ist, wird weiter unten ein javascript dem user sagen, er soll sich doch bitte gewählter ausdrücken.:p

ups... da fällt mir grad auf, das ist nicht mehr zensur bei der ausgabe, das verhindert überhaupt schon das reinschreiben von solchen schweinereien. find ich irgendwie besser... zu viele sterne sind auch nicht gut.:-)
 
Zuletzt bearbeitet:
mir sind noch zwei fragen auf die nacht eingefallen. dann kann ich beruhigt schlafen gehen. ;)

1. wenn ich ne funktion so mache:

if(bedingung and bedingung or bedingung)

wird das dann so interpretiert, dass:

a) die ersten beiden oder die zweite ok sein muss

oder

b) die erste und eine der beiden letzten ok sein muss

???

und dann nochwas... grad blackout. wenn ich mit eregi abchecken will, ob in nem string nen punkt vorkommt muss ich den maskieren? also eregi("\.",$string) oder nur eregi(".",$string)??

thx schonmal! man sieht sich!;)
 
Zurück