Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Skrócony regulamin

Kontakt - błąd z odczytem pliku

Idź do strony 1, 2  Następny

 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> PHP
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
matii578



Dołączył: 18 Gru 2011
Posty: 12

PostWysłany: Wto Sty 24, 2012 6:42 pm      Temat postu: Kontakt - błąd z odczytem pliku Odpowiedz z cytatem Pisownia

Witam.
Napisałem skrypt kontaktu, który zapisuje treść wiadomości do pliku. Po wciśnięciu przycisku "Wyślij" wyświetla wiadomość. Do tego momentu wszystko działa. Problem zaczyna się gdy w pliku "tajne.php" wiadomość ma być odczytana. Jeśli przy wpisywaniu treści kliknie się klawisz "enter" To przerzuca do nowej lini i wpisuje jako "imię". Jeśli mnie nie zrozumieliście załączam plik w którym jest ten skrypt. Wiem oczywiście czym jest spowodowany ten błąd (pojawiającymi się znakami "\n") lecz nie umiem go zlikwidować. Próbowałem funkcją nl2br(); ale też nie pomogło.

Byłbym wdzięczny za pomoc.

Pozdrawiam



Kod Pliku index.html
Kod:
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" />
    <style type="text/css">
        body
        {
            background-color: gray;
            color: black;
            font-family: tahoma;
            font-size: 14px;
        }
        .naglowek
        {
            background-color: black;
            color: white;
            width: 100%;
            height: 50px;
            margin-top: 25px;
            text-align: center;
            font-family: Cooper Black,tahoma;
        }
    </style>
<body>
    <div class="naglowek">
        <h1>Kontakt</h1>
    </div>
    <form action="przetworzkontakt.php" target="strona" method="post">
        <table border="0" cellpadding="10%" cellspacing="10%">
        <tr>
            <td width="45%">
                <p><b>Imię:</b> <br /><input type="text" id="imie" name="imie" value="Imię" maxlength="25" /></p>
                <p><b>Nazwisko:</b> <br /><input type="text" id="nazwisko" name="nazwisko" value="Nazwisko" maxlength="25" /></p>
                <p><b>e-mail:</b> <br /><input type="text" id="mail" name="mail" value="mail" maxlength="40" /></p>
                <p><b>Klasa:</b><br /><input type="radio" id="1" value="1" name="klasa" [checked="checked"]/> 1
                <br /><input type="radio" id="2a" value="2a" name="klasa" [checked="checked"]/> 2a
                <br /><input type="radio" id="2b" value="2b" name="klasa" [checked="checked"]/> 2b
                <br /><input type="radio" id="3a" value="3a" name="klasa" [checked="checked"]/> 3a
                <br /><input type="radio" id="3b" value="3b" name="klasa" [checked="checked"]/> 3b
                <br /><input type="radio" id="Rodzic" value="Rodzic" name="klasa" [checked="checked"]/> Rodzic
                <br /><input type="radio" id="Nauczyciel" value="Nauczyciel" name="klasa" [checked="checked"]/> Nauczyciel</p>
            </td>
            <td width="45%">
            <p><b>Temat:</b> <input type="text" id="Temat" value="Temat" name="temat" maxlength="40" /></p>
            <p><b>Tresc:</b><br /> <textarea id="tresc" name="tresc" cols="50" rows="10"></textarea></p>
                
            </td>
        </tr>
        <tr>
            <td colspan="2" align="center"><input type="submit" value="Wyslij" /></td>
        </tr>
        </table>
    </form>
</body>
</html>



Kod pliku przetworzkontakt.php
Kod:
<?php
$imie = $_POST['imie'];
$nazwisko = $_POST['nazwisko'];
$klasa = $_POST['klasa'];
$temat = $_POST['temat'];
$tresc = $_POST['tresc'];
$mail = $_POST['mail'];
?>
<html>
    <head>
        <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" />
        <title>Kontakt</title>
        <style type="text/css">
        body
        {
            background-color: gray;
            color: black;
            font-family: tahoma;
            font-size: 14px;
        }
        .naglowek
        {
            background-color: black;
            color: white;
            width: 100%;
            height: 50px;
            margin-top: 25px;
            text-align: center;
            font-family: Cooper Black,tahoma;
        }
    </style>
    </head>
    <body>
        <div class="naglowek">
            <h1>Kontakt</h1>
        </div>
            <p>
            <b>
            <?php
            echo "Imię: ".$imie."<br />";
            echo "Nazwisko: ".$nazwisko."<br />";
            echo "e-mail: ".$mail."<br />";
            echo "Klasa: ".$klasa."<br />";
            echo "Temat: ".$temat."<br />";
            echo "Tresc:<p>".nl2br($tresc)."</p>";
            ?>
            </b>
            </p>
            <?php
            $ciag = $imie."\t".$nazwisko."\t".$mail."\t".$klasa."\t".$temat."\t".nl2br($tresc)."\t\n";
            $ciag = nl2br($ciag);
            @ $wp = fopen("wiad.wiadomosci", 'ab');
            flock($wp, LOCK_EX);
            if (!$wp) {
            echo "<p><b>Wystąpił BŁĄD. Niestety nie udało się wysłac wiadomości. Przepraszamy</b></p></body></html>";
            exit;
            }
            fwrite($wp, $ciag, strlen($ciag));
            flock($wp, LOCK_UN);
            fclose($wp);
            echo "<center><p><b>Wiadomośc wysłana</b></p></center>"
            ?>
    </body>
</html>


Kod pliku tajne.php
Kod:
<html>
<head>
</head>
<body>
<center><h1>Panel administracyjny</h1></center>
<hr /><br />
<?php
@ $wiadomosci = file("wiad.wiadomosci");
$ilosc = count($wiadomosci);
if ($ilosc == 0) {
echo "<p><b>brak wiadomosci</b></p>";
}

for ($i=0; $i<$ilosc; $i++) {
$linia = explode( "\t", $wiadomosci[$i]);
$linia[5] = ereg_replace("\r\n\r\n", "\n<P>", $linia[5]);
echo "<b>Imię:</b> ".$linia[0]."<br />
        <b>Nazwisko:</b> ".$linia[1]."<br />
        <b>e-mail:</b> ".$linia[2]."<br />
        <b>Klasa:</b> ".$linia[3]."<br />
        <b>Temat:</b> ".$linia[4]."<br />
        <b>Treśc:</b><br />".$linia[5]."<br />"
        .$linia[6].
        "<hr />";
}
?>
</body>
</html>



kontakt.rar
 Opis:

Pobierz
 Nazwa pliku:  kontakt.rar
 Wielkość pliku:  2.03 KB
 Pobierano:  4 raz(y)

Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Garf



Dołączył: 25 Maj 2005
Posty: 3348
Skąd: Rzeszów

PostWysłany: Wto Sty 31, 2012 11:02 am      Temat postu: Odpowiedz z cytatem Pisownia

Primo, to polecam nauczyć się HTML, bo to co masz to nie jest ani HTML, ani tym bardziej XHTML. To po prostu taka zupka tagowa. Dodatkowo zmieszana z PHP, co daje przepiękny kod spaghetti.
Secundo, to dokumentacji do PHP prawdopodobnie nie czytałeś. Używasz na oślep funkcji - zastanawiam się czy w ogóle sprawdzałeś co generuje się w pliku wynikowym. Najpierw zorientuj się co robi funkcja której używasz, a potem użyj. Podpowiem, że do pozbycia się znaków nowej linii w treści wystarczy str_replace.

_________________
Zakochanie - to relacja międzyosobowa wynikająca z upodobania sobie w kimś,
powodującego zależność emocjonalną od tego kogoś.
Na miarę siły owej zależności następuje proporcjonalnie:
utrata zdrowego rozsądku oraz zdolności do samodecydowania.
o. Paweł Gużyński OP
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
matii578



Dołączył: 18 Gru 2011
Posty: 12

PostWysłany: Czw Lut 02, 2012 7:02 pm      Temat postu: Odpowiedz z cytatem Pisownia

Ok. Dzięki. Jestem samoukiem. Ale nie rozumiem co jest źle w moim HTML. Jakbyś mógł to mi odpowiedz. PHP dopiero zacząłem się uczyć (jestem dopiero na 200 stronie poradnika), a to był mój pierwszy skrypt. Nie jestem żadnym doświadczonym informatykiem. Jestem dopiero Gimnazjalistą.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Garf



Dołączył: 25 Maj 2005
Posty: 3348
Skąd: Rzeszów

PostWysłany: Czw Lut 02, 2012 10:45 pm      Temat postu: Odpowiedz z cytatem Pisownia

Skoro jesteś samoukiem, i w dodatku osobą młodą, to najlepszy czas aby korygować nabyte złe nawyki ;) Co złego jest w Twoim kodzie HTML? Ano, bazowy szkielet dla obecnie używanej wersji wygląda tak:
Kod:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
     "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
   <HEAD>
      <TITLE>My first HTML document</TITLE>
   </HEAD>
   <BODY>
      <P>Hello world!
   </BODY>
</HTML>
Ot, choćby brak nagłówka DOCTYPE u Ciebie. Na wielkość liter nie zwracaj uwagi - w HTML jest to bez różnicy.

Zaczynając od początku: HTML i CSS. Jeśli dokumentacja Cię przeraża (a na początkujących tak zwłaszcza działa), na forum toczyły się już dyskusje o kursach w internecie. Ot, chociażby w tym wątku. Ale uwaga! Kurs jest o XHTML - niby to samo, ale troszkę inaczej. W każdym razie kurs da Ci ogólne pojęcie o używaniu tego języka. Dla PHP masz w miarę dobrą dokumentację po polsku - choć najlepiej czytać ją w języku, w którym została napisana (czyli w angielskim).

Na koniec: poprawność kodu HTML najłatwiej sprawdzić na walidatorze. Jak dobrze poszukasz to i do CSS znajdziesz. Osobiście używam jeszcze tego dodatku do Firefox'a. Plus jest taki, że od razu widać czy kod jest poprawny - bez zbędnego klikania po walidatorze.

_________________
Zakochanie - to relacja międzyosobowa wynikająca z upodobania sobie w kimś,
powodującego zależność emocjonalną od tego kogoś.
Na miarę siły owej zależności następuje proporcjonalnie:
utrata zdrowego rozsądku oraz zdolności do samodecydowania.
o. Paweł Gużyński OP
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
matii578



Dołączył: 18 Gru 2011
Posty: 12

PostWysłany: Pią Lut 03, 2012 4:30 pm      Temat postu: Odpowiedz z cytatem Pisownia

Ja poradnik już czytałem "HTML, XHTML i CSS. Biblia" wydawnictwa Helion, ale nie starałem się wszystkiego wkuwać, tylko chciałem mieć ogólny zarys pisania stron. Wiem, że brak mi DOCTYPE, ale jak już pisałem to mój pierwszy skrypt, i nie bawiłem się tutaj w HTML tylko bardziej w PHP. Jeśli chcesz zobaczyć moją stronę, którą napisałem z kolegą to jest pod adresem http://www.lipinkigimnazjum.w.of.pl . Na pewno mamy tam wiele błędów. Spowodowane są one tym, że większość podstron jest przechwytywana z innych serwerów.

Jeśli już wejdziesz to zobacz, że w kontakt (gdzie jest zastosowany powyższy skrypt (naprawiony dzięki twojej pomocy)) server ma problem z otwarciem pliku do zapisywania. Wiesz czym to może być spowodowane???
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Garf



Dołączył: 25 Maj 2005
Posty: 3348
Skąd: Rzeszów

PostWysłany: Nie Lut 05, 2012 10:15 pm      Temat postu: Odpowiedz z cytatem Pisownia

Wkuwając język niczego się nie nauczysz. Pisząc w danym języku, po pewnym czasie będziesz go znał na pamięć. Ale to, że jest to Twój pierwszy skrypt w niczym Cię nie rozgrzesza. Jeśli się uczysz, ucz się poprawnie. Takie prowizorki potem zostają już na dłużej i trudniej je wykorzenić. Prowizorki na zasadzie "ale przecież działa". Nie, nie działa. Działanie jest w tym przypadku efektem ubocznym.

Stronę widziałem, cóż rzec mogę... Ramek unikaj, kodowanie popraw (bo to nie iso-8859-2 tylko windows-1250), na reklamy doklejane (w nieodpowiednim miejscu HTML'a) przez of.pl wpływu nie masz. Błąd z plikiem znany, panaceum dość proste. Serwer WWW nie ma uprawnień, aby taki plik u Ciebie w katalogu domowym strony założyć. Najprościej będzie zrobić pusty plik wiad.wiadomosci lokalnie, wgrać go na serwer i poprzez FTP (zakładam że dostępu do shella, inaczej mówiąc SSH, tam nie masz) wykonać polecenie:
Cytat:
chmod 777 wiad.wiadomosci

No i najlepiej zmień nazwę tego pliku na inny, bo teraz jak podałeś adres do strony to każdy może go sobie odczytać. Generalnie takie rzeczy zabezpiecza się w troszkę inny sposób niż poprzez niepodawanie do publicznej wiadomości nazwy pliku z korespondencją ;) Jeśli strona jest umieszczona na serwerze jakimś podkatalogu, np. public_html, to trzymaj taki plik w katalogu nadrzędnym. Serwer WWW bezpośrednio do niego nie będzie miał dostępu (tzn. nikt nie będzie miał możliwości wpisania odpowiedniego adresu w przeglądarce i otrzymania zawartości pliku). Za to samo PHP dostęp będzie miało, i wszystko będzie działać jak należy. Jedynie odwołanie do pliku zmieni się na coś takiego:
Kod:
fopen("../wiad.wiadomosci", 'ab');

Jeśli coś napisałem niejasno - pytaj :)

_________________
Zakochanie - to relacja międzyosobowa wynikająca z upodobania sobie w kimś,
powodującego zależność emocjonalną od tego kogoś.
Na miarę siły owej zależności następuje proporcjonalnie:
utrata zdrowego rozsądku oraz zdolności do samodecydowania.
o. Paweł Gużyński OP
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
matii578



Dołączył: 18 Gru 2011
Posty: 12

PostWysłany: Pon Lut 06, 2012 3:25 pm      Temat postu: Odpowiedz z cytatem Pisownia

Nazwę oczywiście zmienię. Ale nie rozumiem jak mam wykonać to polecenie:
Cytat:
chmod 777 wiad.wiadomosci
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Garf



Dołączył: 25 Maj 2005
Posty: 3348
Skąd: Rzeszów

PostWysłany: Pon Lut 06, 2012 3:59 pm      Temat postu: Odpowiedz z cytatem Pisownia

Z jakiego klienta FTP korzystasz? Bo zapewne w jakiś sposób pliki na serwer wrzucasz. Jeśli jest to jakiś menedżer okienkowy typu Total Commander, to po prostu łączysz się na swoje konto i polecenie wpisujesz w pasku poleceń (ten na dole, pomiędzy panelami a przyciskami poleceń).
_________________
Zakochanie - to relacja międzyosobowa wynikająca z upodobania sobie w kimś,
powodującego zależność emocjonalną od tego kogoś.
Na miarę siły owej zależności następuje proporcjonalnie:
utrata zdrowego rozsądku oraz zdolności do samodecydowania.
o. Paweł Gużyński OP
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
matii578



Dołączył: 18 Gru 2011
Posty: 12

PostWysłany: Wto Lut 07, 2012 8:58 pm      Temat postu: Odpowiedz z cytatem Pisownia

Korzystam z FileZilla i nie widzę tam paska poleceń.

(Połączyłem posty. - Samolot) - Zobacz porady jak nie pisać posta pod postem

Ok. znalazłem, wpisałem ale nic to nie dało
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Garf



Dołączył: 25 Maj 2005
Posty: 3348
Skąd: Rzeszów

PostWysłany: Wto Lut 07, 2012 11:34 pm      Temat postu: Odpowiedz z cytatem Pisownia

W sumie to zapomniałem zapytać jak wygląda opis błędu. Usuń tymczasowo znak '@' sprzed wywołania funkcji fopen i podrzuć błąd jaki wyrzuci.
_________________
Zakochanie - to relacja międzyosobowa wynikająca z upodobania sobie w kimś,
powodującego zależność emocjonalną od tego kogoś.
Na miarę siły owej zależności następuje proporcjonalnie:
utrata zdrowego rozsądku oraz zdolności do samodecydowania.
o. Paweł Gużyński OP
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> PHP Wszystkie czasy w strefie CET (Europa)
Idź do strony 1, 2  Następny
Strona 1 z 2

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.41957 sekund, zapytan = 9
contact

| Darmowe programy i porady Jelcyna | VB4all | Tansze zakupy w Helionie |