Puchacz1 Opublikowano 18 Czerwca 2010 Zgłoś Opublikowano 18 Czerwca 2010 a więc: $haslo = MD5("qwerty"); $connect = mysql_connect(); $dbname = 'users'; $query ='CREATE DATABASE '.$dbname; mysql_query($query); mysql_select_db('users'); $zapytanie = 'CREATE TABLE nba (id int NOT NULL AUTO_INCREMENT, nick char(30), imie char(30), nazwisko char(15), email char(25), haslo char(30), PRIMARY KEY(id))'; $zapytanie2 = "INSERT INTO `nba` (`id`, `nick`, `imie`, `nazwisko`, `email`, `haslo`) VALUES ('','Puchacz', 'Kelly', 'Bundy', 'Bundy@interia.pl', '".$haslo."')"; mysql_query($zapytanie); mysql_query($zapytanie2); mysql_close($connect); tak stworzyłem bazę danych => wszystko działa, sprawdzone poleceniem SELECT * FROM xxx teraz chcę porównać wpisane hasło i login z tymi z bazy danych: $dana = $_POST['password']; $pw = MD5($dana); $connect_db = mysql_connect('localhost', 'root'); mysql_select_db('users'); $quest = "SELECT `nick`, `haslo` FROM nba WHERE `nick` = '{$_POST['login']}' AND `haslo` = '{$pw}'"; echo($quest); $query = mysql_query($quest); $check = mysql_fetch_row($query); mysql_close($connect_db); echo $check[0][1]; jednak tak się nie da. To co zapisane w bazie danych różni od tego co kodowałem MD5. Wygląda to tak: qwerty = d8578edf8458ce06fbc5bb76a58c5ca4 to co w bazie: d8578edf8458ce06fbc5bb76a58c5c nie rozumiem dlaczego tak się dzieje i przede wszystkim nie wiem czy dobrze stworzyłem tą bazę danych i czy poprawnie się do niej odwołuję. Jak to odczytać i porównać... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
luk1999 Opublikowano 18 Czerwca 2010 Zgłoś Opublikowano 18 Czerwca 2010 Utworzyłeś za krótkie pole do przechowywania hasła. Powinno mieć 32 znaki, a nie 30 :). Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 18 Czerwca 2010 Zgłoś Opublikowano 18 Czerwca 2010 poprawione, nadal nie działa to jak powinno. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
stivo Opublikowano 18 Czerwca 2010 Zgłoś Opublikowano 18 Czerwca 2010 $dana = $_POST['password']; $pw = MD5($dana); $connect_db = mysql_connect('localhost', 'root'); mysql_select_db('users'); $quest = "SELECT `nick`, `haslo` FROM nba WHERE `nick` = '{$_POST['login']}' AND `haslo` = '{$pw}'"; echo($quest); $query = mysql_query($quest); $check = mysql_fetch_row($query); mysql_close($connect_db); echo $check[0][1]; A jak ktoś wpisze złe hasło to nie zwróci wyniku i klops :P IMO najpierw dobrze jest sprawdzić czy użytkownik jest w bazie (SELECT * FROM nba WHERE 'nick' = '{$_POST['login']}'). Dostaniesz jeden wiersz lub żadnego w zależności od tego czy jest w bazie czy nie (w tym miejscu komunikat, że nie ma takiego użytkownika). Potem wybierasz z zapytania pole z hasłem i sprawdzasz czy się zgadzają. Przy błędzie - komunikat. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 18 Czerwca 2010 Zgłoś Opublikowano 18 Czerwca 2010 wiem, że finalnie musi to wyglądać inaczej jednak na razie chcę taką wersję zastępczą uruchomić. Wiem, że user jest w bazie. Sam go tam na sztywno wprowadziłem Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 19 Czerwca 2010 Zgłoś Opublikowano 19 Czerwca 2010 echo $check[0][1];Wyświetliło "u"? Wywal [1], dostaniesz "Puchacz". Albo lepiej, zamień tę linijkę na print_r($check);...i zobacz co wypisze. Przy błędnym loginie/haśle nie powinno być nic, przy poprawnym wszystko,co pobierałeś z bazy. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 19 Czerwca 2010 Zgłoś Opublikowano 19 Czerwca 2010 (edytowane) mar, działa - już wczoraj to odkryłem :). Mimo to dzięki. inny problem: 1.problem jest taki. Za pomocą funkcji glob() pobieram nazwy obrazków które są od teraz tablicą. Jak zrobić by po naciśnięciu nast/poprzedni dodało lub odjęło wartość od klucza tablicy o coś takiego chodzi: $zmienna[$klucz] = nazwa_obrazka // przy czym $klucz jest liczbą!. // jeśli nacisnę dodaj do $klucz zostanie dodane 1 2.dlaczego glob('nazwa_pliku.jpg) nie odczytuje plików o rozszerzeniu JPG. Domyślam się, że winna jest tutaj wielkość liter, jak więc to pominąć. nie szukam gotowego rozwiązania, chciałbym abyście mi podpowiedzieli jak się za to zabrać. Edytowane 21 Czerwca 2010 przez Puchacz1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 21 Czerwca 2010 Zgłoś Opublikowano 21 Czerwca 2010 (edytowane) Ad. 1. Robisz dodatkową zmienną 'obecny', przesyłasz ją w $_GET, a potem zwiększasz o 1 dla następnego i zmniejszasz o 1 dla poprzedniego. Nie chcesz gotowca, więc przez grzeczność (:lol:) go nie podam. Link "poprzedni" przesyła do kolejnej podstrony z tą zmienną zmniejszoną o 1, link "następny" do podstrony z tą zmienną zwiększoną o 1. Jeżeli zmienne są: poprzednia - mniejsza od 0 następna - większa od ilości elementów w tablicy -1 ...nie tworzysz linków "poprzedni", albo "następny". Chyba tyle. Przykładowe linki dla zmiennej "obecny=3": <a href="?obecny=2">poprzedni</a> <a href="?obecny=4">następny</a> Ad. 2. Ktoś w manualu php napisał, że glob pod windowsem ma problem przy rozpoznawaniu dużych i małych liter, kiedy jest użyte coś w stylu glob('*.jpg'); Jak to obejść? Najprościej pewnie przetestować na linuxie, albo zmienić wszystkie rozszerzenia na małe. Ewentualnie pobierać listę plików w katalogu czymś innym. Edytowane 21 Czerwca 2010 przez m4r Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 21 Czerwca 2010 Zgłoś Opublikowano 21 Czerwca 2010 (edytowane) 1.m4r - przede wszystkim nie rozumiem jak miałaby się odbywać to dodawanie lub odejmowanie. Bo jak do zmiennej dodać lub odjąć jakąś wartość bez definiowania np. name=dodaj lub odejmij i użycia if do wybierania i dodawania lub odejmowania wartości. 2.Niemniej jednak po Twoich słowach wpadłem na pewien tor jednak nie jest on do końca poprawny a ja nie potrafię go rozbudować. Cały czas mam wrażenie, że czegoś nie umiem, czegoś nie rozumiem. Do rzeczy, napisałem coś takiego - teoretycznie działa jednak wyświetla stronę -1 oraz przy "następnie" następnie przeskakuje od razu do strony pierwszej. <?php if(isset($_GET['obecny']) && $_GET['obecny'] >= 0) { $obecny = $_GET['obecny']; } else { $obecny = 0; } ?> <a href="galeria.php?obecny=<?php echo($obecny - 1); ?>">poprzedni</a> <a href="galeria.php?obecny=<?php echo($obecny + 1); ?>">następny</a> powiedzcie mi w kilku słowach dlaczego mój tok myślenia jest zły i jak go naprawić. EDIT: napisałem jeszcze coś takiego jednak nie rozumiem działania tego co napisałem (czy to możliwe? :P). Teoretycznie działa, jednak brak mu ogranicznika. <?php if(isset($obecny) && $obecny = -1 || $obecny = 1) { $obecny=0; } else { $obecny = $_GET['obecny']; } ?> <a href="galeria.php?obecny=<?php echo($obecny - 1); ?>" name="add">poprzedni</a> <a href="galeria.php?obecny=<?php echo($obecny + 1); ?>" name="odejmij">następny</a> teraz spróbuję wytłumaczyć co to robi wg. mnie. 1. Jeśli jest ustawiona zmienna obecny i zmienna obecny jest równa -1 lub 1 ustawiamy zmienną obecną równą 0 => właśnie, dlaczego to działa tak, że jak jest ustawiona zmienna 1 lub -1 to nie ustawia $obecny na 0 tylko zostawia zmienna obecny przy swojej wartości. 2. Jeśli zmienna obecna różna od -1,1 to pobiera zmienną obecny z formularza. Edytowane 21 Czerwca 2010 przez Puchacz1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 21 Czerwca 2010 Zgłoś Opublikowano 21 Czerwca 2010 (edytowane) Eee... pierwszy skrypt działa prawie dobrze, drugi też. Dlaczego pierwszy działa tak a nie inaczej? Jeżeli mamy zmienną $_GET['obecny'] i jest większa lub równa 0, to przypisujemy nowej zmiennej $obecny jej wartość Jeżeli nie- nowa zmienna $obecny dostaje wartość 0. I teraz są schody, jeżeli zmienna obecny w _GET jest równa -1 Bo- jeżeli ma -1, to z automatu nie spełnia warunku >=0, a więc zmienna $obecny ma wartość 0. Przez to w linkach będziesz miał wartości -1 i 1 (od razu- bez zera, bo takie się dodają/odejmują w echo). A dlaczego drugi działa jak powinien, chociaż bez ograniczeń? Bo cały if ma niemożliwy do spełnienia warunek- po prostu- zmienna nie jest wcześniej zadeklarowana co już na starcie spowoduje wstawienie pod nią zera, a później przejście do else (bo warunek dla 0 będzie akurat tutaj fałszem). Efekt będzie innymi słowy taki, jakbyś po prostu wywalił wszystko, z wyjątkiem "$obecny = $_GET['obecny'];" Jeżeli zmodyfikujesz warunki do pierwszego skryptu (albo dopiszesz do drugiego po uprzednim wywaleniu całego if - else, z wyjątkiem przypisania $obecny = $_GET...), powinno ruszyć. Warunek 1, dla linka "poprzedni": if($obecny <= 0) echo $obecny;else echo $obecny - 1; Warunek 2 - dla linka "następny" (na przyszłość) // tutaj kod zabezpieczający dla ostatniego elementu tablicy (a.k.a. maksymalnej wartości $obecny), czyli coś w stylu:echo $obecny < count($aPliki)-1 ? $obecny+1 : $obecny; //sorry za short if Aha, jest deko późno i chce mi się spać, więc jest szansa, że coś nakręciłem. Jeżeli coś będzie niejasne, to jest równie spora szansa, że gdzieś tak koło południa poprawię ten tekst, jeżeli mi się nie spodoba. Btw. Bo jak do zmiennej dodać lub odjąć jakąś wartość bez definiowania np. name=dodaj lub odejmij i użycia if do wybierania i dodawania lub odejmowania wartości. eee... nie wiem, chodziło mi właśnie o to: echo($obecny - 1); echo($obecny + 1); Edytowane 21 Czerwca 2010 przez m4r Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 25 Czerwca 2010 Zgłoś Opublikowano 25 Czerwca 2010 (edytowane) m4r wszystko działa jak należy, trochę inaczej zapisałem warunek drugi ale jest ok :). może mi ktoś powiedzieć dlaczego nie jest nic dodawane do bazy prócz jej utworzenia? $connect = mysql_connect('127.0.0.1','root'); mysql_query("CREATE DATABASE `produkty`"); mysql_select_db("produkty"); $sql[0] = mysql_query("CREATE TABLE '".$kategoria."' (idkat int NOT NULL AUTO_INCREMENT, firma text(30), produkt text(20), zdjecie text(20), opis text(255), opis_kr text(50), popularnosc int, ocena int, PRIMARY KEY(idkat))"); $sql[1] = mysql_query("INSERT INTO '".$kategoria."' (`idkat`, `firma` `produkt`, `zdjecie`, `opis`, `opis_kr`, `popularnosc`, `ocena`) VALUES ('', '".$firma."', '".$produkt."', '".$zdjecie."', '".$opis."', '".$opis."', '".$opis_kr."', '".$popularnosc."', '".$ocena."')"); mysql_close($connect); echo('Wykonano'.$sql[0].':'.$sql[1]); Edytowane 25 Czerwca 2010 przez Puchacz1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 25 Czerwca 2010 Zgłoś Opublikowano 25 Czerwca 2010 (edytowane) $sql[1] = mysql_query("INSERT INTO '".$kategoria."' (`idkat`, `firma` `produkt`, `zdjecie`, `opis`, `opis_kr`, `popularnosc`, `ocena`) VALUES ('', '".$firma."', '".$produkt."', '".$zdjecie."', '".$opis."', '".$opis."', '".$opis_kr."', '".$popularnosc."', '".$ocena."')"); "INSERT INTO '".$kategoria."'..."zamień na"INSERT INTO `".$kategoria."`..."albo wywal stamtąd całkiem te ciapki. Poza tym masz jeszcze 2x zmienną '$opis'. Edytowane 25 Czerwca 2010 przez m4r Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 25 Czerwca 2010 Zgłoś Opublikowano 25 Czerwca 2010 (edytowane) pozmieniałem co kazałeś zamienić i nadal to samo. Pokażę wobec tego cały plik: <form action="" method="POST"> Kategoria:<input name="kategoria" type="text" /><br /> Firma:<input name="firma" type="text" /><br /> Produkt:<input name="produkt" type="text" /><br /> Zdjecie:<input name="zdjecie" type="text" /><br /> Opis:<input name="opis" type="text" /><br /> Krótki Opis<input name="opis_kr" type="text" /> <input type="submit" value="wyślij" /> </form> <?php $kategoria = trim(addslashes(strip_tags($_POST['kategoria']))); echo($kategoria); $firma = trim(addslashes(strip_tags($_POST['firma']))); $produkt = trim(addslashes(strip_tags($_POST['produkt']))); $zdjecie = trim(addslashes(strip_tags($_POST['zdjecie']))); $opis = trim(addslashes(strip_tags($_POST['opis']))); $opis_kr = trim(addslashes(strip_tags($_POST['opis_kr']))); $popularnosc = trim(addslashes(strip_tags($_POST['popularnosc']))); $ocenta = trim(addslashes(strip_tags($_POST['ocena']))); $connect = mysql_connect('127.0.0.1','root'); mysql_query("CREATE DATABASE `produkty`"); mysql_select_db("produkty"); $sql[0] = mysql_query("CREATE TABLE '".$kategoria."' (idkat int NOT NULL AUTO_INCREMENT, firma text(30), produkt text(20), zdjecie text(20), opis text(255), opis_kr text(50), popularnosc int, ocena int, PRIMARY KEY(idkat))"); $sql[1] = mysql_query("INSERT INTO `".$kategoria."` (`idkat`, `firma` `produkt`, `zdjecie`, `opis`, `opis_kr`, `popularnosc`, `ocena`) VALUES ('', '".$firma."', '".$produkt."', '".$zdjecie."', '".$opis."', '".$opis_kr."', '".$popularnosc."', '".$ocena."')"); mysql_close($connect); echo('Wykonano'.$sql[0].':'.$sql[1]); ?> Edytowane 25 Czerwca 2010 przez Puchacz1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 25 Czerwca 2010 Zgłoś Opublikowano 25 Czerwca 2010 (edytowane) W create table, przy nazwie tabeli też masz nie takie cudzysłowy. Odpalaj sobie zapytania najpierw w phpmyadmin, będziesz mógł "na żywo" podejrzeć błędy i poprawić co trzeba. Dopiero potem wstawiaj poprawne zapytania do skryptu php i podmieniaj odpowiednie dane zmiennymi. btw... do debugu mysql_query("...") or die(mysql_error()) w takim pliczku jest jak znalazł. Potem możesz wyrzucić funkcje zdychania. Edytowane 25 Czerwca 2010 przez m4r Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 26 Czerwca 2010 Zgłoś Opublikowano 26 Czerwca 2010 (edytowane) m4r,zabij mnie ale ja mam stałe problemy z tymi bazami :). Tym razem przetestowałem wszystko w phpmyadmin i nie działa. Do rzeczy, w phpmyadmin SHOW TABLES FROM `produkty` zwraca dwie tabele(prawidłowo)[karty graficzne oraz zasilacze] natomiast jak to samo robię już w kodzie php przez mysql_query to zwraca mi tylko tabele karty graficzne. Google mi nie pomógł, więc pytam tutaj - dlaczego tak jest i jak to naprawić. Edytowane 26 Czerwca 2010 przez Puchacz1 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 28 Czerwca 2010 Zgłoś Opublikowano 28 Czerwca 2010 Na pewno masz dobrze zapytania? Nigdy się nie spotkałem z czymś takim, żeby w PMA wyświetlało jedno, a w skrypcie - drugie. Aczkolwiek... to zwraca mi tylko tabele karty graficzne. A czy "show tables..." wywołujesz przed, czy już po utworzeniu tabeli "zasilacze" w skrypcie? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...