NetVision-Technik

NetVision-Technik (http://www.netvision-technik.de/forum/index.php)
-   Off-Topic (http://www.netvision-technik.de/forum/forumdisplay.php?f=44)
-   -   NFO Problem (http://www.netvision-technik.de/forum/showthread.php?t=6236)

Entity 02.04.2011 21:41

NFO Problem
 
Hab folgendes Problem mit dem NFO Zeug

Obwohl ich keine NFO hochlade beim Uppen, erzeugt er trotzdem ein leeres bild so das ziemlich viel Datenmüll angesammelt wird.


Normal müsste es so, das wenn ne NFO geuppt wird muss er ein Bild erzeugen ansonsten nicht


Dieses müsste dafür zuständig sein

PHP-Code:

// Create NFO image
tr_msg("NFO-Bild erzeugen");
if (
gen_nfo_pic($nfo$GLOBALS["TORRENTNFO_DIR"]."/nfo-$id.png") == 0)
    
tr_status("err");
else
    
tr_status("ok"); 

habt ihr evt rat? komme nicht drauf wie ich das lösen soll

Schwamm 02.04.2011 21:51

jaaa aus welche phph hast du die denn wenn ich mal fragen darf
weil ich hatte auch so mal eine kleine Problem

Entity 02.04.2011 21:52

aus der takeupload natürlich :D

Schwamm 02.04.2011 22:04

also ich habe bei mir drin stehen



// Create NFO image
tr_msg("NFO-Bild erzeugen");
if (gen_nfo_pic($nfo, $GLOBALS["BITBUCKET_DIR"]."/nfo-$id.png") == 0)

tr_status("err");
else

tr_status("ok");

Entity 02.04.2011 22:05

das ist das gleiche wie meins

Schwamm 02.04.2011 22:09

nein das stimmt nicht dein ist


// Create NFO image
tr_msg("NFO-Bild erzeugen");
if (
gen_nfo_pic($nfo, $GLOBALS["TORRENTNFO_DIR"]."/nfo-$id.png") == 0)
tr_status("err");
else
tr_status("ok");



und meins ist

/ Create NFO image
tr_msg("NFO-Bild erzeugen");
if (gen_nfo_pic($nfo, $GLOBALS["BITBUCKET_DIR"]."/nfo-$id.png") == 0)

tr_status("err");
else

tr_status("ok");

also du hast ["TORRENTNFO_DIR"] drin und ich

GLOBALS["BITBUCKET_DIR"]

Entity 02.04.2011 22:10

das hat aber nix damit zutuen meine bilder werden nur woanders gelagert als wie bei dir im Bitbucket

Schwamm 02.04.2011 22:11

jaaa also denn hast du jaaa bis jetzt alles richtig

Entity 02.04.2011 22:11

les dir mal mein ersten post durch

Schwamm 02.04.2011 22:19

also jaaa habe ich jetzt grade !!!!
aber es musss denn mehr sein

june 02.04.2011 22:22

Das sieht für mich so aus, als ob das Bild anhand des Codes immer erzeugt wird, mach einfach ne Überprüfung ob ne NFO hochgeladen wurde außenrum

Stifler 02.04.2011 22:38

Äm wenn ich mir die gen_nfo_pic so ansehe gibt die nur ein false zurück wenn bei imagepng ein Fehler auftritt!
Erstellt wird es trotzdem auch wenn es nur ein 0 Byte Bild ist!

Es gibt viele Möglichkeiten Festzustellen ob eine NFO hochgeladen wurde

1.
PHP-Code:

if($_FILES['nfo']['size'] > 0)
//ja
else
//nein 

2.
PHP-Code:

if(trim($nfo) != "")
//ja
else
//nein 

3.
PHP-Code:

if(trim($_FILES['nfo']['name']) != "")
//ja
else
//nein 

am besten du holst dir aus der $_FILES die Error
PHP-Code:

$nfo_error $_FILES['nfo']['error']; 

und führst eine neue Überprüfung durch!

und zwar
4.
PHP-Code:

if(!$nfo_error) {
gen_nfo_pic($nfo$GLOBALS["TORRENTNFO_DIR"]."/nfo-$id.png");
tr_status("ok");
} else {
tr_status("err");


damit ist die Sache erledigt!

Entity 02.04.2011 22:41

aber das problem besteht dann weiterhin so

Stifler 02.04.2011 22:53

Schwachsinn.

Wenn wirklich keine NFO oder sonst was im nfo input Feld angeben wird ist die size 0, der Name leer, der Inhalt leer und der Error true!

mit all diesen Abfragen ist es unmöglich dass eine NFO erstellt werden kann!

Also entweder du gibst eine an und merkst es nicht oder deine Variablen stimmen nicht!

Entity 02.04.2011 22:56

sorry stimmt habs hinbekommen man sollte auch die php abspeichern :D

danke dir

Stifler 02.04.2011 23:04

Und wennst ganz pfiffig sein willst machst folgendes:

PHP-Code:

$allowed_nfos = array("nfo");
$nfo $_FILES['nfo'];

if(
trim($nfo['name']) != "" && trim($nfo['tmp_name']) != "" && $nfo['size']) > && in_array(end(explode("."strtolower($nfo['name']))), $allowed_nfos)) { 
gen_nfo_pic($nfo['tmp_name'], $GLOBALS["TORRENTNFO_DIR"]."/nfo-$id.png");
tr_status("ok");
} else {
tr_status("err");



tantetoni2 03.04.2011 10:46

Zitat:

Zitat von Stifler (Beitrag 68331)
Schwachsinn.

Wenn wirklich keine NFO oder sonst was im nfo input Feld angeben wird ist die size 0, der Name leer, der Inhalt leer und der Error true!

mit all diesen Abfragen ist es unmöglich dass eine NFO erstellt werden kann!

Also entweder du gibst eine an und merkst es nicht oder deine Variablen stimmen nicht!

falsch wenn kein bild angegeben ist size nicht 0 sondern null also nix nur der error hat die nummer 4
und error ist immer gegeben

heist das funzt nicht
PHP-Code:

$nfo_error $_FILES['nfo']['error']; 

if(!
$nfo_error) {... 

siehe
http://www.php.net/manual/en/feature...oad.errors.php

entity machs mal so

PHP-Code:

$allowdExtensions 'nfo|txt';
if( !empty( 
$_FILES['nfo'] ) && $_FILES['nfo']['error'] < && 
    
preg_match'/(' $allowdExtensions ')/i'strrchr $_FILES['nfo']['name'], '.' ) ) { 
    if ( 
gen_nfo_pic$_FILES['nfo']['tmp_name'], $GLOBALS['TORRENTNFO_DIR'] . '/nfo-' $id '.png' ) ) ) {
        
tr_status'ok' );
    }
    else {
        
tr_status'err' );
        if ( 
file_exists$GLOBALS['TORRENTNFO_DIR'] . '/nfo-' $id '.png' ) ) {
            
unlink$GLOBALS['TORRENTNFO_DIR'] . '/nfo-' $id '.png' );
        }
    }

else {
    
tr_status'err' );



gotthummer 03.04.2011 11:43

Ich würd den ganzen nfo Bild kram ausbaun ist doch eh unnütz

Entity 03.04.2011 11:50

TT deins hat in der Zeile nen Parse error: syntax error, unexpected '{' in
PHP-Code:

    preg_match'/(' $allowdExtensions ')/i'strrchr $_FILES['nfo']['name'], '.' ) ) { 

hab noch nicht geschaut wo bin gerade erst wach :D muss erst mal wach werden ^^

@GH mein Team wünscht sich das so dann sollen sie es so bekommen. ich halte auch nicht viel von NFO

tantetoni2 03.04.2011 11:57

entity dann mach vor der { eine ) dann stimmts wieder hab ich übersehen ;)

Entity 03.04.2011 12:05

OK funktioniert soweit nur bei deiner funktion macht er nicht das richtige NFO Bild

bei deinem hab ich nur ein Bild mit dem Text /tmp/php9loALc

tantetoni2 03.04.2011 12:23

naja ist ja auch klar der erste parameter der funktion gen_nfo_pic ist ja auch der text, sorry dann so

PHP-Code:

if( !empty( $_FILES['nfo'] ) && $_FILES['nfo']['error'] < && 
    
preg_match'/(' $allowdExtensions ')/i'strrchr $_FILES['nfo']['name'], '.' ) ) ) { 
    
$nfo str_replace"\x0d\x0d\x0a""\x0d\x0a"file_get_contents$_FILES['nfo']['tmp_name'] ) );
    if ( 
gen_nfo_pic$nfo$GLOBALS['TORRENTNFO_DIR'] . '/nfo-' $id '.png' ) )  {
        
tr_status'ok' );
    }
    else {
        
tr_status'err' );
        if ( 
file_exists$GLOBALS['TORRENTNFO_DIR'] . '/nfo-' $id '.png' ) ) {
            
unlink$GLOBALS['TORRENTNFO_DIR'] . '/nfo-' $id '.png' );
        }
    }

else {
    
tr_status'err' );



Entity 03.04.2011 12:31

Ok Super funktioniert nun. Deins ist übersichtlicher wie meins :-)

vor der { am ende nur noch ne ) wegnehmen dann passt es
PHP-Code:

    if ( gen_nfo_pic$nfo$GLOBALS['TORRENTNFO_DIR'] . '/nfo-' $id '.png' ) )  { 

danke Dir tantetoni2

Stifler 03.04.2011 13:52

PHP-Code:

if(!$nfo_error) {... 

reicht absolut für seine und andere Bedürfnisse aus!
weil 0 -> "Value: 0; There is no error, the file uploaded with success."
und alles was über 0 geht ist true!! 0 ist false!
preg_match bei so einer überprüfung zu verwenden halte ich für unsinn.. da ist das array + in_array wesentlich schneller!

Aber jeder wie er glaubt

tantetoni2 03.04.2011 14:40

na dann mach mal ein test, in_array ist ne mächtige performence bremse prüfe mal if ( 0 === false )

vielleicht solltest du dich nochmal mit opperanden und Operatoren beschäftigen

Stifler 03.04.2011 14:54

PHP-Code:

if(in_array('html',array('htm','html','shtm','shtml'))) 

und

PHP-Code:

if(preg_match('/^.*htm.*$/','html')) 

for Schleife mit $i<=6000

Fazit in_array ist ca. 40% schneller!

preg_match() = 0.1394340000
in_array() = 0.1061300000

Würde dir mal Gut tun nicht immer aus Jux und Tollerei den Obergscheiten raushängen zu lassen und hin und wider mal zur Kenntnis nehmen dass ein anderer auch Recht hat!
Das macht zwar Eindruck bei den Anfängern ist aber extremst ärgerlich bei Leuten die sich auch auskennen!

Das RegEx ne langsame Gurcke sollte jeder wissen und mit Arrays zu Arbeiten wo man kann ist auch nicht verkehrt!

tantetoni2 03.04.2011 15:49

ämm ich bin von deinen
PHP-Code:

end(explode("."strtolower($nfo['name']))) 

ausgegangen, allerdings kommt das auch immer auf die situation an, viele wissen nich mal das in_array sämtliche sachen wie eine sting vergleich macht, aber einzeln wie dein beispiel oben ist es natürlich schneller.
es gibt viele situationen wo preg_match schneller ist als in_array wenn ich es finde kann ich nachher mal ein sehr gute bespiel posten

PHP-Code:

function microtime_float() {
   list(
$usec$sec) = explode(" "microtime());
   return ((float)
$usec + (float)$sec);
}

$ext strrchr 'abcs.shtml''.' );
echo 
'extension: ' $ext;

$s microtime_float();
for ( 
$i 0$i 2000; ++$i ) {
    if( 
in_arrayend(explode("."strtolower('abcs.shtml'))) , array('htm','html','shtm','shtml') ) )
       continue;
}
echo 
'<br /><br />' . (microtime_float()-$s);


$s microtime_float();
for ( 
$i 0$i 2000; ++$i ) {
    if( 
preg_match'/s?html?/i' ,strrchr 'abcs.shtml''.' ) ) ) 
        continue;
}
echo 
'<br /><br />' . (microtime_float()-$s); 

wenn du die funktionen für die dateiendungen nicht in die schleife packen würdst wäre in_array wieder schneller es kommt auf die situation drauf an

was natürlich noch besser ist ist folgendes

PHP-Code:

$extensions array_flip( array( '.html','.htm''.shtml''.shtm' ) );
$ext strrchr 'abcs.shtml''.' );
echo 
'extension: ' $ext;

$s microtime_float();
for ( 
$i 0$i 2000; ++$i ) {
    if( isset( 
$extensions[$ext] ) )
       continue;
}
echo 
'<br /><br />' . (microtime_float()-$s); 


Stifler 03.04.2011 16:08

So oder so nicht alles schlecht reden was ich poste!!

TUT sein Dienst! &copy; by Zero

tantetoni2 03.04.2011 16:10

ich rede doch nicht alles schlecht, deine idee mit dem like was zb astrein, auch wenns nicht besonders abgesichert war, aber wenn du zb 20 erweiterungen in dem array hast ist es langsamer als das preg_match beispiel
PHP-Code:

function microtime_float() {
   list(
$usec$sec) = explode(" "microtime());
   return ((float)
$usec + (float)$sec);
}

$ext end(explode("."strtolower('abcs.shtml')));
$s   microtime_float();

for ( 
$i 0$i 2000; ++$i ) {
    if( 
in_array(  $ex, array('htm','html','shtm','shtml''txt''doc','zip','rar','rtf''php') ) )
       continue;
}
echo 
'<br /><br />in_array: ' . (microtime_float()-$s);

$ext strrchr 'abcs.shtml''.' );
$s   microtime_float();

for ( 
$i 0$i 2000; ++$i ) {
    if( 
preg_match'/s?html?|txt|doc|zip|rar|rtf|php/i' ,$ext ) ) 
        continue;
}
echo 
'<br /><br />preg_match: ' . (microtime_float()-$s); 

die masse machts ;)

Stifler 03.04.2011 16:32

WIe du sagst es kommt auf den Zweck an aber ich finde es ist nicht zu viel verlangt wenn eine nfo auf die Endung .nfo hat und deshalb wäre es auch nur 1 Endung zum überprüfen im Array.
Man könnte auch den Mime Type überprüfen text/plain ich mach das z.B bei der Torrent Datei!

PHP-Code:

if(!isset($dict) || $ftype != "application/x-bittorrent") {
    
torrent_error("Das ist keine gültige Torrent-Datei!");




Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 Uhr.

Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2025, vBulletin Solutions, Inc.