Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wielkie i małe litery w postgresie...
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
marcinp1984
Witam smile.gif
Zrobiłem sobie panel dodawania nowych użytkowników w moim projekcie, już myślałem że wszystko jest cacy a tu lipa :/ Chce zrobić tak aby przy próbie utworzenia użytkownika wywalało jakiś komunikat jeśli istnieje on już w bazie... i tak jeśli np wpisuje marcin i w bazie też jest marcin to działa ok... ale jeśli wpisze Marcin to takiego użytkownika już dodaje :/ Co może rozwiązać ten problem??
wookieb
Musisz zadac odpowiednie zapytanie
  1. SELECT id FROM userzy WHERE login ILIKE '%wpisane_przez_ciebie_nick%'


I jezeli zwroci jakis rekord tzn ze jest taki uzytkownik.
marcinp1984
No właśnie tyle że takie coś u mnie nie za bardzo chce zadziałać i nie wiem jak z tym sobie poradzić :/
Mam taki oto kod, nie wiem czy w ogóle tak powinno się to robić ale jestem w tym wszystkim początkujący i nie bardzo się znam tongue.gif

  1. <?php
  2. $gatunek = $_POST[gatunek];
  3.  
  4. $result = pg_query("SELECT * FROM gatunki WHERE nazwa_gatunku ='$gatunek'");
  5. $line = pg_fetch_array($result);
  6.  
  7. $gatunek_z_bazy = $line[nazwa_gatunku];
  8.  
  9.   if($gatunek==$gatunek_z_bazy)
  10.      {
  11.      echo "<font style='font-family:chiller;font-size:5mm'><b>TAKI GATUNEK JUŻ ISTNIEJE!!!</b></font><br>";
  12.      }
  13.   else
  14.      {
  15.      $query = pg_query("insert into gatunki values(default, '$gatunek')");
  16.      echo "<font style='font-family:chiller;font-size:5mm'><b>DODANO NOWY GATUNEK</b></font>";  
  17.      }  
  18. else
  19. ?>


No i jak tu teraz coś zrobić żeby wielkość liter nie miała znaczenia??
wookieb
Cytat(marcinp1984 @ 1.06.2009, 21:23:22 ) *
że takie coś u mnie nie za bardzo chce zadziałać\

Jak ma działać skoro W OGÓLE nie zastosowałeś sie do zapytania podanego wyzej
Cytat
i nie wiem jak z tym sobie poradzić :/

A to nie powinno czasem brzmiec "Zróbcie mi to"?\

Ba. Pisałeś o bazie uzytkowników a teraz walisz jakieś gatunki.
marcinp1984
A więc tak... nie jest tak jak pisałeś tylko tak jak miałem to oryginalnie... tak jak pisałeś już przerabiałem i niestety nie dało oczekiwanego rezultatu :/

Faktycznie... bo wkleiłem nie ten kod biggrin.gif No ale to nie robi większej różnicy gdyż dla gatunków to ma działać tak samo jak dla użytkowników... no i działa tak samo źle
wookieb
No to pokaz co zrobiles, czyli jak wykorzystales podane zapytanie,
marcinp1984
ja zrobiłem coś takiego.. aczkolwiek pewnie źle skoro nie chce działać tongue.gif Może już wkleje cały kod żeby było wszystko jasne
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4.  
  5.  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6.  <link rel="Stylesheet" type="text/css" href="index.css">
  7.    
  8. </head>
  9. <body>
  10. <center>
  11.  
  12. <?php
  13. $dbconn = pg_connect("host='localhost' port='5432' dbname='postgres' user='postgres' password='marcin'");
  14.  
  15. $gatunek = $_POST[gatunek];
  16.  
  17. $result = pg_query("SELECT * FROM gatunki WHERE nazwa_gatunku ilike '$gatunek'");
  18. $line = pg_fetch_array($result);
  19.  
  20. $gatunek_z_bazy = $line[nazwa_gatunku];
  21.  
  22. if($gatunek==null)
  23.   {
  24.   echo "<font style='font-family:chiller;font-size:5mm'><b>WYPEŁNIJ WSZYSTKIE WYMAGANE POLA!!!</b></font>";
  25.   }
  26. else
  27.   {
  28.   if($gatunek==$gatunek_z_bazy)
  29.      {
  30.      echo "<font style='font-family:chiller;font-size:5mm'><b>TAKI GATUNEK JUŻ ISTNIEJE!!!</b></font><br>";
  31.      }
  32.   else
  33.      {
  34.      $query = pg_query("insert into gatunki values(default, '$gatunek')");
  35.      echo "<font style='font-family:chiller;font-size:5mm'><b>DODANO NOWY GATUNEK</b></font>";  
  36.      }  
  37.   }
  38.  
  39. pg_close($dbconn);
  40. ?>
  41.  
  42. </center>
  43. </body>
  44. </html>
wookieb
  1. <?php
  2. if(mb_strtolower($gatunek, 'nazwa_kodowania_ktorego_uzywasz')==mb_strtolower($gatunek_z_bazy, 'nazwa_kodowania_ktorego_uzywasz'))
  3. ?>

Pomijaac ten aspekt ze i tak to jest zbedne.
Wystarczy samo
  1. <?php
  2. if(empty($gatunek_z_bazy))
  3. {
  4. // nie ma jeszcze takiego rekordu
  5. }
  6. else
  7. {
  8. //jets taki rekord
  9. }
  10. ?>
marcinp1984
yyyy... no dobra ale w które miejsce ja mam to dodać? Albo zamiast czego?questionmark.gif
wookieb
Pomyśl troche. Przeciez dostales prawie ze gotowca. Wystarczy odrobine pomyslec.
marcinp1984
Wielkie dzięki smile.gif Działa.. nie bardzo wiem na jakiej zasadzie ale działa tongue.gif

Wookieb mógłbyś jeszcze zerknąć na ten kod? Teraz mam podobny problem w samym logowaniu na stronkę, którego wcześniej jednak nie zauważyłem :/ Jak w bazie mam login marcin a podam Marcin to już wywala że zły login... a chyba poprzednie rozwiązanie które mi podpowiedziałeś w tym przypadku już nie pomorze bo mi nie działało, chyba że źle to zrobiłem...
Oryginalnie wygląda to tak:

  1. <?php
  2.  
  3. $dbconn = pg_connect("host='localhost' port='5432' dbname='postgres' user='postgres' password='marcin'");
  4.  
  5. $login_pom = $_POST[login];
  6. $haslo_pom = $_POST[haslo];
  7.  
  8. $result = pg_query("SELECT * FROM uzytkownicy WHERE nick ilike '$login_pom'");
  9. $line = pg_fetch_array($result);
  10.  
  11. $haslo_z_bazy = $line[haslo];
  12. $login_z_bazy = $line[nick];
  13. $id = $line[id_uzytkownika];
  14. $admin = $line[czy_admin];
  15. $admin_glowny = $line[czy_admin_glowny];
  16. $zablokowany = $line[czy_zablokowany];
  17.  
  18.  
  19. if($login_pom == null || $haslo_pom == null)
  20.   {
  21.   echo "<font color='black' style='font-family:Chiller;font-size:7mm'><b>PODAJ LOGIN I HASŁO!!!</b></font><br>
  22.         <font color='black' style='font-family:Chiller;font-size:6mm'><b><a href='logowanie.php' class='haslo'>Powróć</a> do strony logowania i spróbuj jeszcze raz</b></font>";
  23.   }
  24. else
  25.   {
  26.   if ($login_z_bazy == $login_pom && $haslo_z_bazy == $haslo_pom && ($admin == 't' || $admin_glowny == 't') && $zablokowany == 'f')
  27.      {  
  28.      header("Location: administrator.php?id=$id");
  29.      }
  30.   else
  31.      {
  32.      echo "<font color='black' style='font-family:Chiller;font-size:7mm'><b>NIEPOPRAWNY LOGIN LUB HASŁO!!!</b></font><br>
  33.            <font color='black' style='font-family:Chiller;font-size:6mm'><b><a href='logowanie.php' class='haslo'>Powróć</a> do strony logowania i spróbuj jeszcze raz</b></font>";
  34.      }
  35.   }
  36.  
  37. pg_close($dbconn);
  38. ?>
wookieb
1) Nie masz zabezpieczenia przed sql injection. Poczytaj o tym.
  1. <?php
  2. $login_pom = mysql_real_escape_string($_POST[login]);
  3. $haslo_pom = mysql_real_escape_string($_POST[haslo]);
  4. ?>

2) analogicznie zastosuj porade w mb_strtolower na $login_z_bazy i $login_pom
marcinp1984
ok zaraz to sprawdze

ale zastanawia mnie jedn... $login_pom = mysql_real_escape_string($_POST[login]);
czy to aby na pewno działa w postgresie? biggrin.gif
wookieb
Ach zapomnialem. Oczywiscie ze nie i uzyj http://pl.php.net/pg_escape_string
marcinp1984
No dobra tylko nie bardzo wiem jak tego użyć...

  1. <?php
  2. $login_pom = pg_escape_string($_POST[login]);
  3. $haslo_pom = pg_escape_string($_POST[haslo]);
  4. ?>


to pewnie tak.

A co z tym mb_strtolower ? W tym przypadku też to potzrebne??
wookieb
No tak.
No pomysl.
Pobierasz login z bazy = Marcin
a ktos wpisal marcin

Potem porownuje marcin==Marcin i co ci wychodzi? Wiec zamien wszystko na male litery.
marcinp1984
Nie wiem czy dobrze to zrobiłem.. w każdym bądź razie nie działa tongue.gif Póki co dopisałem to tylko do loginu

  1. <?php
  2. $dbconn = pg_connect("host='localhost' port='5432' dbname='postgres' user='postgres' password='marcin'");
  3.  
  4. $login_pom = pg_escape_string($_POST[login]);
  5. $haslo_pom = $_POST[haslo];
  6.  
  7. $result = pg_query("SELECT * FROM uzytkownicy WHERE nick ilike '$login_pom'");
  8. $line = pg_fetch_array($result);
  9.  
  10. $haslo_z_bazy = $line[haslo];
  11. $login_z_bazy = $line[nick];
  12. $id = $line[id_uzytkownika];
  13. $admin = $line[czy_admin];
  14. $admin_glowny = $line[czy_admin_glowny];
  15. $zablokowany = $line[czy_zablokowany];
  16.  
  17.  
  18. if($login_pom == null || $haslo_pom == null)
  19.   {
  20.   echo "<font color='black' style='font-family:Chiller;font-size:7mm'><b>PODAJ LOGIN I HASŁO!!!</b></font><br>
  21.         <font color='black' style='font-family:Chiller;font-size:6mm'><b><a href='logowanie.php' class='haslo'>Powróć</a> do strony logowania i spróbuj jeszcze raz</b></font>";
  22.   }
  23. else
  24.   {
  25.   if ($login_pom == mb_strtolower($login_z_bazy,'UTF-8') && $haslo_z_bazy == $haslo_pom && ($admin == 't' || $admin_glowny == 't') && $zablokowany == 'f')
  26.      {  
  27.      header("Location: administrator.php?id=$id");
  28.      }
  29.   else
  30.      {
  31.      echo "<font color='black' style='font-family:Chiller;font-size:7mm'><b>NIEPOPRAWNY LOGIN LUB HASŁO!!!</b></font><br>
  32.            <font color='black' style='font-family:Chiller;font-size:6mm'><b><a href='logowanie.php' class='haslo'>Powróć</a> do strony logowania i spróbuj jeszcze raz</b></font>";
  33.      }
  34.   }
  35. ?>
wookieb
Jak UWAŻNIE czytasz?
Cytat(wookieb @ 2.06.2009, 12:45:42 ) *
2) analogicznie zastosuj porade w mb_strtolower na $login_z_bazy i $login_pom


A jak nadal nie bedzie dzialac to przed if-em wyswietl sobie wszystkie zmienne jakie uzywasz.
marcinp1984
I znów wielkie dzięki winksmiley.jpg Działa :]
No to teraz mi zostało tylko zrobić forum do mojego projektu... masakra :/ No ale idę walczyć tongue.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.