Nie można połączyć się z bazą.

PHP to skryptowy język wykonywany po stronie serwera. Forum przeznaczone na pytania dot. programowania obiektowego, wzorców projektowych itp.
Awatar użytkownika
Crystianos
Posty: 32
Rejestracja: 20 sie 2013, 19:06

Nie można połączyć się z bazą.

Post autor: Crystianos » 22 sie 2013, 21:22

Hej. Mam taki problem, otóż chciałem zrobić prosty formularz dodający nowego użytkownika do bazy i wyczytałem, że trzeba wykorzystać polecenie INSERT.
Moje polecenie wygląda w ten sposób:

Kod: Zaznacz cały

$zapytanie = "INSERT INTO users (`id`, `login`, `haslo`, `mail`) VALUES ('', '$login', '$haslo', '$mail')";
Nie wiem co jest nie tak, bo pokazuje informacje, że nie może połączyć z bazą. Gdzie szukać problemu?

Awatar użytkownika
Fanatyk
Posty: 88
Rejestracja: 21 sie 2013, 13:27

Re: Nie można połączyć się z bazą.

Post autor: Fanatyk » 22 sie 2013, 21:26

Kolego a jak chcesz z kimś przez telefon to chyba najpierw musisz wybrać do niego numer i się połączyć?
Widzę, że dopiero stawiasz pierwsze kroki w tej tematyce i czuję się zmuszony zapytać:
1) czy masz polecenie połączenia się z bazą danych?
2) czy wskazałeś na jakieś tablicy działanie ma być wykonane?
Wydaje mi się, że na oba pytania odpowiesz przecząco. Póki co samo zapytanie wydaje się być w porządku, więc przyczyny szukałbym gdzie indziej.

Awatar użytkownika
Crystianos
Posty: 32
Rejestracja: 20 sie 2013, 19:06

Re: Nie można połączyć się z bazą.

Post autor: Crystianos » 22 sie 2013, 21:32

Przyznaję, zupełnie o tym zapomniałem. A takie połączenie z bazą to jak najlepiej powinno wyglądać i jak wskazać na której tablicy będziemy operować? Bo nie powiem, coś tam kiedyś się zagłębiałem, ale to było dawno a pamięć już nie jest ta. Ewentualnie jak jeszcze zrobić sprawdzenie przy zakładaniu konta czy oba hasła są takie same? Bo wykorzystanie :

Kod: Zaznacz cały

$haslo==$haslo2
nie będzie dobre?

Awatar użytkownika
Fanatyk
Posty: 88
Rejestracja: 21 sie 2013, 13:27

Re: Nie można połączyć się z bazą.

Post autor: Fanatyk » 22 sie 2013, 21:51

Za połączenie z bazą odpowiada takie cuś:
$sql_conn = mysql_connect('host', 'user', 'password')
Gdzie host to miejsce hostowania, user to użytkownik a password jak nie trudno zgadnąć jest to hasło.
Wybrać bazę danych na której będziemy pracować możemy wybrać poprzez takie cudo:

Kod: Zaznacz cały

mysql_select_db('nazwa_bazy_danych')
Wszystko już gra i trąbi?

Awatar użytkownika
Crystianos
Posty: 32
Rejestracja: 20 sie 2013, 19:06

Re: Nie można połączyć się z bazą.

Post autor: Crystianos » 22 sie 2013, 22:14

Działa i to elegancko. Jednakże dalej nie wiem jak to zrobić z hasłami, by sprawdziło czy są takie same. Bo przy rejestracji wiadomo, ktoś gdzieś może literówkę strzelić ale jak wklepie dwa razy to samo hasło to już można przyjąć, że o takie właśnie mu chodziło. Zastanawiam się co by było w sytuacji jakby ktoś w ogóle nie wpisał hasła. Przeszłoby takie rozwiązanie?

Awatar użytkownika
Fanatyk
Posty: 88
Rejestracja: 21 sie 2013, 13:27

Re: Nie można połączyć się z bazą.

Post autor: Fanatyk » 22 sie 2013, 22:26

Co do weryfikacji hasła zastosuj:

Kod: Zaznacz cały

if ($_POST['haslo']===$_POST['haslo2']) {
echo 'hasła się zgadzają';} 
else echo ' hasła nie są identyczne' ;
Co do pustego hasła można zastosować prostą indiańską sztuczkę:

Kod: Zaznacz cały

if (empty($_post['haslo']) echo ' nie podano hasła' 

Awatar użytkownika
Thomas_Z
Posty: 47
Rejestracja: 21 sie 2013, 13:20

Re: Nie można połączyć się z bazą.

Post autor: Thomas_Z » 23 sie 2013, 15:47

A jak jest bezpieczniej, otwierać połączenie z bazą na początku i zamykać na samym końcu po wykonaniu wszystkich funkcji, czy otwierać bezpośrednio przed funkcją i po jej wykonaniu od razu zamykać? Jak dodatkowo się zabezpieczać by nie nikt niepowołany się nie dostał?

Awatar użytkownika
Fanatyk
Posty: 88
Rejestracja: 21 sie 2013, 13:27

Re: Nie można połączyć się z bazą.

Post autor: Fanatyk » 23 sie 2013, 15:56

Nie wiem jak inni ale ja preferuję otwieranie i zamykanie tylko na czas wykonywania na niej operacji.
Przed czym trzeba się zabezpieczyć ? Przede wszystkim największym zagrożeniem jest SQL Injecion, polegające na "wstrzyknięciu" zapytania do bazy mogącego zaburzyć jej funkcjonowanie, np poprzez usunięcie tabeli.
Dzieje się tak na przykład w przypadku braku filtrowania, przez co ktoś może w formularzu logowania dać zapytanie drop table users co wiadomo jaki przyniesie skutek. Jak się przed tym zabezpieczyć? Najprościej wykorzystywać funkcję addslashes()...

Awatar użytkownika
BlondKate
Posty: 51
Rejestracja: 20 sie 2013, 19:14

Re: Nie można połączyć się z bazą.

Post autor: BlondKate » 24 sie 2013, 20:22

Fanatyk możesz coś więcej napisać od tej funkcji addslashes? Coś gdzieś kiedyś o niej czytałam , ale dalej nie do końca wiem o co w niej tak naprawdę chodzi. Poza tym czego się jeszcze wystrzegać, jeżeli chodzi o mysql? Czy dobrze jest, jeżeli główny user ma inną nazwę przypisaną niż admin czy jest to wygodniejsze i praktyczniejsze rozwiązanie?

Awatar użytkownika
Crystianos
Posty: 32
Rejestracja: 20 sie 2013, 19:06

Re: Nie można połączyć się z bazą.

Post autor: Crystianos » 24 sie 2013, 20:43

SQL Injection? Co to dokładnie jest? Czytałem kilka artykułów na ten temat, ale osoby je piszące miały chyba o tym pojęcie takie samo jak ja i nie do końca były to spójne wyjaśnienia. Czy jest co coś naprawdę niebezpiecznego i czy można się przed tym bronić? Nie chcę by jakiś kretyn z nudów usunął mi całą bazę, bo bez tego cała praca idzie na marne..

ODPOWIEDZ