FTP complete folder
Wat ik namelijk aan het maken ben is een website die ik wil klonen op mijn subs maar met kleine verschillen in de config. Gaat om de basis want de inhoud is verschillend.
Als mijn vermoeden klopt dan zal ik beginnen met het schrijven van een dergelijk stukje code maar wil even zeker weten dat er geen snellere en betere methode is.
Groeten,
Edwin
Gewijzigd op 01/01/1970 01:00:00 door PHP erik
ik had gehoopt dat er een functie was waarmee ik kon aangeven dat ik de huidige map en alle submappen met inhoud wil kopieren en vervolgens waar het heen moet. Omdat je dat nogal vaak doet had ik gehoopt een functie, class of code daarvan te vinden maar of ik zoek verkeerd of kijk op de verkeerde plaatsen want ik vind alleen maar voorbeelden en tutorials hoe je 1 bestand moet ftp'en en nergens hoe je een hele map met submappen moet verplaatsen.
Je kunt er natuurlijk altijd zelf een functie voor schrijven :)
Schokkend moeilijk is het niet (mits je iets weet van php)
Je zou bijvoorbeeld gewoon eerst je bestandsstructuur in een array kunnen zetten om deze vervolgens te verplaatsten.
Als ik er vanavond aan toe kom zal ik er ook eens naar kijken want het is wel grappig :)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
//niet extern aanroepen
if(isset($controle) && $controle==1){
//kijken of wel wel zijn ingelogt
if(isset($_SESSION["user_online"])){
//Rootmap hernoemen.
if(isset($_GET[rename]) && !in_array($_GET[rename], $array_root) && ereg("(^[a-zA-Z0-9]+([a-zA-Z\_\ 0-9\.-]*))$" , $_GET[rename])){
//nieuwe hoofdmapmaken
$rename=$_GET[rename];
mkdir ($rename, $chmod);
//submappen maken in hoofdmap
$array_sub1=array();
$open_sub1=opendir($_GET[sub1_loc]);
while (false!==($sub1 = readdir($open_sub1))) {
if (is_dir($_GET[sub1_loc].'/'.$sub1) && $sub1 != "." && $sub1 != "..") {
array_push($array_sub1,$sub1);
}
}
closedir($open_sub1);
//daadwerkelijk maken.
foreach($array_sub1 as $key => $sub1){
mkdir ($rename.'/'.$sub1, $chmod);
}
//uitlezen submappen
foreach($array_sub1 as $key => $sub1){
$open_file=opendir($_GET[sub1_loc].'/'.$sub1);
while (false!==($file = readdir($open_file))) {
if ($file != "." && $file != "..") {
$pad_ond = pathinfo($_GET[sub1_loc].'/'.$sub1.'/'.$file);
$pad=$pad_ond["dirname"].'/'.$pad_ond["basename"]; //kan ook exstentiion!!
$pad_nieuw=str_replace($_GET[sub1_loc], $rename, $pad);
//copy naar nieuwe locatie.
copy($pad, $pad_nieuw);
//weggooien oud bestand
unlink($pad);
}
}
closedir($open_file);
}
//weggooien oude submap
foreach($array_sub1 as $key => $sub1){
rmdir ($_GET[sub1_loc].'/'.$sub1);
//subdatabase updaten als ze bestaan.
$sql_query6 = "UPDATE sub1 SET onder='$rename' WHERE naam='$sub1';";
$result6 = mysql_query($sql_query6) or die(mysql_error());
}
//weggooien oude hoofddir
rmdir($_GET[sub1_loc]);
//database updaten
$sql_query5 = "UPDATE root SET naam='$rename' WHERE id='$row_mc[id]';";
$result5 = mysql_query($sql_query5) or die(mysql_error());
//controle regels voor het oke
$oke_2='
<p class=oke>Mapnaam is gewijzigd in: '.ucfirst($rename).'</p>
<p class=oke>Refresh in 2 seconden</p><meta http-equiv="refresh" content="2;?sub1_loc='.$rename.'">
';
}else{
$error_2='<span class=error>Nieuwe naam: '.ucfirst($rename).' is geen geldige naam of bestaat al!<span><br>';
}
}else{
echo'<h3>uw bent niet ingelogt en heeft geen recht om deze pagina te bekijken</h3>';
}
}else{
echo'<meta http-equiv="refresh" content="0;url=index.php">';
}
?>
//niet extern aanroepen
if(isset($controle) && $controle==1){
//kijken of wel wel zijn ingelogt
if(isset($_SESSION["user_online"])){
//Rootmap hernoemen.
if(isset($_GET[rename]) && !in_array($_GET[rename], $array_root) && ereg("(^[a-zA-Z0-9]+([a-zA-Z\_\ 0-9\.-]*))$" , $_GET[rename])){
//nieuwe hoofdmapmaken
$rename=$_GET[rename];
mkdir ($rename, $chmod);
//submappen maken in hoofdmap
$array_sub1=array();
$open_sub1=opendir($_GET[sub1_loc]);
while (false!==($sub1 = readdir($open_sub1))) {
if (is_dir($_GET[sub1_loc].'/'.$sub1) && $sub1 != "." && $sub1 != "..") {
array_push($array_sub1,$sub1);
}
}
closedir($open_sub1);
//daadwerkelijk maken.
foreach($array_sub1 as $key => $sub1){
mkdir ($rename.'/'.$sub1, $chmod);
}
//uitlezen submappen
foreach($array_sub1 as $key => $sub1){
$open_file=opendir($_GET[sub1_loc].'/'.$sub1);
while (false!==($file = readdir($open_file))) {
if ($file != "." && $file != "..") {
$pad_ond = pathinfo($_GET[sub1_loc].'/'.$sub1.'/'.$file);
$pad=$pad_ond["dirname"].'/'.$pad_ond["basename"]; //kan ook exstentiion!!
$pad_nieuw=str_replace($_GET[sub1_loc], $rename, $pad);
//copy naar nieuwe locatie.
copy($pad, $pad_nieuw);
//weggooien oud bestand
unlink($pad);
}
}
closedir($open_file);
}
//weggooien oude submap
foreach($array_sub1 as $key => $sub1){
rmdir ($_GET[sub1_loc].'/'.$sub1);
//subdatabase updaten als ze bestaan.
$sql_query6 = "UPDATE sub1 SET onder='$rename' WHERE naam='$sub1';";
$result6 = mysql_query($sql_query6) or die(mysql_error());
}
//weggooien oude hoofddir
rmdir($_GET[sub1_loc]);
//database updaten
$sql_query5 = "UPDATE root SET naam='$rename' WHERE id='$row_mc[id]';";
$result5 = mysql_query($sql_query5) or die(mysql_error());
//controle regels voor het oke
$oke_2='
<p class=oke>Mapnaam is gewijzigd in: '.ucfirst($rename).'</p>
<p class=oke>Refresh in 2 seconden</p><meta http-equiv="refresh" content="2;?sub1_loc='.$rename.'">
';
}else{
$error_2='<span class=error>Nieuwe naam: '.ucfirst($rename).' is geen geldige naam of bestaat al!<span><br>';
}
}else{
echo'<h3>uw bent niet ingelogt en heeft geen recht om deze pagina te bekijken</h3>';
}
}else{
echo'<meta http-equiv="refresh" content="0;url=index.php">';
}
?>
ik weet hoe de structuur moet worden met subdomeins etc en neig er naar om dat in een array te zetten ipv een dynamisch iets waarbij ik de programma laat bepalen.
Bovenstaand stukje is hulpvol maar ik zal nog nog even verder moeten klooien denk ik.