[PHP] Blad w skrypcie

0

Pisalem sobie skrypt ktory otwiera wybrany plik w textarea i po modifikacji tekstu zapisuje zmiany. Jednak mam blad i nie wiem jak go naprawic... w php jestem kompletny laik ale mimo to walcze dalej :P

skrypt.php

<FORM method="post" action="aa.php">
<INPUT type=text name=aa>
<input type=submit value=ok>

aa.php

<?

$a = $_POST['aa'];
$dane = fopen($a,"r");
$tekst = fread($dane, filesize($a));
fclose($dane);
print("<FORM method=post><textarea cols=50 rows=30 name=news>".$tekst."</textarea><BR><input type=submit value=Zapisz>");
$dane = fopen($a,"w");
fputs($dane, $news);
fclose($dane);

?>

Pokazuje mi ze w linijce 5,6,9 i 10 sa bledy "supplied argument is not a valid stream resource"

0

na 100% filesize($a) jest be - ma być filesize($dane), zmiennej $news nigdy nie było i nie wiem skąd miałaby się pojawić, reszta linijek nie widzę żeby coś było źle poza logiką działania

0
Adamo napisał(a)

na 100% filesize($a) jest be - ma być filesize($dane), zmiennej $news nigdy nie było i nie wiem skąd miałaby się pojawić, reszta linijek nie widzę żeby coś było źle poza logiką działania

W parametr funkcji filesize to nazwa pliku a zmienna "a" jest nazwa pliku. A co do "news" to ta linia "name=news>".$tekst."</textarea><BR><input type="submit" value="Zapisz">");"

0

aha, no tak [wstyd] jak mówię że na 100% to znaczy że tak mi się w tej sekundzie wydaje ... ;) no ale dobra, jak już to $_POST['news'], a najpierw by można było sprawdzić czy zmienna zainicjalizowana (isset($_POST['news']) tymbardziej że podejrzewam że do pliku "aa.php" trafiają dane z pierwszego pliku a tam już nie ma pola "news" tylko pole "aa"

mógłbyś zaznaczyć które to są linijki które ci pisze że jest błąd ?

I czemu nie zamykasz tagu FORM ?

możesz dowalić:

if(!file_exists($_POST['aa'])) echo "Plik $_POST[aa] nie istnieje !";

jeśli w nazwie pliku używasz slashy i masz na serwie włączone automagiczne dodawanie backslashy to musisz użyć zamiast
$_POST['aa']
stripslashes($_POST['aa']);

i zamiast:
$_POST['news']
dać
stripslashes($_POST['news']);

0
Adamo napisał(a)

aha, no tak [wstyd] jak mówię że na 100% to znaczy że tak mi się w tej sekundzie wydaje ... ;) no ale dobra, jak już to $_POST['news'], a najpierw by można było sprawdzić czy zmienna zainicjalizowana (isset($_POST['news']) tymbardziej że podejrzewam że do pliku "aa.php" trafiają dane z pierwszego pliku a tam już nie ma pola "news" tylko pole "aa"

mógłbyś zaznaczyć które to są linijki które ci pisze że jest błąd ?

I czemu nie zamykasz tagu FORM ?

możesz dowalić:

if(!file_exists($_POST['aa'])) echo "Plik $_POST[aa] nie istnieje !";

Zamiescilem tutaj pierwsza wersje skryptu :P Taki poprawilem. "mógłbyś zaznaczyć które to są linijki które ci pisze że jest błąd ?" napisalem na samym koncu mojego pierwszego postu :)

0
phh napisał(a)

Taki poprawilem. "mógłbyś zaznaczyć które to są linijki które ci pisze że jest błąd ?" napisalem na samym koncu mojego pierwszego postu :)

co znaczy "Taki poprawilem." - że poprawiłeś ? czy że dalej ci coś nie działa ?
napisałeś ale trochę się rozjechało i szósta linijka np kodu to pusta linia a 5 linia to zwykłe przypisanie ... a poza tym nie lubię liczyć (patrz stopka ;)), lubię mieć tak fajowo na czerwono zaznaczone ;P

0

Literowka :P Mialo byc Tagi a nie Taki :P Skrypt mi nadal nie dziala ;(

0
<FORM method="post" action="index.php">

<INPUT type=text name=aa>

<input type=submit value=ok>

</FORM>
aa.php


<?php
session_start();
error_reporting(E_ALL);

if (($_POST['aa']<>'')&&(!(isset($_POST['news']))))
{
$a = $_POST['aa'];
$_SESSION['aaa']=$a;
$dane = fopen($a,"r+");

$tekst = fread($dane, filesize($a));

fclose($dane);

print("<FORM method=post><textarea cols=50 rows=30 name=news>".$tekst."</textarea><BR><input type=submit value=Zapisz>");
}
else
{
$a= $_SESSION['aaa'];
$dane = fopen($a,"w");

fputs($dane, $_POST[news]);

fclose($dane);
unset($_SESSION['aaa']);
}
?>

Mi coś takiego działa.
Chyba to była wina r+ w pierwszym fopen

0

Dzieki teraz wspisany tekst zapisuje sie do pliku ale po kliknieciu napisz pokazuja mi sie dwa bledy

Notice: Undefined index: aa in .../aa.php on line 5

Notice: Use of undefined constant news - assumed 'news' in .../aa.php on line 22
</ort>

Nikt nie jest w stanie mi pomoc... :(

0
<?php
session_start();
error_reporting(0);

if (isset($_POST['aa']) || isset($_SESSION['aaa']){
  if(isset($_POST['aa'])){
    $a = $_POST['aa'];
    $_SESSION['aaa'] = $a;
  }
  $dane = fopen($_SESSION['aaa'], 'r+');

  $tekst = fread($dane, filesize($a));

  fclose($dane);

  ?>

<form method="post" action="">
<textarea cols="50" rows="30" name="news"><?= $tekst ?></textarea>
<br /><input type="submit" value="Zapisz" /></form>

<?php
}
if(isset($_POST['news'])){
  $a= $_SESSION['aaa'];
  $dane = fopen($a, 'w');

  fputs($dane, $_POST['news']);

  fclose($dane);
}
?>
0

To nie błędy. Tylko "notice" Wyłącz raportowanie wstawiajac gdzieś na początku eksryptu error_reporting(0);

// rozwiązanie powyżej też jest poprawne, moje to tylko obejście problemu :)

0

Dziekuje wam :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1