Avatar billede mysitesolution Nybegynder
20. oktober 2004 - 22:32 Der er 9 kommentarer og
1 løsning

Slet linie funktion virker ikke

Hej...

jeg har et script der GERNE skulle slette en linie, men det gør den ikke...

Hvis man sletter en af de sidste linier, så kommer der en linie ind hvor der ikke står noget... Hvad skal alves om?

function removeLine($filename,$number) {

  $lines = file($filename);

  unset($lines[$number]);

  $f = fopen($filename, "w");

  reset($lines);

  while (list($key, $val) = each($lines))

    fputs($f, $val);

  fclose($f);

}

if (isset($_GET['delete'])) {

  $htpasswdfile = file('../.htpasswd');

  $myfile = array_reverse($htpasswdfile, true);

  foreach ($myfile as $line_num => $line) {

    if ($_POST['item' . $line_num] == 'true') {

      $columns = split(':', $line);

      if ($columns[0] != $_SERVER['REMOTE_USER']) {

        removeLine('../.htpasswd', $line_num);

      }

    }

  }

}
Avatar billede bojo Nybegynder
20. oktober 2004 - 23:05 #1
function removeLine($filename,$number) {
  $lines = file($filename);
  unset($lines[$number]);
  $f = fopen($filename, "w");
  $x=0;
  while (list($key, $val) = each($lines)) {
    if( $x++ != $number ) // hvis det ikke er linie nummer $number
      fputs($f, $val);  // så skriv den
  }
  fclose($f);
}
Avatar billede bojo Nybegynder
20. oktober 2004 - 23:08 #2
hov  unset($lines[$number]); skulle også væk

function removeLine($filename,$number) {
  $lines = file($filename);
  $f = fopen($filename, "w");
  $x=0;
  while (list($key, $val) = each($lines)) {
    if( $x++ != $number ) // hvis det ikke er linie nummer $number
      fputs($f, $val);  // så skriv den
  }
  fclose($f);
}
Avatar billede mysitesolution Nybegynder
21. oktober 2004 - 00:04 #3
nope virker stadig ikke, må være noget med den anden del så :/
Avatar billede bojo Nybegynder
21. oktober 2004 - 00:13 #4
jeg havde nu også en fejl, jeg slettede linien efter, prøv

<?php
function removeLine($filename,$number) {
  $lines = file($filename);
  $f = fopen($filename, "w");
  $x=0;
  while (list($key, $val) = each($lines)) {
    if( ++$x != $number ) // hvis det ikke er linie nummer $number
      fputs($f, $val);  // så skriv den
  }
  fclose($f);
}
Avatar billede mysitesolution Nybegynder
21. oktober 2004 - 00:16 #5
hmm nu sletter den linien inden, men også den tomme linie
Avatar billede bojo Nybegynder
21. oktober 2004 - 00:44 #6
prøv at lave en fil, test.txt f.eks indhold

1
2
3
4
5

og brug så

removeLine( "test.txt", 3 );

så forsvinder linie 3
Avatar billede mysitesolution Nybegynder
21. oktober 2004 - 00:59 #7
også med: if (isset($_GET['delete'])) {

  $htpasswdfile = file('../.htpasswd');

  $myfile = array_reverse($htpasswdfile, true);

  foreach ($myfile as $line_num => $line) {

    if ($_POST['item' . $line_num] == 'true') {

      $columns = split(':', $line);

      if ($columns[0] != $_SERVER['REMOTE_USER']) {

        removeLine('../.htpasswd', $line_num);

      }

    }

  }

}
Avatar billede mysitesolution Nybegynder
21. oktober 2004 - 00:59 #8
ved mig laver den på et tidspunkt en tom linie
Avatar billede bojo Nybegynder
21. oktober 2004 - 01:13 #9
ja, med det forbehold at jeg jo har et andet fil indhold (beskrevet i koden ) og har sat $_POST['item' . $line_num]=true; for at kunne teste



<?php
/*
filen "test" indeholder af test årsager dette, linie 3 skal forsvinde
$_SERVER['REMOTE_USER']:1
$_SERVER['REMOTE_USER']:2
3
$_SERVER['REMOTE_USER']:4
$_SERVER['REMOTE_USER']:5
*/
function removeLine($filename,$number) {
  $lines = file($filename);
  $f = fopen($filename, "w");
  $x=0;
  while (list($key, $val) = each($lines)) {
    if( $x++ != $number ) // hvis det ikke er linie nummer $number
      fputs($f, $val);  // så skriv den
  }
  fclose($f);
}

$htpasswdfile = file('test');

$myfile = array_reverse($htpasswdfile, true);

foreach ($myfile as $line_num => $line) {
$_POST['item' . $line_num]=true;
if ($_POST['item' . $line_num] == 'true') {

    $columns = split(':', $line);

      if ($columns[0] != "\$_SERVER['REMOTE_USER']") {

        removeLine('test', $line_num);

      }

    }

  }
?>
Avatar billede mysitesolution Nybegynder
27. november 2005 - 00:33 #10
lukker, ved du ikke vil have points ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester