Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z prostym skryptem zapisującym tresc do pliku
Forum PHP.pl > Forum > Przedszkole
Bastian
Witam,
Na początek chciałbym serdecznie wszystkich przywitać na tym forum. Mam nadzieje, że nie będe dla Was zbyt dużym ciężarem winksmiley.jpg

Jakiś czas temu zacząłem przygode z PHP, uczę się jak narazie z wolnej książki na wikibooks, i po przeczytaniu gdzieś mniejwięcej połowy czas troche na praktykę. Przyjąłem metodologie małych kroczków, czyli mam zamiar zbudować jakąś tam prostą aplikację, wykorzystując to co już teoretycznie umiem. Na początek chciałem stworzyć formularz, który będzie zapisywał login, hasło oraz mail do pliku baza.txt (będzie to fragment aplikacji odpowiedzialnej za rejestrację uzytkownika). Jednak napotkałem problem. Otóż, po wprowadzeniu prawidłowych danych, skrypt i tak cały czas informuje mnie, że dane są nieprawidłowe. Chyba coś z if'em sprawdzającym poprawnośc emaila,bo jak zakomentuje je to skrypt poprawnie mnie o dobrze wprowadzonych danych....ale i tak nie zapisuje nic do pliku baza.txt....nie wiem, musze gdzieś mieć błąd logiczny ale o 12 w nocy juz nic nie widze winksmiley.jpg
Ktoś pomoże?

Kod
<?php
    
    define('BAZA','./baza.txt');
    
    function Dodawanie($login, $haslo, $email)
        {
            if(strlen($login) < 3)
                {
                return false;
                }
            if(strlen($haslo) < 3)
                {
                return false;
                }
            if(!preg_match("/^[a-zA-Z0-9\.\_\-]+\@[a-zA-Z0-9\.\_\-]+\.{2-4}[a-z]$/D",$email))
                {
                return false;
                }
            
        $baza = fopen('BAZA',"a");
            
            $tablica_bazy = array (0 =>
                                (nl2br(htmlspecialchars($login))),
                                (nl2br(htmlspecialchars($haslo))),
                                (nl2br(htmlspecialchars($email)))
                                  );

                fwrite($baza, implode("\r\n",$tablica_bazy)."\r\n\r\n\r\n");
                fclose($baza);
            
        return true;
        }

if ($_SERVER['REQUEST_METHOD'] == "POST")
    {
            if(Dodawanie($_POST['login'],$_POST['haslo'],$_POST['email']))
                {
                    echo '<p>Dziekujemy, twoje konto zostalo utworzone</p>';
                }
            else
                {
                    echo '<p>Podales bledne lub za krotkie dane</p>';
                }
        echo '<a href="nauka_php.php">Powrot</a>';
    }
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
   <title>Moj projekt</title>
   </head>
   <body>
   <h1>Moj projekt</h1>
    <form method="post" action="nauka_php.php">
        <h>Login</h>
        <input type="text" name="login" />
        <h>Haslo</h>
        <input type="text" name="haslo" />
        <h>Email</h>
        <input type="text" name="email" />
        <input type="submit" value="wyslij" />
    </form>
     </body>
</html>
wookieb
A przyjrzyj się swojemu preg_match - owi i upewnij się, że jest poprawny... bo mnie wydaje się, że powinno być
Kod
[a-z]{2-4}

a nie
Kod
{2-4}[a-z]


Bastian
Cytat(wookieb @ 15.09.2009, 00:02:36 ) *
A przyjrzyj się swojemu preg_match - owi i upewnij się, że jest poprawny... bo mnie wydaje się, że powinno być
Kod
[a-z]{2-4}

a nie
Kod
{2-4}[a-z]


Rzeczywiscie w książce jest pierw zakres a dopiero potem ilość, jednak nie wiem jakie by to miało mieć znaczenie? W kazdym razie nic to nie pomogło..
Crozin
Nie {2-4}, a {2,4}

(na resztę kodu nie patrzyłem)
Bastian
@Crozin, masz rację, już poprawiłem

Teraz warunki sprawdzające działają poprawnie, w zależności od tego czy wypełnie poprawnie formularz czy nie pojawia się stosowny komunikat, jednak nadal nic nie jest zapisywane do pliku....O co chodzi?

EDIT:

OK znalazlem byka. Trza bylo poprawić:

Kod
$baza = fopen('BAZA',"a");


na

Kod
$baza = fopen(BAZA,'a');


smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.