Jump to content


Photo

Fopen, Fread E Fputs


  • Faça o login para participar
4 replies to this topic

#1 vipboyy

vipboyy

    24 Horas

  • Usuários
  • 473 posts
  • Sexo:Masculino
  • Localidade:SBC - SP

Posted 12/10/2004, 18:38

Eaê, tipo eu sei muito pouco de php, e tou tentando montar um sisteminha de administração, onde é simples: o objetivo é abrir um txt, jogá-lo numa textarea, alterá-lo e através de um form salvá-lo, ou seja, substituindo o antigo pelo atual alterado.

Tudo bem, até aí montei tudo direitinho.. só que tem um porém, não tou conseguindo fazer ele apagar o antigo e sobreescrevê-lo com o conteúdo atual, notem:

if($acao != "salvar") {
$id = fopen($arquivo,"r");
$conteudo = fread($id,filesize($arquivo));
fclose($id);
}

if($acao == "salvar") {
$id = fopen($arquivo,"w");
fputs($id, $editado);
fclose($id);
}

Aí eu imagino que ele leia o arquivo quando a ação for diferente de salvar, e sobreescreva-o quando a ação for salvar... só que ele está apagando todo o arquivo e deixando zerado, sem nada!

Já dei CHMOD no arquivo, deixei tudo livre... o que eu estou fazendo de errado?
Ou melhor ainda, de que modo eu poderia fazer isso?

Obrigado desde já! (y)

#2 vipboyy

vipboyy

    24 Horas

  • Usuários
  • 473 posts
  • Sexo:Masculino
  • Localidade:SBC - SP

Posted 12/10/2004, 18:41

Só pra deixar mais claro sobre o meu código:

$arquivo: path do arquivo txt (caminho confirmado e correto)
$editado: tag da textarea cujo name=editado

Não sei, só estou destacando isso, porque de repente eu posso estar errando nisso, ou no _root do arquivo ou na var que está sendo colocada para sobreescrever o arquivo.

#3 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 12/10/2004, 21:18

Tenta receber o $editado, assim:

$editado = $_POST["editado"];

No PHP você deve receber as variáveis, de acordo com o método que ela está sendo enviada.
Klaus Paiva
Conheça também: Taperás

#4 vipboyy

vipboyy

    24 Horas

  • Usuários
  • 473 posts
  • Sexo:Masculino
  • Localidade:SBC - SP

Posted 13/10/2004, 10:10

Não adianta, tentei fazer o requerimento da Query conforme você disse mas não deu, ele continua resetando todo o arquivo, e deixando-o vazio!

No entanto eu fiz o script alertar o conteúdo que havia na variável $editado e não apareceu nada! Estranho né, vou mandar o código todo aqui pra ver se fica mais fácil, preciso muito solucionar esse problema e tou perdidasso!

<?php
$acao = $_REQUEST['acao'];
$sec = $_REQUEST['sec'];
$pg = $_REQUEST['pg'];
$passwd = $_REQUEST['passwd'];
$dir = $_REQUEST['dir'];
$editado = $_POST["editado"];

$arquivo = $dir."/sec=".$sec."&pg=".$pg.".txt";

if(file_exists($arquivo) && $acao != "salvar") {
$id = fopen($arquivo,"r");
$conteudo = fread($id,filesize($arquivo));
fclose($id);
}

if($acao == "salvar") {
$id = fopen($arquivo,"w");
fputs($id, $editado);
fclose($id);
}

if($arquivo == "adm/sec=&pg=.txt" || $arquivo == "pgs/sec=&pg=.txt") { $arquivo = "nenhum arquivo selecionado"; $conteudo = "Selecione no menu ao lado um arquivo para editá-lo..."; $disable = "yes"; }

if($disable == "yes") {
$manager = "<input type=submit value=SALVAR name=save class=bottom> <input type=button value=VIZUALIZAR name=view class=bottom> <input type=button value=VIZUALIZAR name=view2 class=bottom> <script>document.FileManager.save.disabled = true; document.FileManager.view.disabled = true; document.FileManager.view2.disabled = true;</script>"; }

elseif($disable == "editar") {
$manager = "<input type=submit value=SALVAR name=save class=bottom> <input type=button value=VIZUALIZAR name=view class=bottom> <input type=button value=\"VIZUALIZAR BACKUP\" name=view2 class=bottom>"; }

elseif($disable == "backup") {
$manager = "<input type=submit value=SALVAR name=save class=bottom> <input type=button value=VIZUALIZAR name=view class=bottom> <input type=button value=\"VIZUALIZAR ARQUIVO\" name=view2 class=bottom>"; }

print<<<EOT

<form name="FileManager" method="post" action="?" onSubmit="javascript: DisableForm();">

<input type="hidden" name="acao" value="salvar">
<input type="hidden" name="dir" value="$dir">
<input type="hidden" name="sec" value="$sec">
<input type="hidden" name="pg" value="$pg">
<input type="hidden" name="passwd" value="$password">

<textarea cols="80" rows="24" class="input" name="editado">$conteudo</textarea><br>

$yes $manager

</form>

EOT;
}

?>

Edição feita por: vipboyy, 13/10/2004, 10:11.


#5 vipboyy

vipboyy

    24 Horas

  • Usuários
  • 473 posts
  • Sexo:Masculino
  • Localidade:SBC - SP

Posted 13/10/2004, 20:13

Fiz mais testes no sistema, e pesquisei pela internet, acredito eu que o erro não é na forma o qual eu estou gravando os dados, e sim a variável $editado da textarea que não está sendo envia e/ou lida pelo sistema!

Alguém poderia me ajudar a solucionar esse problema? Eis o código acima, porque de repente pode ser um errinho besta até mesmo no html que está causando isso!

Please, help-me alguém aí que tiver paciência... pois preciso muito fechar esse sistema!

Thanks (y)




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq