Помогите с готевой книгой

Печать RSS
673

S
Автор
Землянин
0
    $kom=@file("../local/fakt.dat"); 
    $total=count($kom);  
    echo'Добавить запись в факты:';
	echo"$total"; 
	echo'<br/>';
    echo'<form class=gtext   method="post">  
    Номер факта<input type="text" name="nfakt"><br/>
	Факт<input type="text" name="fakt"><br/> 
    Вы уверены? (да)<input type="text name="rig" >   
    <input type="submit" value="Сохранить">
	</form>';
	$rig = ($_POST['rig']);
	$fakt = ($_POST['fakt']);
	$nfakt = ($_post['nfakt']);
	$nf = "$fakt$nfakt";
    if($rig == "да")
	 { 
	  if (!$nf)
	   {
	    echo'Вы не заполнили следующие поля:<br/>';
	    if (!$fakt)
	     {
	      echo'не заполнено поле с фактом<br/>';
	     }
	    elseif (!$nfakt)
	     {
	     echo'Вы не заполнили поле с номером факта<br/>';
	     }
	   }	  
	  else
	   {
	    $nf = "<b>$nfakt:<b />$fakt"; 
	    $file = fopen ("../local/fakt.dat","r+");
        fputs ($file, $nf);
        fclose ($file);
	   }
  	 }
Почему код не записывает в файл информацию? smile
K

Транклюкаторщик
0
fopen ("../local/fakt.dat","a+");
может так?
P.S: есть же file_put_contents() извращенцы )
S
Автор
Землянин
0
Аааа точняк, че я хД
А какая разница между file_put_contents() и fputs ($file, $nf); ?

Добавлено через 02:16 сек.
Неа. Все равно не записывает(( sad
S
Автор
Землянин
0
И еще.
Есть текстовый документ.
1.txt
В нем есть строки
-nhfnfnfnfn
-траратаратар
-фигня
-брр
Нужно вывести допустим 20 строк, обрезанных на 70 символов.
Что-то бодобное уже мне делали. Но там рандомно строки выводятся. А мне нужно чтобы выводилось по х штук. smile

Добавлено через 00:39 сек.
<?

function text_dl ($text, $dl) 
{ 
    $text = iconv("utf-8", "cp1251", $text); 
    if (strlen($text)>$dl) 
    { 
        $rest = substr($text, 0, $dl); 
        $rest = iconv("cp1251", "utf-8", $rest); 
        return $rest.'...'; 
    } 
    else 
    { 
        $rest = iconv("cp1251", "utf-8", $text); 
        return $rest; 
    } 
} 

$file = file("../local/fakt.dat"); 

if (count($file)) 
{
    $line = rand(0, count($file) - 1);  
    print '<a href="vashi_voprosi.php?line='.$line.'">'.text_dl($file[ $line ], 100).'</a>'; 
} 
else 
{ 
    print 'База правил пуста'; 
} 
?>

Добавлено через 02:58 сек.
Причем нужно обязательно чтобы ссылка была (ну это я сам) и чтобы не рандомные, скажем 10 строчек, а чтобы по порядку с конца были. Если будет листниг, то вообще суперски))
K

Транклюкаторщик
0
123. SIR2100, fputs() это наследие php3, про который (имхо) пора забывать.
всякие fopen(), flock() , fclose()...
появились более удобные аналоги, с ними код красивее и короче.
вместо fopen,fgets,fclose - file_get_contents() или file() (в зависимости от ситуации)
вместо fopen,flock,fputs,flock,fclose - file_put_contents()
разницу читай в мануалах, разбирай более свежие скрипты.
Изменил: KOZZ (23.03.2011 / 15:43)
S
Автор
Землянин
0
Понятно. Спс smile
В

Чатланин
0
Ну если надо дописывать текст в существующий файл, то наверное правильнее использовать fopen(a+),fwrite,fclose
K

Транклюкаторщик
0
127. valerik, ну возможно smile
а можно и так:
file_put_contents(file_get_contents('file.txt').'дописываемая строка');
интересно было бы сравнить по скорости smile
Изменил: KOZZ (23.03.2011 / 17:44)
В

Чатланин
0
Не знаю как там по скорости, но если файл скажем 10мб, твоим способом он полностью помещается в оперативную память.. Т.е. весь файл считывается.. А другим способом, просто дописывается не читаясь и не тратя на это память.
S
Автор
Землянин
0
<?
$file = fopen("../local/adminpass.dat","r");
$password = fread ($file,1000);
$pass = md5($_POST['secret']); 
if($pass == "d41d8cd98f00b204e9800998ecf8427e")
 {
  echo'<form class=gtext action="1.php"  method="post">  
  Введите секретный код <input type="text" name="secret">
  <input name="submit" type="submit" value="Отправить">   
  </form>';
  echo'Вы не ввели секретный код!';
 }
elseif ($password == $pass)
 {
  echo'Вы вошли в администраторскую!<br />';
   echo'<form class=gtext action="1.php"  method="post">  
    Изменить пароль<input type="text" name="admpass"><br/>
	Повторите пароль<input type="text" name="admpasspr"><br/>
    Вы уверены? (да)<input type="text name="right" >   
    <input name="submit" type="submit" value="Сохранить">
    </form>';
    if( ($_POST['admpass']) == ($_POST['admpasspr']))
  {
	$admpass = md5($_POST['admpass']);
	$right = ($_POST['right']);
    if($right == "да")
    {
     if ($admpass == "d41d8cd98f00b204e9800998ecf8427e")
    {
	 
	 }
     else 
     {
      $file = fopen ("../local/adminpass.dat","a+");
	  $file_put_content($admpass);
	  echo'Ваш новый пароль:';
	  echo $ap;
     }
    }
    else 
    {
    echo'Вы не подтвердили пароль!';
    }
  }
	else { echo'Вы не подтвердили пароль!';}}
?>
Вот код. Это часть большого скрипта.
Подскажите почему он может не работать.
При вводе пароля скрипт отправляет пользователя на страницу авторизации и не записывает данные, введенные пользователем.
Т.е. я ввел все данные, нажимаю сохранить и он меня посылает на авторизацию, в файл ничего не записывая.
Подскажите smile в чем может быть ошибка?
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск