Martin A. Skrevet 31. januar 2006 Del Skrevet 31. januar 2006 Nå kunne jeg trenge litt hjelp her. Har laget et halveis ferdig script som lar meg redigere filer rett fra nettsiden, slik at jeg slipper å laste opp den nye versjonen hver gang. Problemet mitt er at jeg ikke klarer bringe mappenavnet videre i URL'en. "?side=admin&action=rediger&id=index.php". Den går helt fint, ettersom den ligger på rotnivå, men så fort jeg skal begynne å bevege meg oppover i mappene, så får jeg ikke redigert dem uten å legge inn mappenavn før selve filnavnet i URL'en. Funksjonen som lister filene: functions.php <?php class list_dir { var $dir; function open_dir($dir) { $this->dir = $dir; $handle = opendir($this->dir); if($handle) { while(false !== ($file = readdir($handle))) { if($file != "." && $file != "..") { $files[] = $file; } } sort($files); foreach($files as $file) { echo "<a href='?side=admin&action=rediger&id=" . $mappe . $file . "'>$file</a><br />"; } } } function close_dir() { closedir($this->dir); } } ?> Scriptet som viser filene: files.php <?php if ($_SESSION['LoggedIn']) $LoggedIn=true; else $LoggedIn=false; ?> <?php if($LoggedIn) { $mappe = $_POST['mappe']; $def_dir = '/usr/local/psa/home/vhosts/rtin.no/subdomains/ma/httpdocs/'; echo "<br /><br /><form method='POST'> Mappenavn: <input name='mappe' type='text' value='$mappe'> <input type='submit' name='submit' value='Åpne mappe'><br />"; if(empty($mappe)) { $error = TRUE; } include('functions.php'); if(!$error) { $list = new list_dir; $list->open_dir($def_dir.$mappe); $list->close_dir; } else { $list = new list_dir; $list->open_dir($def_dir); $list->close_dir; } } else { include('include/403.php'); } ?> Scriptet som redigerer filene: rediger.php <?php if ($_SESSION['LoggedIn']) $LoggedIn=true; else $LoggedIn=false; ?> <?php $def_dir = "/usr/local/psa/home/vhosts/rtin.no/subdomains/ma/httpdocs/"; $lines = file($def_dir.$_GET['id']); if($LoggedIn) { echo "<textarea cols='70' rows='60'>"; foreach($lines as $line_num => $line) { echo htmlspecialchars($line); } echo "</textarea>"; } else { include('include/403.php'); } ?> Det eneste jeg trenger, er en lur måte å bringe mappenavn videre i URL fra files.php. Mvh, Martin Lenke til kommentar
HoaXed Skrevet 1. februar 2006 Del Skrevet 1. februar 2006 Har desverre ikke noe svar på spørsmålet. Men er det mulighet for å bruke scriptet på min egen side, ettersom dette ville vært ideelt iforhold til fylkeskommunen ftp sperre Vis jeg kunne brukt det ville jeg vært takknemlig Lenke til kommentar
kakkle Skrevet 1. februar 2006 Del Skrevet 1. februar 2006 Skjønner jeg deg riktig hvis du vil ha mappenavn inn i url ? F.eks slik: ?side=admin&action=rediger&id=mappenavn/index.php ? Har du evt prøvd å bruke $dir ($this->dir) istedetfor $mappe i denne linjen: echo "<a href='?side=admin&action=rediger&id=" . $mappe . $file . "'>$file</a><br />"; $mappe er vel ukjent for klassen list_dir. Evt, så må du vel kanskje legge til / mellom $dir og $file (Dersom det er skrevet inn et mappenavn, $def_dir slutter jo på /) Lenke til kommentar
Martin A. Skrevet 1. februar 2006 Forfatter Del Skrevet 1. februar 2006 (endret) Skjønner jeg deg riktig hvis du vil ha mappenavn inn i url ?F.eks slik: ?side=admin&action=rediger&id=mappenavn/index.php ? Har du evt prøvd å bruke $dir ($this->dir) istedetfor $mappe i denne linjen: echo "<a href='?side=admin&action=rediger&id=" . $mappe . $file . "'>$file</a><br />"; $mappe er vel ukjent for klassen list_dir. Evt, så må du vel kanskje legge til / mellom $dir og $file (Dersom det er skrevet inn et mappenavn, $def_dir slutter jo på /) 5532482[/snapback] Ettersom functions.php blir inkludert mitt i scriptet, så er jo $mappe allerede satt. Derfor trodde jeg kanskje det ville funke. Får prøve litt senere i dag. HoaXed: Jeg har ingenting i mot at du bruker dette, men siden det overhode ikke er ferdig, så får du gjøre resten selv. Det som mangler er funksjonen som lager et nytt script, og funksjonen som lagrer scriptet etter at det er redigert. Men det ordner man fort på et par timer. EDIT: Pørvde med $this->dir nå, men da fikk jeg hele athen istede i URL, og feilmeldinga ble: Warning: file(/usr/local/psa/home/vhosts/rtin.no/subdomains/ma/httpdocs//usr/local/psa/home/vhosts/rtin.no/subdomains/ma/httpdocs/header.php): failed to open stream: No such file or directory in /usr/local/psa/home/vhosts/rtin.no/subdomains/ma/httpdocs/include/admin/rediger.adm.php on line 7 Endret 1. februar 2006 av M4rTiN Lenke til kommentar
BigJackW Skrevet 1. februar 2006 Del Skrevet 1. februar 2006 Skulle hatt et slikt script selv. Mulig jeg kan bruke ditt? Men jeg må ha et script som skal includeres i et adminpanel, så kan jeg redigere dirrekte der fra? Lenke til kommentar
Martin A. Skrevet 1. februar 2006 Forfatter Del Skrevet 1. februar 2006 Som sagt tidligere. Jeg har ingenting i mot at andre bruker det. Ettersom det ikke er ferdig, og mangler en del funksjoner. Lenke til kommentar
Martin A. Skrevet 4. februar 2006 Forfatter Del Skrevet 4. februar 2006 Jeg trenger fortsatt hjelp Lenke til kommentar
kakkle Skrevet 4. februar 2006 Del Skrevet 4. februar 2006 (endret) Du kan jo se litt på denne, hvis du vil. <? function list_dir($dir) { if($handle=opendir($dir)) { while(false!==($file = readdir($handle))) { if($file != ".." && $file != ".") { $files[] = $file; } } } closedir(); if(count($files) > 0) { sort($files); chdir($dir); foreach($files as $file) { if(is_dir($file)) { echo "[dir] - <a href='?action=opendir&mappe=$dir/$file'>$file</a><br>"; } else { echo "[file] - <a href='?action=edit&file=$dir/$file'>$file</a><br>"; } } } } if(isset($_GET["action"])) { $action = $_GET["action"]; } else { $action = ""; } $basedir = "/var/www"; // Endre dette til den dir du vil ha som "rot" if($action == "opendir") { if(!isset($_GET["mappe"])) { $mappe = $basedir; } else { $mappe = $_GET["mappe"]; } if(!ereg($basedir, $mappe)) die("Katalog som ikke er støttet (basedir er ikke med)<br>$mappe"); if(strpos($mappe, "..")) die("kan ikke komme deg lenger opp i filsystemet !"); list_dir($mappe); } elseif($action == "edit") { // Her kan du lage en kodesnutt for å redigere filene // Jeg har bare skrevet ut sourcen til den aktuelle filen. $file = $_GET["file"]; highlight_file($file); } else { list_dir($basedir); } ?> Her er en som lar deg "browse" ut fra en "base dir". Du kan jo se litt på denne, og endre den til ditt behov. EDIT: Her har jeg lagt alt i samme script. Du kan fint klippe ut for eksempel funksjonen og ha den i en klasse. Endret 4. februar 2006 av kakkle Lenke til kommentar
BigJackW Skrevet 8. februar 2006 Del Skrevet 8. februar 2006 Har du M4rTiN kommet noe lengre på scriptet ditt? Lenke til kommentar
Martin A. Skrevet 8. februar 2006 Forfatter Del Skrevet 8. februar 2006 Er for øyeblikket i Moss. Og jeg har alt av kildekode liggende på maskinen min i Hammerfest. Der derfor ikke gjort noe mer på det. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå