Ich nochmal,
momentan sitze ich vor einem anderen Problem. Und zwar wird beim erstellen eines zip-Archives die Dateiendung .zip nicht mit erstellt. In der Datei von TWG geht das habe auch schon verglichen aber ich finde den Fehler auch nicht. Was noch komisch ist, das wenn man anhakt das man die Datei herunterladen möchte, wird diese trotzdem (ohne Dateiendung) ins Verzeichnis gespeichert. Das soll nicht sein nur wenn man den Haken entfernt. Bekomme auch keine Fehlermeldung.
Hier mal der Code:
fun_archiv.php von TWG:
[code]//------------------------------------------------------------------------------
function zip_items($dir,$name) {
require_once("./_lib/lib_zip.php");
$cnt=count($GLOBALS['__POST']["selitems"]);
$abs_dir=get_abs_dir($dir);
$download = mosGetParam( $_REQUEST, 'download', "n" );
$archive_name = get_abs_item($dir,$name);
if( !strstr( $archive_name, "." )) $archive_name .= ".zip.";
$zipfile=new ZipFile();
for($i=0;$i<$cnt;++$i) {
$selitem=stripslashes($GLOBALS['__POST']["selitems"][$i]);
if(!$zipfile->add($abs_dir,$selitem)) {
show_error($selitem.": Failed adding item.");
}
}
if(!$zipfile->save( $archive_name )) {
show_error($name.": Failed saving zipfile.");
}
else {
if( $download=="y" ) {
require "./.include/fun_down.php";
download_item( $dir, basename($archive_name), true );
}
}
return;
}
//------------------------------------------------------------------------------
function tgz_items($dir,$name) {
require_once("./_lib/Tar.php");
$cnt=count($GLOBALS['__POST']["selitems"]);
$abs_dir=get_abs_dir($dir);
$download = mosGetParam( $_REQUEST, 'download', "n" );
$type = ($GLOBALS['__POST']["type"] == "tgz") ? "gz" : "bz2";
$archive_name = get_abs_item($dir,$name);
if( !strstr( $archive_name, "." )) {
$archive_name .= ".tar.$type";
}
$tgz_file = new Archive_Tar($archive_name, $type);
for($i=0;$i<$cnt;++$i) {
$selitem=stripslashes($GLOBALS['__POST']["selitems"][$i]);
$v_list[] = $abs_dir ."/". $selitem;
}
if(!$tgz_file->createModify($v_list, '', realpath($GLOBALS['home_dir']))) {
show_error($name.": Failed saving Archive File.");
}
else {
if( $download=="y" ) {
require "./.include/fun_down.php";
download_item( dirname($archive_name), basename($archive_name), true );
}
}
return;
}
//------------------------------------------------------------------------------
function archive_items($dir) {
if(($GLOBALS[„permissions“]&01)!=01) show_error($GLOBALS[„error_msg“][„accessfunc“]);
if(!$GLOBALS[„zip“]) show_error($GLOBALS[„error_msg“][„miscnofunc“]);
if(isset($GLOBALS['__POST']["name"])) {
$name=basename(stripslashes($GLOBALS['__POST']["name"]));
if($name=="") show_error($GLOBALS["error_msg"]["miscnoname"]);
switch($GLOBALS['__POST']["type"]) {
case "zip": zip_items($dir,$name); break;
default: tgz_items($dir,$name);
}
header("Location: ".make_link("list",$dir,NULL));
}
show_header($GLOBALS["messages"]["actarchive"]);
echo "<br/><form name=\"archform\" method=\"post\" action=\"".str_replace("index2.php", "index3.php", make_link("arch",$dir,NULL))."\">\n";
echo "<input type=\"hidden\" name=\"no_html\" value=\"1\" />";
$cnt=count($GLOBALS['__POST']["selitems"]);
for($i=0;$i<$cnt;++$i) {
echo "<input type=\"hidden\" name=\"selitems[]\" value=\"".stripslashes($GLOBALS['__POST']["selitems"][$i])."\">\n";
}
echo "<table summary=\"\" width=\"300\"><tr><td>".$GLOBALS["messages"]["nameheader"].":</td><td align=\"left\">";
echo "<input type=\"text\" name=\"name\" size=\"25\"></td></tr>\n";
echo "<tr><td>".$GLOBALS["messages"]["typeheader"].":</td><td align=\"left\"><select name=\"type\">\n";
if(extension_loaded("zlib")) {
echo "<option value=\"zip\">Zip</option>\n";
}
echo "</select></td></tr>";
echo "<tr><td>".$GLOBALS["messages"]["downlink"]."?:</td><td align=\"left\">";
echo "<input type=\"checkbox\" checked=\"checked\" name=\"download\" value=\"y\" /></td></tr>\n";
echo "<tr><td></td><td align=\"right\"><input type=\"submit\" value=\"".$GLOBALS["messages"]["btncreate"]."\">\n";
echo "<input type=\"button\" value=\"".$GLOBALS["messages"]["btncancel"];
echo "\" onclick=\"javascript:location='".make_link("list",$dir,NULL)."';\">\n</td></tr></form></table><br/>\n";
?><?php
}
function extract_item( $dir, $item ) {
if( !is_archive( $item )) {
show_error($GLOBALS[„error_msg“][„extract_noarchive“]);
}
else {
$archive_name = realpath(get_abs_item($dir,$item));
$file_info = pathinfo($archive_name);
if( empty( $dir ))
$extract_dir = realpath($GLOBALS['home_dir']);
else
$extract_dir = realpath( $GLOBALS['home_dir']."/".$dir );
$ext = $file_info["extension"];
switch( $ext ) {
case "zip":
require_once( "./_lib/pcl/pclzip.lib.php" );
require_once( "./_lib/pcl/pclerror.lib.php" );
$zip = new PclZip($archive_name);
$res = $zip->extract( PCLZIP_OPT_PATH, $extract_dir );
if( $res < 1 ) {
show_error( $GLOBALS["messages"]["extract_failure"]." (". $zip->error_string.")" );
}
else
$_REQUEST['mosmsg'] = $GLOBALS["messages"]["extract_success"];
break;
case "gz": // a
case "bz": // lot
case "bz2": // of
case "bzip2": // fallthroughs,
case "tbz": // don't
case "tar": // wonder
require_once("./_lib/Tar.php");
$archive = new Archive_Tar($archive_name, $type);
if( $archive->extract( $extract_dir ) )
$_REQUEST['mosmsg'] = $GLOBALS["messages"]["extract_success"];
else
show_error($GLOBALS["error_msg"]["extract_failure"]);
break;
default:
show_error($GLOBALS["error_msg"]["extract_unknowntype"]);
break;
}
header("Location: ".make_link("list",$dir,NULL));
}
}[/code]
Hier der Original-Code:
[code]if($GLOBALS[„zip“]) include("./_lib/lib_zip.php");
//if($GLOBALS[„tar“]) include("./_lib/lib_tar.php");
//if($GLOBALS[„tgz“]) include("./_lib/lib_tgz.php");
//------------------------------------------------------------------------------
function zip_items($dir,$name) {
$cnt=count($GLOBALS[’__POST’][„selitems“]);
$abs_dir=get_abs_dir($dir);
$zipfile=new ZipFile();
for($i=0;$i<$cnt;++$i) {
$selitem=stripslashes($GLOBALS['__POST']["selitems"][$i]);
if(!$zipfile->add($abs_dir,$selitem)) {
show_error($selitem.": Failed adding item.");
}
}
if(!$zipfile->save(get_abs_item($dir,$name))) {
show_error($name.": Failed saving zipfile.");
}
header("Location: ".make_link("list",$dir,NULL));
}
//------------------------------------------------------------------------------
function tar_items($dir,$name) {
// …
}
//------------------------------------------------------------------------------
function tgz_items($dir,$name) {
// …
}
//------------------------------------------------------------------------------
function archive_items($dir) {
if(($GLOBALS[„permissions“]&01)!=01) show_error($GLOBALS[„error_msg“][„accessfunc“]);
if(!$GLOBALS[„zip“] && !$GLOBALS[„tar“] && !$GLOBALS[„tgz“]) show_error($GLOBALS[„error_msg“][„miscnofunc“]);
if(isset($GLOBALS['__POST']["name"])) {
$name=basename(stripslashes($GLOBALS['__POST']["name"]));
if($name=="") show_error($GLOBALS["error_msg"]["miscnoname"]);
switch($GLOBALS['__POST']["type"]) {
case "zip": zip_items($dir,$name); break;
case "tar": tar_items($dir,$name); break;
default: tgz_items($dir,$name);
}
header("Location: ".make_link("list",$dir,NULL));
}
show_header($GLOBALS["messages"]["actarchive"]);
echo "<BR><FORM name=\"archform\" method=\"post\" action=\"".make_link("arch",$dir,NULL)."\">\n";
$cnt=count($GLOBALS['__POST']["selitems"]);
for($i=0;$i<$cnt;++$i) {
echo "<INPUT type=\"hidden\" name=\"selitems[]\" value=\"".stripslashes($GLOBALS['__POST']["selitems"][$i])."\">\n";
}
echo "<TABLE width=\"300\"><TR><TD>".$GLOBALS["messages"]["nameheader"].":</TD><TD align=\"right\">";
echo "<INPUT type=\"text\" name=\"name\" size=\"25\"></TD></TR>\n";
echo "<TR><TD>".$GLOBALS["messages"]["typeheader"].":</TD><TD align=\"right\"><SELECT name=\"type\">\n";
if($GLOBALS["zip"]) echo "<OPTION value=\"zip\">Zip</OPTION>\n";
echo "</SELECT></TD></TR>";
echo "<TR><TD></TD><TD align=\"right\"><INPUT type=\"submit\" value=\"".$GLOBALS["messages"]["btncreate"]."\">\n";
echo "<input type=\"button\" value=\"".$GLOBALS["messages"]["btncancel"];
echo "\" onClick=\"javascript:location='".make_link("list",$dir,NULL)."';\">\n</TD></TR></FORM></TABLE><BR>\n";
?><?php
}
//------------------------------------------------------------------------------
?>[/code]
Wo wird denn definiert, das die Dateiendung mit angehangen werden soll??? Wo steht der Befehl dafür? In der TWG-Version klappt das so wie es soll bekomme das aber nicht eingebunden in den Quixplorer. Hilfe…