Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z zapisem w pliku txt
zenoon
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 4.08.2006

Ostrzeżenie: (0%)
-----


Dopiero co zacząłem uczyć się php i kupiłem sobie książkę "php i MySQL vademecum..." wyd. Helion. Pierwszym zadaniem w nim jest stworzenie sklepu z częściami samochodowymi. Gdy już mamy takie coś to trzeba zamówienia zapisywać (w pliku txt). W książce jest taki kod:


Kod
<?php
  // utworzenie krótkich nazw zmiennych
  $iloscopon = $_POST['iloscopon'];
  $iloscoleju = $_POST['iloscoleju'];
  $iloscswiec = $_POST['iloscswiec'];
  $adres = $_POST['adres'];
  $adres = $_POST['adres'];

  $DOCUMENT_ROOT = $_POST['DOCUMENT_ROOT'];
?>

<html>
<head>
  <title>Części samochodowe Janka — wyniki zamówienia</title>
</head>
<body>
<h1>Części samochodowe Janka</h1>
<h2>wyniki zamówienia</h2>
<?php

$data=date('H:i, jS F');

  echo '<p>Zamówienie przyjęte o ';

  echo $data;
  echo '</p>';
  echo '<p>Zamówienie Państwa wygląda następująco: </p>';

  $ilosc=0;
  $ilosc=$iloscopon+$iloscoleju+$iloscswiec;

  if( $ilosc == 0 )
  {
   echo 'Na poprzedniej stronie nie zostało złożone żadne zamówienie!<br />';
  }
  else
  {
   if ( $iloscopon>0 )
     echo $iloscopon.' opon<br />';
   if ( $iloscoleju>0 )
     echo $iloscoleju.' butelek oleju<br />';
   if ( $iloscswiec>0 )
     echo $iloscswiec.' świec zapłonowych<br />';
  }

  $wartosc=0.00;

  define('CENAOPON', 100);
  define('CENAOLEJU', 10);
  define('CENASWIEC', 4);

  $wartosc =$iloscopon * CENAOPON + $iloscoleju * CENAOLEJU + $iloscswiec * CENASWIEC;

  $wartosc=number_format($wartosc, 2, '.', ' ');

  echo '<P>Wartość zamówienia wynosi '.$wartosc.'</P>';

  echo '<P>Adres wysyłki to '.$adres. '</P>';

  $ciagwyjsciowy = $data."\t".$iloscopon." opon \t".$iloscoleju." butelek oleju\t"
               .$iloscswiec." swiec zapłonowych\t".$wartosc
               ."PLN/t". $adres."\n";

  // otwarcie pliku w celu dopisywania
@ $wp = fopen("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt", 'ab');

  if (!$wp)
  {
   echo '<p><strong> Zamówienie Państwa nie może zostać przyjęte w tej chwili.  '
       .'Proszę spróbować później.</strong></p></body></html>';
   exit;
  }

  fwrite($wp, $ciagwyjsciowy, strlen($ciagwyjsciowy));
  fclose($wp);

  echo '<p>Zamówienie zapisane.</p>';
?>
</body>
</html>




Niestety gdy wrzucam to na serwer i próbuję zapisać to do pliku zamowienia.txt to za każdym razem mam komunikat niepowodzenia. Nie wiem co jest nie tak. Proszę o pomoc!

Z góry wielkie dzięki i sorry za tak debilne pytania.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




  1. <?php
  2. $DOCUMENT_ROOT = $_POST['DOCUMENT_ROOT'];
  3. ?>


Nie masz w swoim pliku zawierającym formularz pola, które nazywa się DOCUMENT_ROOT
Jako, że istenieje tablica zmiennych serwera, to spóbuj:
  1. <?php
  2. $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
  3. ?>


Jednak używasz w ścieżce ../, co oznacza cofanie się w górę, Nie bardzo możesz przez to otrzymać poprawny katalog - takiego po prostu nie ma. Sprawdziłem - u mnie pokazuje coś takiego

/usr/local/apache2/htdocs/../zamowienia/zamowienia.txt

Czy to wygląda na poprawną ścieżkę? Raczej nie.

Dlatego mówię - odnieś się do katalogu <zamowienia> w taki sposób
  1. <?php
  2. $wp = fopen("zamowienia/zamowienia.txt", 'ab');
  3. ?>


Powyższy zapis mówi o tym, ze chcsz zapisac plik <zamowiania.txt> w katalogu <zamowienia> znajdującym sie w jakimś innym katalogu (np w twoim katalogu głównym). Teraz ustaw chmod na 777 dla katalogu, a nie dla pliku zamowienia. Napisałeś, że ustawiłeś dla plikuów zamowienia,txt i dla przetworzzamowienie.php. To za mało.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 18:56