Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mysql generujący 10 znakowy kod w bazie przy rejestracji? i jeszcze cos...
Forum PHP.pl > Forum > Bazy danych > MySQL
mrsjones
Witam wszystkich.

Chce stworzyć system który będzie sprawdzał czy użytkownik który zalogował się w moim portalu podał na pewno prawdziwy adres zamieszkania.Chce to zrobić prostym sposobem polegającym na tym że w bazie danych stowrzony byłby rekord który podczas rejestracji generowałby ciąg 10 przykładowych znaków.Czy w mysql jest funkcja która pozwoli automatycznie wygenerować taki ciąg dla każdej osoby rejestrującej się?Ważne żeby kod nie był szyfrowany tak abym mógł go odczytać i wysłać w kopercie na adres delikwenta smile.gif On po otrzymaniu kodu będzie musiał go wpisać na specjalnej stronie - jesli oba kody bedą do siebie pasowac dokona sie pelna aktywacja konta.

Druga sprawa to kolor loginu użytkownika - dopóki nie dokona on pełnej aktywacji konta bedzie to powiedzmy kolor czarny , po opisanej wyzej rejestracji ma on automatycznie zmieniać kolor na czerowony.Jak to właściwie zrobić aby kolor loginu zmienił się automatycznie?Czy da sie to zrobić jeszcze z poziomu mysql czy już nie?

Może znacie inne sposoby na rozwiązanie moich problemików?Za wszystkie będę po stokroć wdzięczny...
AxZx
zdziwił mnie ten Twój post.
zabierasz się za jakiś system, chcesz nawet wysyłać zwykłą pocztą w realnym świecie list od użytkownika a pytasz o takie podstawowe sprawy.

kolor loginu ustalasz zapisem w CSS. w html ustalasz odpowiednią klasę. w php generujesz nazwę tej klasy w zależności od tego czy użytkownik ma już w pełni aktywne konto czy nie.

kod możesz wygenerować w PHP i zapisać go w bazie w normalnej postaci - nie żadnej kodowanej.
tomek_
jeśli chodzi o kod to możesz użyć którejś z funkcji szyfrjących mysql-a 

np password, old_password, encrypt czy jakiejkolwiek innej i przez tą funkcje przepuscic jakąkolwiet daną np id uzytkownika, aktualną date, itp 

w wyniku tego otrzymasz unikalne ciągi znaków które potem pobierasz i porównujesz już bez żadnego przepuszczania przez jakieś funkcje 
mrsjones
Cytat
kolor loginu ustalasz zapisem w CSS. w html ustalasz odpowiednią klasę. w php generujesz nazwę tej klasy w zależności od tego czy użytkownik ma już w pełni aktywne konto czy nie.

No własnie to nie jest takie oczywiste bo nawet tworząc wczesniej w pliku .css klase zalogowany {color:red;}(dla tych ktorzy potwierdzili kod aktywujący) to jak mam zmusić php do tego zeby na kazdej stronie serwisu wyswietlał mi login w kolorze czerwonym a nie czarnym?

Byc moze rozwiazaniem byloby sprawdzanie na kazdej stronie - jesli zalogowany,jesli kod aktywacyjny potwierdzony to include("odpowiedni plik.css") else include("stary plik css") - takie rozwiazanie bedzie wydajne czy polecacie cos innego?

I jeszcze jedno czy te include zadziała w sekcji <head></head> questionmark.gif? Nie wiem czy interpreter znajdzie kod php i go zczyta z sekcji poza <body></body> ...
AxZx
napisałem Ci jak to zrobić.
  1. <?php
  2. $profil = //pobierasz dane z bazy;
  3. if($profil['aktywny']){
  4. echo '<div class="zalogowany">'.$profil['nazwa'].'</div>'
  5. }else{
  6. echo '<div class="niezalogowany">'.$profil['nazwa'].'</div>'
  7. }
  8. ?>


poczytaj jeszcze trochę, za wcześnie, żeby o takich problemach pisać na forum. jeszcze nie opanowałeś podstawowej wiedzy.
mrsjones
Cytat
poczytaj jeszcze trochę, za wcześnie, żeby o takich problemach pisać na forum. jeszcze nie opanowałeś podstawowej wiedzy.

pozostawie to bez komentarza winksmiley.jpg

Cytat
napisałem Ci jak to zrobić.

aha i za kazdym razem gdy pojawia sie odwolanie do linku delikwenta mam pisac taki kod?Przeciez pisalem zeby to bylo generowane automatycznie...malo tego Twoje rozwiazanie jest kompletnie niewydajne.Zastanowiles sie co bedzie gdy inna strona zarzada wywołania loginu aktywnego uzytkownika?Kolor bedzie dalej czarny!Tobie na pewno nie brak podstaw...pytanie tylko co dalej smile.gif
AxZx
dziwnie kombinujesz. no ale to Twoja sprawa.
powodzenia.

tak przy okazji to od tego masz coś takiego jak model w MVC.
w klasie profil może być metoda getLogin();
w tej metodzie sprawdzasz czy jest aktywny czy nie i zwracasz odpowiednią wartość. tylko to jest dalej bezsensu bo przecież w widoku masz ustalać jak co ma wyglądać.
a Ty chcesz od razu z bazy wyciągnąć inny kolor czcionki dla aktywnego loginu. można to też zrobić w zapytaniu, stosując zwykły IF i wrzucenie tam odpowiedniego warunku i odpowiednich wartości. ale to jest bezsensu rozwiązanie.
wujko_thc
Cytat(mrsjones @ 3.12.2008, 23:45:07 ) *
No własnie to nie jest takie oczywiste bo nawet tworząc wczesniej w pliku .css klase zalogowany {color:red;}(dla tych ktorzy potwierdzili kod aktywujący) to jak mam zmusić php do tego zeby na kazdej stronie serwisu wyswietlał mi login w kolorze czerwonym a nie czarnym?

Ależ jest oczywiste. to czy użytkownik ma aktywację zapisujesz w bazie. w PHP natomiast robisz case lub if i w zależności od wartości zmiennej, przechwującej status konta, generujesz odpowiedni kod HTML
Cytat
Byc moze rozwiazaniem byloby sprawdzanie na kazdej stronie - jesli zalogowany,jesli kod aktywacyjny potwierdzony to include("odpowiedni plik.css") else include("stary plik css") - takie rozwiazanie bedzie wydajne czy polecacie cos innego?

OMG - przerost formy nad trścią


A tak wogóle, to naprawdę, poczytaj więcej zanim rozpoczniesz jakiś większy projekt.
mrsjones
Cytat
Ależ jest oczywiste. to czy użytkownik ma aktywację zapisujesz w bazie. w PHP natomiast robisz case lub if i w zależności od wartości zmiennej, przechwującej status konta, generujesz odpowiedni kod HTML


Cytat
OMG - przerost formy nad trścią


a mozesz napisac najlepiej na przykladzie jaka jest różnica miedzy Twoim rozwiazaniem a moim i dlaczego jest bardziej wydajny?Bo z tego co piszesz Twoj sposob jest chyba troche bez sensu bo jesli dobrze zrozumialem - musialbym przy kazdym wywolaniu loginu uzytkownika aktywnego tworzyc instrukcje warunkową winksmiley.jpg

Cytat
a Ty chcesz od razu z bazy wyciągnąć inny kolor czcionki dla aktywnego loginu. można to też zrobić w zapytaniu, stosując zwykły IF i wrzucenie tam odpowiedniego warunku i odpowiednich wartości. ale to jest bezsensu rozwiązanie.

moglbys dac przylad takiego zapytania?

Cytat
dziwnie kombinujesz. no ale to Twoja sprawa.

a moze to Ty dziwnie kombinujesz bo jesli dobrze zrozumialem to przy kazdym wywolaniu loginu musialbym powtarzac napisany przez Ciebie kod smile.gif
sowiq
Cytat(mrsjones @ 5.12.2008, 09:08:39 ) *
aha i za kazdym razem gdy pojawia sie odwolanie do linku delikwenta mam pisac taki kod?
Jest coś takiego jak funkcja/metoda.

Cytat(mrsjones @ 5.12.2008, 09:08:39 ) *
malo tego Twoje rozwiazanie jest kompletnie niewydajne.
Jedno porównanie to dla Ciebie obniżenie wydajności? Będziesz na jednej stronie drukował 100 tys. razy ten sam login? Bo dla kilku loginów i tak wykonasz porównanie pojedynczo dla każdego - na poziomie bazy danych.

Cytat(mrsjones @ 5.12.2008, 09:08:39 ) *
Zastanowiles sie co bedzie gdy inna strona zarzada wywołania loginu aktywnego uzytkownika?
Skąd ma go niby wywołać? Z Twojej bazy danych? Bo na stronie przecież będzie wydrukowany normalny kod HTML - w ten, czy inny sposób.

Cytat(mrsjones @ 5.12.2008, 09:08:39 ) *
Tobie na pewno nie brak podstaw...pytanie tylko co dalej smile.gif
Spadaj na onet.

[offtopic mode on]
Jak mnie wkurzają takie trolle... Przeczytał pół jakiegoś badziewnego kursu PHP na stronie sprzed 10 lat i pluje w twarz doświadczonym programistom i zasłużonym userom forum...
[offtopic mode off]


[edit]
Przepraszam jeśli Cię uraziłem. Nie chciałem. Wycofuje się z tego, co powiedziałem.
AxZx
Cytat(mrsjones @ 5.12.2008, 22:04:18 ) *
moglbys dac przylad takiego zapytania?


UWAGA!
nie bierzcie z tego przykładu! tak się nie robi!

  1. SELECT *, IF(`status`=1, concat('<span class"aktywny">',login,'</span>'), concat('<span class"nieaktywny">',login,'</span>')) AS login FROM profil p;
mrsjones
Cytat
Spadaj na onet.

mily jestes nie ma co....

Cytat
Jak mnie wkurzają takie trolle...

narazie tobie blizej do tego miana...

Cytat
nie bierzcie z tego przykładu! tak się nie robi!

dzieki a dlaczego nie polecasz?
I jeszcze jedno jak zapisac zmieniona wartosc w bazie?Bo faktycznie samo zapytanie jest bez sensu...
Mnie interesuje funkcja która zmieni kolor loginu i zapisze go w bazie.
AxZx
no to w php już to robisz.
ale na prawdę nie polecam zapisywać tego do bazy.
wyobraź sobie, że 10000000 użytkowników się zarejestruje i każdemu zapiszesz takie coś w bazie. będzie tą wartość musiał zmieniać jak user zmieni status oraz gdy będzie chciał zmienić kolor albo styl;) to jest zdecydowanie za dużo roboty.

zrób sobie funkcje
  1. <?php
  2. pokaz_login($login, $status){
  3.  if($status == 1){
  4.    return '<span class="aktywny">'.$login.'</span>';
  5.  }else{
  6.    return '<span class="nieaktywny">'.$login.'</span>';
  7.  }
  8. }
  9.  
  10. //wywołanie
  11. echo pokaz_login($dane['login'], $dane['status']);
  12. ?>



jak pomogłem kliknij na przycisk pomógł i zakończmy ten temat:)
mrsjones
Funkcja jest jak najbardziej ok ale za kazdym razem przy wywolaniu loginu musze wywolywac funkcje pokaz_login.Nie lepiej zrobić to raz przy wywolaniu pliku ze stylami css. i miec spokój ?

Cytat
Przepraszam jeśli Cię uraziłem. Nie chciałem. Wycofuje się z tego, co powiedziałem

spox nie gniewam sie ale taka rada na przyszlosc - jesli nie masz nic ciekawego do powiedzenia to najlepiej nie mów nic smile.gif
sowiq
Nie, bo musisz w jakiś sposób określić klasę elementu zawierającego login (span, div, a, whatever).

[do Twojego edit'u powyżej]
Wycofałem się jedynie z obraźliwych wobec Ciebie rzeczy. Poza tym uważam że napisałem sporo ciekawych rzeczy, które powinny Cię przekonać, że zmierzasz w złym kierunku.

PS. Łatwiej by się rozmawiało, jakbyś pisał pod spodem, a nie edytował co chwila swoje posty.
mrsjones
Cytat
Poza tym uważam że napisałem sporo ciekawych rzeczy, które powinny Cię przekonać, że zmierzasz w złym kierunku.
PS. Łatwiej by się rozmawiało, jakbyś pisał pod spodem, a nie edytował co chwila swoje posty.

oj widze ze ci ciagle malo smile.gif na przyszlosc staraj sie dobierac tak slownictwo aby pozniej administrator(i nie tylko) nie musial sie za ciebie wstydzić winksmiley.jpg

Cytat
Nie, bo musisz w jakiś sposób określić klasę elementu zawierającego login (span, div, a, whatever).

lepsze to niz wywolywanie za kazdym razem tej samej funkcji, szczegolnie gdy w pliku css zmienie tylko kolor dla elementu <b>

Wracajac do meritum sprawy jesli ktos bedzie mial ciekawszy i przedewszystkim bardziej praktyczny sposób na rozwiazanie tego problemu to będę wdzięczny za pomoc. smile.gif Narazie wróce do mojego pomyslu z oddzielnym plikiem css który jest bardziej "przyjazny dla środowiska".No i pozwala zmienić także inne elementy serwisu dla aktywnych userów za jednym zamachem...

Szczerze musze przyznać że po takich eugeniuszach jak wy spodziewalem sie ciekawszych rozwiazań...tak blachego problemu winksmiley.jpg

no nic pozdrawiam smile.gif
AxZx
jakby autor tematu miał ciekawszy i bardziej konkretny problem to pewnie byłyby ciekawsze rozwiązania:)
Ociu
Proponuję skończyć dyskusję. Od tego jest PW. Jeszcze jeden post nie na temat, zamykam topic, a autor posta dostaje ostrzeżenie.
mrsjones
Cytat
jakby autor tematu miał ciekawszy i bardziej konkretny problem to pewnie byłyby ciekawsze rozwiązania:)

hehe dobre alibi dla braku wiedzy smile.gif

jesli chodzi o wygenerowanie przykladowego kodu - byc moze komus sie przyda ta funkcja
  1. <?php function random_string($dlugosc) {  $znaki = "0123456789abcdefghijklmnopqrstuvwxyz";  for ($i=0; $i < $dlugosc; $i++)  {   $los .= substr($znaki, rand(0, strlen($znaki,), 1);  }  return $los; } ?>


Pozdrawiam gorąco! smile.gif
sowiq
Nie na temat, ale jestem ciekaw.

Pytanie do autora - często dostajesz łomot od kolegów ze szkoły?

Pytam, bo już w pierwszej odpowiedzi dostałeś najlepsze rozwiązanie. Gdybyś posiadał chociaż część wiedzy odpowiadających, którym wytykasz jej brak, wiedziałbyś, że jest to najsłuszniejsza droga do podążania.
Ty próbujesz na siłę wymyślać nowe rozwiązania, np. budować kod HTML na poziomie SQL, wczytywać jakieś nowe pliki CSS, czym pokazujesz tylko, że nie masz kompletnie praktycznej wiedzy na temat SQL, PHP i HTML. Do tego jesteś niegrzeczny i obrażasz doświadczonych użytkowników forum. Zresztą, wystarczy spojrzeć na kwiatki typu:
Kod
substr($znaki, rand(0, strlen($znaki,), 1)


Dam Ci kilka rad:
- odpuść sobie na razie budowanie zaawansowanego portalu, na którym weryfikacja będzie przebiegała listownie
- weź do ręki jakiś porządny kurs / manual
- nie oceniaj zbyt wysoko swoich umiejętności.

Dla mnie EOT. Raportuję o zamknięcie tematu. Mod sam zdecyduje czy dać Ci warna.

Peace.
Cysiaczek
Cytat
Szczerze musze przyznać że po takich eugeniuszach jak wy spodziewalem sie ciekawszych rozwiazań...tak blachego problemu

@mrsjones - ciekawszych, czyli jakich? Są tylko sensowne i bezsensowne. Jeśli wiem, że mam wyświetlać login użytkownika zależny od jakiegoś jego statusu i mam to robić wielokrotnie, dopisuję prostą metodę.
  1. <?php
  2. public function getFormatedLogin()
  3. {
  4. // tu struktura podana przez AxZx w poście nr. 13
  5.  return '<strong>'.$this->getLogin().'</strong>'; // dekoracja loginu
  6. }
  7. ?>

Trzymanie koloru w bazie to idiotyczne rozwiązanie, bo trzymasz tą samą daną 2x. Raz - status użytkownka, drugi raz - kolor loginu zależny od statusu - błąd projektowy. Naturalnym jest rozwiązanie tego problemu w PHP. Przykłady dostałeś.
Zmiana pliku CSS też nie jest najlepszym sposobem, bo:
1. Trzymasz dwie wersje CSS różniące się tylko jednym atrybutem (w większości przypadków jest to błąd projektowy)
albo
2. Dołączasz dodatkowy arkusz (tak się martwisz wydajnością, a wykonujesz kolejne żądanie do serwera po plik CSS, co jest jakieś 100000x wolniejsze)

chyba, że
Cytat
No i pozwala zmienić także inne elementy serwisu dla aktywnych userów za jednym zamachem...

Poniekąd racja, jeśli rzeczywiście wygląd się różni też w innych miejscach.
Niemniej, spróbuj wylistować użytkowników (ot, jak choćby tu na forum w stopce) - bez funkcji formatującej się nie obejdzie.

Cytat
hehe dobre alibi dla braku wiedzy

Nie masz pojęcia o stanie wiedzy ~AxZx'a, wiec nie zarzucaj mu jej braku, bo możesz się jedynie ośmieszyć. Proponuję niniejszym więcej szacunku dla kogoś, kto stara Ci się pomóc.

Pozdrawiam.
Ociu
Zgodnie z tym co napisałem. Zamykam.
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.