System logowania php - mały problem

System logowania php - mały problem
KO
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 10 lat
  • Postów:9
0

Witam, po kliknięciu przycisku zalogowania włącza się po prostu biała strona w pliku LOGIN.PHP. Oto kody plików, będę wdzięczny za pomoc.

login.php

Kopiuj
<?php
    session_start(); // rozpoczęcie sesji
     
    if (!isset($_SESSION['login'])) { // dostęp dla niezalogowanego użytkownika
     
        if ($_POST['login-form']) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
     
            include 'connection.php'; // połączenie się z bazą danych
            $tabela = 'lista'; // zdefiniowanie tabeli MySQL
     
            $login = $_POST["login"];
            $haslo = $_POST["haslo"];
     
            $haslo = md5($haslo); // szyfrowanie podanego hasła
     
            $wynik=mysql_query("SELECT * FROM $tabela WHERE
           nick='$login' and haslo='$haslo' and status=0");
     
            // jeżeli użytkownik zarejestrował się, a nie aktywował swojego konta, to wyświetla się komunikat
            if (mysql_num_rows($wynik) == 1) {
                $informacja = mysql_fetch_array($wynik);
                echo '<p>Nie aktywowałeś jeszcze swojego konta. Aby to zrobić, wejdź w swoją skrzynkę odbiorczą, a następnie znajdź wiadmość z linkiem aktywacyjnym i aktywuj swoje konto</p>';
                exit;
            }
     
            // jeżeli wszystko jest dobrze, użytkownik się loguje
            $wynik=mysql_query("SELECT * FROM $tabela WHERE
           nick='$login' and haslo='$haslo' and status=1");
     
            if (mysql_num_rows($wynik) == 1) {
                $informacja = mysql_fetch_array($wynik);
                $_SESSION["login"] = $informacja["login"];
                header('Location: tajne.php ');
            } else {
                echo '<p>Zostały wprowadzone nieprawidłowe dane</p>';
            }
		}
	}
?>

Tabela 'lista' w MySQL

user image

A tutaj formularz logowania:

Kopiuj
<form name="login-form" class="login-form" action="login.php" method="post">

	<!--HEADER-->
    <div class="header">
    <!--TITLE--><h1>Logowanie</h1><!--END TITLE-->
    <!--DESCRIPTION--><span>Wpisz adres email i hasło, aby przejść do panelu użytkownika.</span><!--END DESCRIPTION-->
    </div>
    <!--END HEADER-->

	<!--CONTENT-->
    <div class="content">
	<!--USERNAME--><input name="login" type="text" class="input username" value="Nick" onfocus="this.value=''" /><!--END USERNAME-->
    <!--PASSWORD--><input name="haslo" type="password" class="input password" value="Hasło" onfocus="this.value=''" /><!--END PASSWORD-->
    </div>
    <!--END CONTENT-->

    <!--FOOTER-->
    <div class="footer">
    <!--LOGIN BUTTON--><input type="submit" name="submit" value="Login" class="button" /><!--END LOGIN BUTTON-->
    </div>
    <!--END FOOTER-->

</form>

Jeśli potrzebne są jeszcze inne dane to prosze napisać.
Zaznaczam, że jestem poczatkujący w PHP

zamiana znacznika <code class="ini"> na <code class="html"> - fp

edytowany 3x, ostatnio: flowCRANE
hzmzp
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 24 godziny
  • Postów:620
0
  1. Co jest w tajne.php, connection.php
  2. Podatne na SQL Injection
  3. Brak optymalizacji, po co wykonywać 2 zapytania jak można jedno.
  4. Korzystaj z modułu MySQLi mysql jest przestarzały!
  5. Oducz się nazywanie zmiennych polskimi słowami, wyobraź sobie kod pisany przez Rosjanina zachowującego się jak ty.
  6. Sprawdź konfiguracje PHP pod kątem wyświetlania błędów, bo możesz mieć je całkowicie wyłączone.
edytowany 1x, ostatnio: hzmzp
hzmzp
literówka xD
flowCRANE
&quot;wyobraź sobie kod pisany przez Rosjanina zachowującego się jak ty.&quot; - a wyobraź sobie Azjatów o.O
Ola Nordmann
Ała mÓj musk! :(
KO
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 10 lat
  • Postów:9
0

connection.php

Kopiuj
<?php
function connection() {
        // host
        $mysql_host = "localhost";
        // user
        $mysql_user = "*******";
        // hasło
        $mysql_pass = "*******";
        // nazwa bazy
        $mysql_db = "********";
        // nawiązujemy połączenie z serwerem MySQL
        @mysql_connect($mysql_host, $mysql_user, $mysql_pass)
        or die('Brak połączenia z serwerem MySQL.');
		  mysql_query("set names 'utf8'");
        // łączymy się z bazą danych
        @mysql_select_db($mysql_db)
        or die('Błąd wyboru bazy danych.');
}

?>

tajne.php

Kopiuj
<?php include("connection.php");
$nick = $_SESSION['login'];
$haslo = $_SESSION['haslo'];
    if ((empty($nick)) AND (empty($haslo))) {
echo '<br>Nie byłeś zalogowany albo zostałeś wylogowany<br><a href="index.php">Strona Główna</a><br>';
exit;
}
$user = mysql_fetch_array(mysql_query("SELECT * FROM lista WHERE `nick`='$nick' AND `haslo`='$haslo' LIMIT 1"));
    if (empty($user[id]) OR !isset($user[id])) {
echo '<br>Nieprawidłowe logowanie.<br>';
exit;
}
// tresc dla zalogowanego uzytkownika
echo 'Witaj '.$user[login].' zostałeś/aś pomyślnie zalogowany/a, tutaj umieść ukryta strone tylko dla zalogowanych';
echo '<br><a href="wyloguj.php">Wyloguj mnie</a>';
?>
  1. Jak można się przed tym zabezpieczyć?
  2. Przepraszam, jestem początkujący, możesz mnie jakoś naprowadzić?
  3. Co do MySQLi to nie wiem czy jest sens się w to bawić, skoro to i tak nie będzie zbyt zaawansowana aplikacja internetowa.
  4. Tutaj masz rację, poprawię się.
  5. Jak to zrobić? Jeszcze raz zaznaczam, że dopiero zaczynam z PHP, aczkolwiek parę malych projektów bez MySQL mam za soba. Teraz uczę się MySQL i są już problemy..

Dziekuję

hzmzp
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 24 godziny
  • Postów:620
0
  1. http://pl.wikipedia.org/wiki/SQL_injection
  2. Jest sens bo to PODSTAWA!
  3. Plik php.ini znajdź error_reporting i ustaw na E_ALL | E_STRICT
  4. Tak mniej-więcej to powinno wyglądać.
Kopiuj
$query=mysql_query("SELECT * FROM $tableUsers WHERE login='$login' AND haslo='$pass'")or die(mysql_error());
   $r=mysql_fetch_array($query);
   if($r['id']<0){
    echo 'Błędne dane logowania';
   }else if($r['status']==0){
    echo 'Nie aktywowano konta';
....

Ogół:
Co do reszty to polecam Ci zacząć od nowa wszystko bo zrobiłeś masę podstawowych błędów a prościej będzie napisać od nowa niż poprawiać to...
Bark inicjacji connection(), w tabeli nie ma pola status, brak inicjacji sesji w tajne.php, i wiele innych.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)