ilch Forum » Allgemein » HTML, PHP, SQL,... » Upload Formular mit Fortschrittsanzeige

Geschlossen
  1. #1
    User Pic
    ChrisWolf Mitglied
    Registriert seit
    05.11.2014
    Beiträge
    6
    Beitragswertungen
    0 Beitragspunkte
    Hallo liebe Mitglieder,

    ich habe im Internet nun nach längerer Zeit ein jQuery Script gefunden, welches es ermöglicht, einen Fortschrittsbalken für ein Upload Formular anzuzeigen.

    Nun habe ich das original PHP Upload Script von ilch 1.0.5 archiviert und mir ein neues geschrieben, in welchem ich etwas flexibler arbeiten kann. Im Grunde funktioniert auch alles, bis auf die Tatsache, dass nach dem Upload die komplette Seite als Resultat eingebunden wird.

    Wie sollte das ganze funktionieren?

    Es gibt ein Multifile Upload Formular, in welchem man die gewünschten Dateien von seinem Rechner/Smartphone auswählt. Nachdem auswählen, drückt man nur noch auf den Hochladen Button, womit die Fortschrittsanzeige aktiviert wird und von 0% auf 100% hochzählt. Nachdem die Dateien angekommen sind, soll nun nur noch ein Resultat ausgegeben werden, dass Datei xyz erfolgreich hochgeladen wurden.

    Dies funktioniert so auch, nur dass das Resultat nicht nur die Meldungen anzeigt, sondern die komplette Seite wieder einbindet. Es sieht also sehr danach aus, als ob hier wieder header gesendet werden, obwohl dies nicht passieren soll.

    Nun zum Code:

    upload.php
    <?php 
    
    defined ('main') or die ( 'no direct access' );
    defined ('admin') or die ( 'only admin access' );
    
    // Upload Ordner nach Dateitypen sortiert
    $main_dir = 'include/downs/public-upload/';
    $files = $main_dir.'files/';
    $images = $main_dir.'images/';
    $media = $main_dir.'media/';
    $video = $main_dir.'video/';
    
    // Dateiendungen
    $files_ext = array('apk','exe','doc','docx','docm','gadget','html','ini','pdf','php','rar','sh','txt','xlsx','zip');
    $images_ext = array('gif','jpg','JPG','jpe','jpeg','JPEG','png','PNG');
    $media_ext = array('mp3','ogg','wav');
    $video_ext = array('avi','mp4','3gp');
    
    $up = ( empty($_REQUEST['up']) ? '' : $_REQUEST['up'] );
    
    switch ($_REQUEST['up']) {
    	// Standard Upload Seite (ohne Formular)
    	default :
    		$tpl = new tpl ( 'admin/pupload/pupload_main' );
    		$tpl->out(0);
    	break;
    
    	// Upload Formular
    	case 'upload' :
    		$tpl = new tpl ( 'admin/pupload/pupload_upload' );
    		$msg = '';
    		// Schreibrechte des Upload Ordners überprüfen
    		if (!is_writeable ('include/downs/public-upload')) {
                    $msg = '<b>Bevor du hier eine Datei hochladen/verwalten kannst muss der Ordner include/downs/<b>public-upload</b>/ erstellt werden und er muss Schreibrechte ( chmod 777 ) erhalten !!! Wenn das geschehen ist einfach nochmal hier auf aktualisieren klicken</b>';
                	}
    		// Jetzt kann es losgehen
    			if ($_SERVER['REQUEST_METHOD'] == 'POST' and isset($_FILES['files']))
    			{
      				// Loop durch alle Dateien
      				foreach ( $_FILES['files']['name'] as $i => $name )
      				{
    					$pathinfo = pathinfo($name);
    
    					// Wenn die Datei nicht hochgeladen werden konnte, dann ueberspringen
        					if ( !is_uploaded_file($_FILES['files']['tmp_name'][$i]) )
          					continue;
    					
    					// Jetzt werden die Dateien in den dafuer vorgesehenen Ordner verschoben
    					// IMAGES
    					if (in_array($pathinfo['extension'], $images_ext)) {
    
    						if ( move_uploaded_file($_FILES['files']['tmp_name'][$i], $images . $name) )
    						{
    							$msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#00FF00">erfolgreich hochgeladen</font><br />';
                    				} else {
                        					$msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#FF0000">nicht erfolgreich hochgeladen</font><br />';
                    				}
    					// FILES
    					} else if (in_array($pathinfo['extension'], $files_ext)) {
    
    						if ( move_uploaded_file($_FILES['files']['tmp_name'][$i], $files . $name) )
    						{
    							$msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#00FF00">erfolgreich hochgeladen</font><br />';
                    				} else {
                        					$msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#FF0000">nicht erfolgreich hochgeladen</font><br />';
                    				}
    					// VIDEOS
    					} else if (in_array($pathinfo['extension'], $video_ext)) {
    
    						if ( move_uploaded_file($_FILES['files']['tmp_name'][$i], $video . $name) )
    						{
    							$msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#00FF00">erfolgreich hochgeladen</font><br />';
                    				} else {
                        					$msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#FF0000">nicht erfolgreich hochgeladen</font><br />';
                    				}					
    					// MEDIA
    					} else if (in_array($pathinfo['extension'], $media_ext)) {
    
    						if ( move_uploaded_file($_FILES['files']['tmp_name'][$i], $media . $name) )
    						{
    							$msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#00FF00">erfolgreich hochgeladen</font><br />';
                    				} else {
                        					$msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#FF0000">nicht erfolgreich hochgeladen</font><br />';
                    				}
    					} else {
    
    						$msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#FF0000">Tr&auml;gt eine nicht unterst&uuml;tzte Endung</font><br />';
    					}
    				}
    			}
    		
    		// Folgendes ist auskommentiert, da sonst das Resultat doppelt ausgegeben wird
                    //$tpl->set_ar_out(array('msg' => $msg), 0);
    
                    // Template Ende
    		$tpl->out(1);
    		echo $msg;
    	break;
    	
    	// Ordner Einstellungen
    	case 'settings' :
    		$tpl = new tpl ( 'admin/pupload/pupload_settings' );
    		$tpl->out(0);
    	break;
    }
    
    ?>


    pupload_upload.htm
    <div id="main">
    	<form id="pupload" name="pupload" action="?ftx=pupload&up=upload" method="POST" enctype="multipart/form-data">
    		<fieldset class="tabulated">
    			<table id="down" class="bbcode_table" cellspacing="1">
    				<thead>
    					<tr class="Cnorm">
    						<td><input type="file" name="files[]" multiple="multiple" id="files"></td>
    					</tr>
    				</thead>
    				<tbody>
    					<tr class="Cmite">
    						<td><input id="submit" class="button1" type="submit" value="Hochladen"></td>
    					</tr>
    				</tbody>
    			</table>
    		</fieldset>
    	</form>
    	<div class="progress">  
         		<div class="bar"></div>  
         		<div class="percent">0%</div>  
       	</div>
    	<div id="status"></div>
    </div><script type="text/javascript" src="include/includes/js/pupload.js"></script>


    pupload.js (jQuery Script)
    (function() {
    "use strict";
    
    var bar = $('.bar');
    var percent = $('.percent');
    var status = $('#status');
       
    $('#pupload').ajaxForm({
        beforeSend: function() {
            status.empty();
            var percentVal = '0%';
            bar.width(percentVal);
            percent.html(percentVal);
        },
        uploadProgress: function(event, position, total, percentComplete) {
            var percentVal = percentComplete + '%';
            bar.width(percentVal);
            percent.html(percentVal);
        },
        success: function(data, statusText, xhr) {
            var percentVal = '100%';
            bar.width(percentVal);
            percent.html(percentVal);
            status.html(xhr.responseText);
        },
        error: function(xhr, statusText, err) {
            status.html(err || statusText);
        }
    }); 
    
    })();


    Ich vermute mal, dass ich hier ein Problem mit dem Template und/oder das ganze mit dem {EXPLODE} noch nicht so richtig verstanden habe. Es könnte aber auch sein, dass ich einfach nur vor lauter Bäumen den Wald nicht sehe.

    Hat hier eventuell jemand einen Rat für mich, oder weiß mich in die richtige Richtung zu schupsen?

    Ich bin für jede Hilfe dankbar, die ich hier von den Kundigen bekommen kann.

    Grüße
    Chris


    verwendete ilch Version: 1.0.5
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    Weiss nicht ob du das jetzt hören willst aber du solltest umbedingt auf 1.1 updaten!!!
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    ChrisWolf Mitglied
    Registriert seit
    05.11.2014
    Beiträge
    6
    Beitragswertungen
    0 Beitragspunkte
    Ich gehe mal mit der Aussage mit und sage, ja weiß ich, jedoch wäre es dann wieder etwas mehr Arbeit, da ich doch recht viel angepasst habe und dies dann auf 1.1 anheben müsste zwinker

    Aber im Grunde hast du recht, aber dennoch ändert es wahrscheinlich nichts oder nur indirekt etwas an dem Problem, welches ich habe.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Problem ist, dass du einen XMLHttpRequest machst, aber dennoch das ganze Design und Co. mit ausgibst. Problem ist, dass er alles, was du in der PHP Datei ausgibst, als status.html(xhr.responseText); in status wieder einfügt. Also auch das Design.

    Ich weiß jetzt nicht genau wie das mit der Design-Ausgabe in ilch 1.0.5 geregelt ist, aber du musst halt prüfen, ob der aktuelle Request ein XHR ist und in diesem Fall eben nichts, was mit Design zu tun hat, ausgeben, sondern nur die Erfolgs- oder Fehlermeldung.

    Um herauszufinden, ob der aktuelle Request auch ein XMLHttpRequest ist, kannst du folgendes machen:
    if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest") {
        // Wenn XHR
    }


    Vielleicht guck ich nachher nochmal kurz in ilch 1.0.5 rein, absolut keine Ahnung wie es dort mit dem Design gelöst ist.


    Zuletzt modifiziert von dastiii am 06.11.2014 - 15:41:49
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    ChrisWolf Mitglied
    Registriert seit
    05.11.2014
    Beiträge
    6
    Beitragswertungen
    0 Beitragspunkte
    Hi dastiii,

    vielen Dank für den Hinweis/Tipp, denn der hat mir die Sicht auf die Bäume etwas näher gebracht. Ich habe mich gestern Abend noch einmal ganz kurz dran gesetzt und das IF Statement angewendet und dabei herausgefunden, dass es tatsächlich eine "XMLHttpRequest" ist, welche als Resultat ausgegeben wird.

    Dies erklärt natürlich auch, warum das komplette Design mit eingebunden wird. Ich werde nun mal schauen, dass ich genau dieses von Dir genannte IF Statement nehme und dieses in mein Upload-Script einbaue. Gestern auf die schnelle ist es mir leider nicht so wirklich gelungen.

    Wenn das alles passt, werde ich auch höchstwahrscheinlich anfangen meine sämtlichen Anpassungen auf 1.1 anzuheben.
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Also in 1.0.5 wird das Design bereits in der admin.php im root-Verzeichnis ausgegeben, d.h. man müsste es dort beispielsweise schon nur ausgeben lassen, wenn es sich nicht um einen XHR handelt:
    <?php 
    #   Copyright by: Manuel Staechele
    #   Support: www.ilch.de
    
    
    session_name('sid');
    session_start();
    
    define ( 'main' , TRUE );
    define ( 'admin' , TRUE );
    
    require_once ('include/includes/config.php');
    require_once ('include/includes/lang/de.php');
    require_once ('include/includes/function/db/mysql.php');
    require_once ('include/includes/class/template.php');
    require_once ('include/includes/class/design.php');
    require_once ('include/includes/function.php');
    #require_once ('include/includes/dbug.php');
    
    db_connect();
    identification();
    $allgAr = getAllgAr ();
    
    if ( has_admin_right() ) {
    	$m = get_admin_m();
    	$um = ( empty($_REQUEST['um']) ? '' : $_REQUEST['um'] );
    	if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest") {
    	    // Falls dies einen AJAX Request ist, sollte kein Design ausgegeben werden,
    	    // sondern nur die entsprechende Antwort von der betroffenen PHP-Datei
    	    require_once ('include/admin/'.$m.'.php');
    	} else {
    		// In allen anderen Fällen soll natürlich weiterhin das Design mit ausgegeben werden.
    		$design = new design ( 'Admins Area', 'Admins Area', 2 );
    		$design->header();
    	  	require_once ('include/admin/'.$m.'.php');
    		$design->footer();
    	}
    }
    db_close();
    ?>

    Kannst es mal hiermit versuchen, habe es nur mal fix umgeschrieben, weiß nicht ob ich eventuell etwas nicht bedacht habe:
    <?php 
     
    defined ('main') or die ( 'no direct access' );
    defined ('admin') or die ( 'only admin access' );
     
    // Upload Ordner nach Dateitypen sortiert
    $main_dir = 'include/downs/public-upload/';
    $files = $main_dir.'files/';
    $images = $main_dir.'images/';
    $media = $main_dir.'media/';
    $video = $main_dir.'video/';
     
    // Dateiendungen
    $files_ext = array('apk','exe','doc','docx','docm','gadget','html','ini','pdf','php','rar','sh','txt','xlsx','zip');
    $images_ext = array('gif','jpg','JPG','jpe','jpeg','JPEG','png','PNG');
    $media_ext = array('mp3','ogg','wav');
    $video_ext = array('avi','mp4','3gp');
     
    $up = ( empty($_REQUEST['up']) ? '' : $_REQUEST['up'] );
     
    switch ($_REQUEST['up']) {
        // Standard Upload Seite (ohne Formular)
        default :
            $tpl = new tpl ( 'admin/pupload/pupload_main' );
            $tpl->out(0);
        break;
     
        // Upload Formular
        case 'upload' :
            $tpl = new tpl ( 'admin/pupload/pupload_upload' );
            $msg = '';
        
            // Schreibrechte des Upload Ordners überprüfen
            if (!is_writeable ('include/downs/public-upload')) {
                $msg = '<b>Bevor du hier eine Datei hochladen/verwalten kannst muss der Ordner include/downs/<b>public-upload</b>/ erstellt werden und er muss Schreibrechte ( chmod 777 ) erhalten !!! Wenn das geschehen ist einfach nochmal hier auf aktualisieren klicken</b>';
            }
        
            // Jetzt kann es losgehen
            if ($_SERVER['REQUEST_METHOD'] == 'POST' and isset($_FILES['files']))
            {
                // Loop durch alle Dateien
                foreach ( $_FILES['files']['name'] as $i => $name )
                {
                    $pathinfo = pathinfo($name);
    
                    // Wenn die Datei nicht hochgeladen werden konnte, dann ueberspringen
                    if ( !is_uploaded_file($_FILES['files']['tmp_name'][$i]) )
                        continue;
    
                    // Jetzt werden die Dateien in den dafuer vorgesehenen Ordner verschoben
                    if (in_array($pathinfo['extension'], $images_ext)) {
                        // IMAGES
                        if ( move_uploaded_file($_FILES['files']['tmp_name'][$i], $images . $name) )
                        {
                            $msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#00FF00">erfolgreich hochgeladen</font><br />';
                        } else {
                            $msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#FF0000">nicht erfolgreich hochgeladen</font><br />';
                        }
                    } else if (in_array($pathinfo['extension'], $files_ext)) {
                        // FILES
                        if ( move_uploaded_file($_FILES['files']['tmp_name'][$i], $files . $name) )
                        {
                            $msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#00FF00">erfolgreich hochgeladen</font><br />';
                        } else {
                            $msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#FF0000">nicht erfolgreich hochgeladen</font><br />';
                        }
                    } else if (in_array($pathinfo['extension'], $video_ext)) {
                        // VIDEOS
                        if ( move_uploaded_file($_FILES['files']['tmp_name'][$i], $video . $name) )
                        {
                            $msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#00FF00">erfolgreich hochgeladen</font><br />';
                        } else {
                            $msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#FF0000">nicht erfolgreich hochgeladen</font><br />';
                        }                   
                    } else if (in_array($pathinfo['extension'], $media_ext)) {
                        // MEDIA
                        if ( move_uploaded_file($_FILES['files']['tmp_name'][$i], $media . $name) )
                        {
                            $msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#00FF00">erfolgreich hochgeladen</font><br />';
                        } else {
                            $msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#FF0000">nicht erfolgreich hochgeladen</font><br />';
                        }
                    } else {
                        $msg .= '<b>Datei ' .($i+1). ':</b> ' . $name . '&nbsp; (' . niceBytes($_FILES['files']['size'][$i]) . ' ) <font color="#FF0000">Tr&auml;gt eine nicht unterst&uuml;tzte Endung</font><br />';
                    }
                }
            }
            
            if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest") {
                echo $msg;
            } else {
                $tpl->set_ar_out(array('msg' => $msg), 0);
            }
        break;
         
        // Ordner Einstellungen
        case 'settings' :
            $tpl = new tpl ( 'admin/pupload/pupload_settings' );
            $tpl->out(0);
        break;
    }
     
    ?>
    1 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    ChrisWolf Mitglied
    Registriert seit
    05.11.2014
    Beiträge
    6
    Beitragswertungen
    0 Beitragspunkte
    Jetzt weiß ich auch, wo ich gestern Abend falsch gelegen habe! Die upload.php hatte ich bereits so wie du es beschrieben hattest, mir hatte natürlich noch die admin.php gefehlt.

    Nun funktioniert es genauso, wie ich es haben wollte!

    Vielen Dank für Deine Hilfe.

    Gruß
    Chris
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Du kamst mir jetzt ein wenig zuvor, also mache ich noch einmal fix einen neuen Beitrag:

    Vom Prinzip her würde ich sagen: "Nur" weil es ilch 1.1 gibt, brauchst du nicht auch unbedingt darauf upgraden. Problematisch wird es natürlich, weil 1.0.5 wohl mit den aktuellen PHP-Versionen nicht mehr funktionieren wird. Das gleiche Schicksal hat ja schließlich auch ilch 1.1 ereilt, was allerdings durch das Update P behoben wurde.

    Lange Rede kurzer Sinn: Wollte ilch 1.0.5 gerade kurz unter PHP 5.5.8 testen, aber das war leider ein Schuss in den Ofen. Daher: Aufpassen bei PHP Updates.

    Mit welcher PHP-Version läuft denn dein Server?


    Zuletzt modifiziert von dastiii am 07.11.2014 - 16:27:32
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    ChrisWolf Mitglied
    Registriert seit
    05.11.2014
    Beiträge
    6
    Beitragswertungen
    0 Beitragspunkte
    Aktuell habe ich noch PHP 5.4.34 drauf und bisher funktioniert noch alles. Die Frage aller Fragen wird allerdings sein, wie lange noch lächeln

    Wenn du schon mit 5.5.8 Probleme hast, dann müsste ich entweder das 1.0.5 weiter aufbohren, um es kompatibel zu machen oder aber auf 1.1P anheben und dann meine sämtlichen Änderungen dort einbauen.

    Im Grunde ist es aber rum wie num, da beides Arbeit verursacht.

    //EDIT: Da das CMS mir aber eh nur als Development Spielplatz dient und sich keine Nutzer drauf tummeln, kann ich mir da ruhig Zeit lassen und die Herausforderung in Ruhe angehen.


    Zuletzt modifiziert von ChrisWolf am 07.11.2014 - 16:36:09
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Tut mir Leid, ich hab Blödsinn erzählt.

    Lediglich die Installation funktioniert mit aktuellen MySQL-Versionen nicht mehr, da die Storage Engine nun mit ENGINE=MyISAM und nicht mehr TYPE=MyISAM festgelegt wird. Also nur kurz Find & Replace um das Problem zu lösen.

    Also kein Problem, lass dich nicht verrückt machen. Ansonsten sind eben seit PHP 5.5 die mysql_*-Funktionen als veraltet markiert und werden irgendwann in der Zukunft rausfliegen. Das Problem haben dann aber 1.1 und 1.0.5 gemeinsam.

    Nächstes mal schau ich vorher genauer nach. lächeln
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    ChrisWolf Mitglied
    Registriert seit
    05.11.2014
    Beiträge
    6
    Beitragswertungen
    0 Beitragspunkte
    Nobody is perfect zwinker Also ist nichts passiert!

    Bezüglich den Infos hatte ich schon etwas gelesen und auch schon mit Arbeitskollegen drüber diskutiert. Aber ich werde mir das am Wochenende mal etwas genauer anschauen, so bin ich dann gerüstet, falls mein Server sich für das PHP 5.5 entscheidet.

    Dir noch einmal vielen Dank für Deine Hilfe!
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten