Sotierung der Ausgabe Bestimmung Badwords geht nicht

strex

Erfahrenes Mitglied
Hi Leute ich hab schon wieder ein Problem und brauch euere Hilfe.

Das unten gepostet script sucht aus einer Datenbank die benötigten Files aus und trägt diese in eine weitereTabelle. Leider funktioniert die Aussortierung der Badwords nicht so ganz. Er trägt trozdem Files mit beinhalten Badwords in die Tabelle. Und ich finde den Fehler nicht. Wenn einer von euch mir helfen könnte.

Danke schon mal für eure Hilfe!

Grüße strex

PHP:
<?
include("dbconnect.php");

        //Keywords die gesucht werden sollen
		$keyWords = array("Tuerkisch_fuer_Anfaenger_","GSG_9","The_Unit_Eine_Frage_der_Ehre","Stromberg","Navy_CIS","Star_Trek","Andromeda","C_S_I","Buffy_Im_Bann_der_Daemonen", "Profiler","stern_TV","Stargate","smallville","Immer_wieder_Jim","Still_Standing","Akte_X_","Seven_Days_Das_Tor_zur_Zeit", "Bully","Lost","Criminal_Intent","King_of_Queens","Queens","King_of","Monk","Dr__House","South_Park","TV_total","Alarm_fuer_Cobra_11","Law_und_Order_New_York","Naruto","20-00","20-15","20-30","20-45","21-00","21-15","21-30","21-45","22-00","22-15","HQ","CSI","cnn","Weeds_Kleine_Deals_unter_Nachbarn_","simpsons","Deutschland_sucht_den_Superstar_","Sportschau","das_aktuelle_sportstudio","Numb3rs_Die_Logik_des_Verbrechens_");

        //Badname, die nicht herruntergeladen werden sollen
        $badWords = array("mp4","comedycentral","zdfdoku","mdr","ardeinsplus","wdr","terranova","rbb","eurosport","sw3","viva","giga","Oh_Moses","ardeinsfestival","kika","Making_of","9live","News_","Quiz_Taxi_","ndr","mtv","bralpha","comedycentral","hr3","zdfdoku","phoenix","kika","9live","terranova","mp4","rbb","dsf","3sat","bay3","nickelodeon","n24");


$timestamp = time();
$timestamp = ($timestamp - 86400);

$sql = mysql_query("SELECT DISTINCT('otrkey') `id`, `otrkey`, `dir`, `pfad`, `size`, `time`, `status` FROM `otrlist` WHERE `status` = 0 AND `time` > $timestamp ORDER BY `time` DESC");
while ($data = mysql_fetch_row($sql)) {
       $id = $data[0];
	   $otrkey = $data[1];	
	   $dir = $data[2];	
	   $pfad = $data[3];
	   $size = $data[4];		
	   $time = date("d.m.Y - H:i",$data[5]);
	   $status = $data[6];
	   
	   foreach($keyWords as $keyWord){
	   if(stristr($otrkey, $keyWord)){
	 
	   foreach($badWords as $badWord){
	   if(!stristr($otrkey, $badWord)){
	     $sql3 = mysql_query("SELECT otrkey FROM `uploads` WHERE `otrkey` = '$otrkey' LIMIT 1");
         $file_check = mysql_num_rows($sql3);
		 
	       if($file_check == 0){
	          $update12 = "INSERT INTO uploads (`otrkey`, `pfad`, `size`, `time`) VALUES ('".$otrkey."','".$pfad."','".$size."','".$data[5]."')";
              $slott22 = mysql_query($update12, $DatabasePointer);
	   
	          $sql2 = mysql_query("UPDATE `otrlist` SET `status` = '4' WHERE `otrkey` = '$otrkey'");	
	    } 
	   }	  
     }
	} 
   }
  } 
  
?>
 
foreach($badWords as $badWord){


Mal angenommen, in $otrkey steht "mp4" drinnen.

Du gehst nun alle Elemente von $badWords durch, und vergleichst.
Beim ersten wird das $badword gefunden, beim 2. aber schon nicht mehr, da dort "comedycentral" gesucht wird.
Ich hoffe, du verstehst, was ich sagen will :-(

Staddessen erspare dir und dem Skript die Schleife, und prüfe alles in einem Rutsch:
PHP:
if(!preg_match('#('.implode('|',$badWords).')#i',$otrkey))
  {
    //Und weiter gehts 
  }
 
Danke, jetzt klingelt es bei mir...Und vielen dank für deine Hilfe Hat wunderbar geklappt!

Grüße strex
 
Zurück