Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Formularz rejestracji logowania zmiany i przypomnienia hasła PHP MSQL

Krzysiek...87! 09 Wrz 2017 13:45 852 22
  • #1 09 Wrz 2017 13:45
    Krzysiek...87!
    Poziom 6  

    Witam. Proszę o pomoc w rozwiązaniu problemu rejestracji użytkownika po wypełnieniu formularza rejestracji wyświetla się komunikat:

    Parse error: syntax error, unexpected '{' in C:\xampp\htdocs\rozdzial_27\nowa_rejestracja.php on line 33

    Dodam że wszytkie pliki odnośnie rejestracji w wraz z plikiem SQL pochodzą z książki z płyty dvd tak że są skopiowane w pliku funkcje_bazy.php zmieniłem tylko dane do mojej bazy na serwerze lokalnym.

    BAZA DANYCH:
    Formularz rejestracji logowania zmiany i przypomnienia hasła PHP MSQL



    formularz_rejestracji.php format kodowania: UTF-8

    Kod: php
    Zaloguj się, aby zobaczyć kod




    funkcje_bazy.php format kodowania: UTF-8 (bez BOM)
    Kod: php
    Zaloguj się, aby zobaczyć kod

    nowa_rejestracja.php format kodowania: UTF-8 (bez BOM)
    Kod: php
    Zaloguj się, aby zobaczyć kod


    zakladki SQL format kodowania: ANSI
    Kod: sql
    Zaloguj się, aby zobaczyć kod


    czlonek.php format kodowania: UTF-8 (bez BOM)
    Kod: php
    Zaloguj się, aby zobaczyć kod


    dodaj_zak.php format kodowania: UTF-8 (bez BOM)
    Kod: php
    Zaloguj się, aby zobaczyć kod


    dodaj_zak_formularz.php format kodowania: UTF-8 (bez BOM)
    Kod: php
    Zaloguj się, aby zobaczyć kod

    funkcje_prawid_dane.php format kodowania: UTF-8 (bez BOM)
    Kod: php
    Zaloguj się, aby zobaczyć kod

    funkcje_url.php format kodowania: UTF-8 (bez BOM)
    Kod: php
    Zaloguj się, aby zobaczyć kod


    funkcje_uwierz.php format kodowania: UTF-8 (bez BOM)
    Kod: php
    Zaloguj się, aby zobaczyć kod


    funkcje_wyswietl.php format kodowania: UTF-8 (bez BOM)
    Kod: php
    Zaloguj się, aby zobaczyć kod

    funkcje_zakladki.php format kodowania: UTF-8
    Kod: php
    Zaloguj się, aby zobaczyć kod

    logowanie.php format kodowania: UTF-8
    Kod: php
    Zaloguj się, aby zobaczyć kod

    rekomendacja.php format kodowania:
    Kod: php
    Zaloguj się, aby zobaczyć kod

    usun_zak.php format kodowania: UTF-8 (bez BOM)
    Kod: php
    Zaloguj się, aby zobaczyć kod

    wylog.php format kodowania: UTF-8 (bez BOM)
    Kod: php
    Zaloguj się, aby zobaczyć kod


    zapomnij_formularz.php format kodowania: UTF-8
    Kod: php
    Zaloguj się, aby zobaczyć kod

    zapomnij_haslo.php format kodowania: UTF-8
    Kod: php
    Zaloguj się, aby zobaczyć kod

    zmiana_hasla.php format kodowania: UTF-8 (bez BOM)
    Kod: php
    Zaloguj się, aby zobaczyć kod

    zmiana_hasla_formularz.php format kodowania: UTF-8 (bez BOM)
    Kod: php
    Zaloguj się, aby zobaczyć kod

    0 22
  • #2 09 Wrz 2017 21:55
    310artur
    Poziom 43  

    Cytat:
    try {
    // sprawdzenia wypełnienia formularzy
    if (!wypelniony($_POST)) {
    throw new Exception('Formularz wypełniony nieprawidłowo — proszę wrócić i spróbować ponownie.');
    }


    W tym kawałku masz niezamkniętą klamrę {}

    0
  • #4 11 Wrz 2017 10:35
    Krzysiek...87!
    Poziom 6  

    Poprawiłem błędy ale występuje następny błąd:

    Parse error: syntax error, unexpected T_IF, expecting T_CATCH in C:\xampp\htdocs\rozdzial_27\nowa_rejestracja.php on line 23

    0
  • #6 11 Wrz 2017 12:10
    Krzysiek...87!
    Poziom 6  

    Obecnie wyskakuje taki błąd:

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\rozdzial_27\nowa_rejestracja.php:1) in C:\xampp\htdocs\rozdzial_27\nowa_rejestracja.php on line 11

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\rozdzial_27\nowa_rejestracja.php:1) in C:\xampp\htdocs\rozdzial_27\nowa_rejestracja.php on line 11


    Problem:

    Rejestracja w bazie danych niemo�liwa � prosz� spr�bowa� p�niej.

    0
  • #7 11 Wrz 2017 12:44
    Prot
    Poziom 32  

    Wróć do pierwotnej wersji tego modułu php. Zrestartuj xamppa - sprawdź czy ponownie parser wskaże ten błąd w linii 33 ?
    Napraw ten błąd, zrestartuj serwer i wtedy sprawdź czy będzie działał prawidłowo ? czy jeszcze będzie sypał jakimiś błędami ?

    Dobrze by było sprawdzić też jaką wersję PHP masz w swoim xamppie i jakie wymagania w tym zakresie ma Twój instalowany kod ?

    0
  • #8 11 Wrz 2017 14:01
    Krzysiek...87!
    Poziom 6  

    Udało się zarejestrować użytkownika i zalogować ale po zarejestrowaniu wyskakuje taki błąd:

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\rozdzial_27\nowa_rejestracja.php:1) in C:\xampp\htdocs\rozdzial_27\nowa_rejestracja.php on line 11
    Logo Zak�adkaPHP
    Zak�adkaPHP

    Rejestracja pomyślna

    Rejestracja zakończyła się sukcesem. Proszę udać się na stronę członkowską aby skonfigurować swoje zakładki!
    Strona członkowska


    Po usunięciu lini 11:

    session_start();

    Tego błędu nie ma ale nie wiem czy linia 11 może być usunięta ?

    0
  • #10 11 Wrz 2017 17:36
    Krzysiek...87!
    Poziom 6  

    Używam Notepad ++ , kodowanie mam UTF-8, rozumiem że mam przestawić na UTF-8 (bez BOM).

    Dodano po 32 [minuty]:

    Po przestawieniu na UTF-8 (bez BOM) błąd nie wyskakuje ale jest problem z polską czcionką:

    Rejestracja pomyślna

    Rejestracja zakończyła się sukcesem. Proszę udać się na stronę członkowską aby skonfigurować swoje zakładki!
    Strona członkowska

    0
  • #11 11 Wrz 2017 19:37
    Prot
    Poziom 32  

    Nie mam w tej chwili dostępu do swojego xamppa, żeby te moje podpowiedzi przetestować :cry:

    Cały projekt jest dość rozbudowany więc zmiany wprowadzone w jednym skrypcie (w zakresie kodowania) mogą rzutować na pracy innych modułów i Twojej bazy.

    Intuicyjnie (wiedząc, że błąd wcześniejszy związany był z "białymi znakami" w 11 linii), wróciłbym do kodowania UTF-8 i z menu edycji - w operacji na białych znakach usunąłbym wszystkie spacje na początku linii w całym skrypcie :idea:

    0
  • #12 11 Wrz 2017 20:00
    310artur
    Poziom 43  

    Na samym początku problem był typowy dla początków skryptowania. Tylko dlatego się odezwałem że na tym poziomie sam pozostaje. W PHP ale i w java script trzeba pilnować żeby każdy otwarty nawias i klamra był zamknięty. A tu pojawiają niezamknięte nawiasy i stąd błędy.

    Autor zamiast usuwać błędy linia po linii namieszał po całości i teraz będzie łatwiej zacząć od początku niż to poprawić.

    0
  • #13 11 Wrz 2017 21:33
    Krzysiek...87!
    Poziom 6  

    Może chodzi o bazę danych (moja baza jest wygenerowana z pliku SQL który był dołączony do książki) metoda porównywania napisów to latin1_swedish_ci
    Dołączyłem jako załącznik obrazek mojej bazy danych.Formularz rejestracji logowania zmiany i przypomnienia hasła PHP MSQL
    Zmieniełem w mojej bazie danych porównywanie napisów na utf8_polish_ci poniżej dodałem obrazek mojej bazy danych po zmianie.

    Ale czcionka nadal po zarejestrowaniu nie jest polska.
    Może trzeba pozmieniac kodowanie we wszystkich plikach na utf8 ale nie wiem czy wszedzie (bez BOM)?Formularz rejestracji logowania zmiany i przypomnienia hasła PHP MSQL

    0
  • #14 11 Wrz 2017 22:51
    Prot
    Poziom 32  

    No tak chodzi o Twoją bazę i wszystkie skrypty, które z nią pracują. Dlatego proponowałem poprzednio powrót do pierwotnego kodowania skryptu na UTF-8, żeby nie mieszać kodowania w bazie, przywrócić prawidłowe wyświetlanie polskich "krzaczków" i "ręczne" wycinanie "białych znaków" przed poleceniem uruchomienia sesji. :cry:

    O złożonych zależnościach kodowania bazy MySQL i korzystających z niej skryptów :idea: warto poczytać Link

    0
  • #15 12 Wrz 2017 12:31
    Krzysiek...87!
    Poziom 6  

    Poprzestawiałem kodowanie w wszystkich plikach po czym nie ma żadnych błędów i nie ma problemów z czcionką. W nie których plikach kodowanie musiało być utf-8 a w niktórych utf-8 (bez BOM)
    PROSZĘ jeszcze o pomoc w napisaniu formularza przypomnienia hasła(nie zmiany hasła tylko przypomnienia hasła)?

    Po niżej formaty kodowania w wszystkich plikach:
    czlonek.php UTF-8 (bez BOM)
    dodaj_zak.php UTF-8 (bez BOM)
    dodaj_zak_formularz.php UTF-8 (bez BOM)
    english.plik0 ANSI
    formularz_rejestracji.php UTF-8
    funkcje_bazy.php UTF-8 (bez BOM)
    funkcje_prawid_dane.php UTF-8 (bez BOM)
    funkcje_url.php UTF-8 (bez BOM)
    funkcje_uwierz.php UTF-8 (bez BOM)
    funkcje_wyswietl.php UTF-8 (bez BOM)
    funkcje_zakladki.php UTF-8
    logowanie.php UTF-8
    nowa_rejestracja.php UTF-8 (bez BOM)
    rekomendacja.php UTF-8
    usun_zak.php UTF-8 (bez BOM)
    wylog.php UTF-8 (bez BOM)
    zakladki.SQL ANSI (ale w bazie ręcznie zmieniełem na utf-8_polish-ci)
    zapomnij_formularz.php UTF-8
    zapomnij_haslo.php UTF-8
    zmiana_hasla.php UTF-8 (bez BOM)
    zmiana_hasla_formularz.php UTF-8 (bez BOM)

    0
  • #16 12 Wrz 2017 16:24
    Prot
    Poziom 32  

    Krzysiek...87! napisał:
    PROSZĘ jeszcze o pomoc w napisaniu formularza przypomnienia hasła


    A skąd taki pomysł: przypomnienia hasła :?:

    Ze względów bezpieczeństwa chyba nikt w necie nie stosuje procedury "przypomnienia hasła" - dobrze posolone i zaszyfrowane hasła siedzą sobie w bazie służąc jedynie do weryfikacji uprawnień logującego się użytkownika.

    Nagminne są ataki hackerskie zmierzające do przejęcia bazy danych internetowych witryn. Żaden problem nie stanowi też przejęcie wszystkich skryptów php zainstalowanych na witrynie. Skrypt "przypomnienia hasła" na witrynie to wyraźna prośba "o kłopoty" i przejęcie strony wraz z wszystkimi hasłami przez hackerów. :sm31:

    0
  • #17 12 Wrz 2017 19:12
    Krzysiek...87!
    Poziom 6  

    Chodzi mi o przypomnienie hasła zalogowanego użytkownika(kiedy ktoś zalogowany na mojej stronie za pomnie hasło to żeby miał opcje przypomnienia hasła na jego maila lub tel com) chyba że jest to nie odpowiednie?

    0
  • #18 12 Wrz 2017 19:44
    szwagros
    Poziom 31  

    Krzysiek...87! napisał:
    Poprzestawiałem kodowanie w wszystkich plikach po czym nie ma żadnych błędów i nie ma problemów z czcionką. W nie których plikach kodowanie musiało być utf-8 a w niktórych utf-8 (bez BOM)

    A wystarczyło ustawić kodowanie w sekcji head wypluwanego kodu HTML. Te krzaczki były wyświetlane w utf8 (można to poznać po tym że jeden znak pl powodował dwa krzaczki), ale przeglądarka o tym nie wiedziała.

    1
  • #19 12 Wrz 2017 20:30
    310artur
    Poziom 43  

    Krzysiek...87! napisał:
    przypomnienie hasła zalogowanego użytkownika

    Wcale nie jest to głupia opcja ale niebezpieczna mimo wszystko. Daje furtkę do przechwytywania hasła. Przejęcie sesji jest a mają taką opcje można zaraz przejąć hasło. Różnica jest taka że jak ktoś przejmie sesje to ma dostęp do konta jak długo się nie wyloguje (on albo właściciel). Może ewentualnie próbować zmiany hasła (dlatego zmiana hasła zwykle wymaga podania starego nawet jak jesteś zalogowany). A tak pozna hasło i skradnie konto a właściciel się o tym nawet nie dowie.

    Zamiast opcji przypominania hasła użyj opcji typowo stosowanej w której NOWE tymczasowe hasło jest generowane i wysyłane na mail lub/i telefon. Jeśli taki formularz nie będzie wymagał starego hasła (to założenie bo użytkownik zapomniał) to niech wymaga czegoś innego (pytanie pomocnicze albo coś np. jak u googla) i najlepiej właśnie niech leci na telefon bo tak sporo trudniej to przechwycić.

    0
  • #20 12 Wrz 2017 20:43
    Prot
    Poziom 32  

    Krzysiek...87! napisał:
    chyba że jest to nie odpowiednie?


    Przekonasz się o tym bardzo szybko jak wyjdziesz z localhost na zewnątrz :D

    Odwrócą Ci się priorytety z "ułatwiania logowania" na zabezpieczenie strony przed inwazją hackerów i spamerów. Nie widzisz w sieci te powszechne reCAPTCHA przy logowaniu i często wycinane możliwości autorejestracji :cunning: - to efekt właśnie aktywnej samoobrony przed internetowymi intruzami. :spoko:

    0
  • #21 12 Wrz 2017 21:12
    Krzysiek...87!
    Poziom 6  

    szwagros w którym pliku wystarczyło zmienić kodowanie w sekcji head wypluwanego kodu HTML?
    Skoro jest to szybsze rozwiązanie to chciałbym to wiedzieć ale nie wiem gdzie dokładnie to zmienić?

    0
  • #23 13 Wrz 2017 15:31
    Krzysiek...87!
    Poziom 6  

    WSZYSTKIE PLIKI NA POCZĄTKU TEMATU POPRAWIŁEM TAKŻE POWINNO WSZYSTKO DZIAŁAĆ

    Rozumiem że mam to dopisać do moich plików php w sekcji head(do plików w których istnieje sekcja head)?
    Które kodowanie będzie lepsze iso-8859-2 czy utf-8 ?

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
    .....
    </head>
    Strony wielojęzyczne
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    .....
    </head>

    Dodano po 5 [godziny] 23 [minuty]:

    Wszystko działa.
    Temat uważam za zamknięty.

    Wielkie dzięki dla Prot, 310Artur i szwagros

    0