Skocz do zawartości

[Php] Skrypt Sprawdzający Kody W Bazie


jarekcda

Rekomendowane odpowiedzi

Chciałem zrbić skrypt sprawdzający kody w bazie danych mysql coś podobnego do skryptu Dotpay:

$handle = fopen("https://dotpay.pl/check_code.php?id=".$id."&code=".$code."&check=".$check."&type=".$type."&del=".$del, 'r');
$status = fgets($handle, 8);
$czas_zycia = fgets($handle, 24);
fclose($handle);

Mam problem z funkcją fopen i fgets. Nie wiem w jaki sposób zrobić sprawdzanie kodu w bazie danych? Jaką funkcję wykorzystać?

Może gdzieś jest opisany podobny problem? Jakieś wskazówki?

Dodaj własny artykuł na naszym blogu   https://bazafirmy.pl/blog/      , https://katalogifirm.com.pl/blog/ , https://dzialka.bazafirmy.pl/

Odnośnik do komentarza
Udostępnij na innych stronach

Zakładasz bazę danych robisz tabele na przykład kody później robisz

Select * from kody WHERE kod='$kod_z_posta'

Później sprawdzasz ifem czy był w bazie jeśli jest i został prawidłowo wykorzystany to go kasuje z bazy

Delete from kody WHERE kod='$kod_z_posta'

To wszystko

bilbord_opublikuj_mini.png

Odnośnik do komentarza
Udostępnij na innych stronach


Mam problem z funkcją fopen i fgets
wiec zastosuj : https://www.php.net/function.file-get-contents

Nie wiem w jaki sposób zrobić [...] Jakieś wskazówki?
Obsługa MySQL z poziomu PHP to pikuś https://www.php.net/manual/en/ref.mysql.php

Zainteresuj sie zapytaniami select i MySQL Tutorial

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Mam już skrypt dodający kody do bazy danych i odbierający dane z formularza. Utknąłem w punkcie sprawdzania kodu podanego przez użytkownika, który ma być sprawdzony z tymi , które są w bazie. Wystarczy mi aby zwrócił true lub false. Nie mogę znależć nic na ten temat.

Podałem przykład :

https://dotpay.pl/check_code.php?id=

I tu nie wiem jak plik (jak wyżej) check_kode.php odbiera wartości z linku i je sprawdza w bazie.

Próbowałem z funkcją fopen i fgets , ale działa i pobiera dane tylko typu tekstowego. Po wklejeniu kodu php przestaje działać.

Może ktoś widział gdzieś podobne rozwiązanie?

Dotpay musiało jakoś sobie poradzić z tym problemem.

Dodaj własny artykuł na naszym blogu   https://bazafirmy.pl/blog/      , https://katalogifirm.com.pl/blog/ , https://dzialka.bazafirmy.pl/

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem czy o to Ci chodzi, ale jeśli masz w adresie np:

https://dotpay.pl/check_code.php?id=spokomaroko

I chcesz wyciągnąć w php 'spokomaroko'. To w php 'spokomaroko' siedzi w: $_GET['spokomaroko']

Black Friday 2024

W topx.pl nawet 50% taniej! - codziennie nowe promo!

Odnośnik do komentarza
Udostępnij na innych stronach


Nie mogę znależć nic na ten temat.
Nie bądź śmieszmy! Nie możesz znaleźć nic na tematy zapytań do bazy ?
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM Tabela WHERE kody = 'sprawdzany_kod' AND wykorzystany = '0' LIMIT 1 ", $link);
$num_rows = mysql_num_rows($result);

if($num_rows >  0) 
{
	echo "KOd jest wolny';
}
else
{
	echo 'Kodu nie ma lub jest wykorzystany';
}

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Być może niedokładnie wytłumaczyłem o co mi chodzi.

Na mojej stronie chciałem dodać opcję dodawania za pomocą kodów do kilku katalogów. Formularz znajduje się na stronie

https://ikatalogfirm.pl/pakiety.php

(po zalogowaniu).

Z tej strony wszystkie dane przekazywane są dalej i skrypt sprawdza poprawność wpisanych danych i dochodzę do momentu sprawdzenia kodu wpisanego przez usera . Kod musi być sprawdzony na innej stronie

https://panoramyfirm.pl/j.php/jakis_plik.php

, gdzie znajduje się baza danych do sprawdzania kodu (centrum zarządzające kodami).

I tu mam problem. Najlepiej byłoby wykorzystać funkcję fopen i fgets, które nie przerywają procesu dodawania wpisu- sprawdza dane formularza, kod i akceptuje lub nie.

Być może źle to zaplanowałem, może istnieje inne lepsze rozwiązanie?

Dodaj własny artykuł na naszym blogu   https://bazafirmy.pl/blog/      , https://katalogifirm.com.pl/blog/ , https://dzialka.bazafirmy.pl/

Odnośnik do komentarza
Udostępnij na innych stronach

No to robisz przy sprawdzaniu wprowadzonego kodu

$sprawdz_kod = file_get_contents('https://panoramyfirm..../jakis_plik.php?kod=TUKODUSERA');

W jakis_plik.php wrzucasz sprawdzenie czy kod istnieje z przykładów powyżej - $_GET['kod']

Po sprawdzeniu w jakis_plik.php wypluwasz np samo 'OK' gdy kod istnieje, ERROR gdy nie istnieje.

I dalej przy sprawdzaniu wprowadzonego kodu:

if ($sprawdz_kod == 'OK') {
//kod jest poprawny
}
else {
//kod nie istnieje
}

Black Friday 2024

W topx.pl nawet 50% taniej! - codziennie nowe promo!

Odnośnik do komentarza
Udostępnij na innych stronach


Najlepiej byłoby wykorzystać funkcję fopen i fgets, które nie przerywają procesu dodawania wpisu
Co takiego ? :olaboga:

Jeśli potrzebujesz wymiany większych ilości danych zainteresuj się strukturami / plikami XML jako nośnikami danych.

Poza tym powinieneś zaimplementować mechanizm rozpoznawania odpowiedzi serwera < kody serwera HTTP 200 >, bo samo OK jak wyżej nie wystarcza do prawidłowej obsługi, gdyż kod może być poprawny jednak serwer autoryzacji chwilowo niedostępny, wiec klient, by nie uzyskał autoryzacji.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach


Być może źle to zaplanowałem, może istnieje inne lepsze rozwiązanie?

Tak jest jak kowal bierzę się za projektowanie instalacji elektrycznej w domu.

PHP jest proste ale nie sprowadza się do wciskania tylko Ctrl + C, Ctrl + V

Tak jak Mion napisał skrypt trzeba zabezpieczyć przed róźnymi anomaliami a najbardziej przed użytkownikami bo on jest tutaj największym zagrożeniem.

bilbord_opublikuj_mini.png

Odnośnik do komentarza
Udostępnij na innych stronach

powinieneś zaimplementować mechanizm rozpoznawania odpowiedzi serwera < kody serwera HTTP 200 >

Bardzo cenna uwaga.

zainteresuj się strukturami / plikami XML jako nośnikami danych.

O jakie struktury chodzi?

Dodaj własny artykuł na naszym blogu   https://bazafirmy.pl/blog/      , https://katalogifirm.com.pl/blog/ , https://dzialka.bazafirmy.pl/

Odnośnik do komentarza
Udostępnij na innych stronach


O jakie struktury chodzi?
XML

Przykładowa implementacja :

Baza danych ma tabele na kod <VARCHAR 20> | wykorzytsany <DATETIME> | ipusera <VARCHAR 15>
wykorzytsany oraz ipusera ustawione jako NULL i z wartością NULL po wgraniu kodów.

Przy sprawdzaniu jeśli kod jest poprawny wykomujesz UPDATE na kolumnach wykorzystany wystawiają date wykorzystania NOW() oraz ipusera kolumnie ipusera IP usera odczytane w PHP.

Do tego może dodać jakieś pole np INT na nr serwisu z jakiego pochodzi klient który autoryzuje się kodem lu VARCHAR na nazwę domeny. I to jest. Na serwerze gdzie jest baza zamieszczasz skrypt który oczekuje danych POST/ GET w tym wypadku
- kod
- ipusera
- nr_serwisu < lub nazwa domeny>

wykonujesz zapytanie do bazy i zwracasz w skrypcie umowne "flagi" np

switch((int)GetAutoryzacjaKodu($kod))
{
   case 1: echo 'KodJestOK'; break;
   case 2: echo 'KodJestWykorzystany'; break;
   case 3: echo 'BrakKodu'; break;
   default echo 'OperacjaNZ'; break;
}

I to są funkcje po stronie serwera autoryzacji.

Po stronie serwisu gdzie ma się autoryzować pobierasz z pola formularza kod i za pomocą cURL ewentualnie file_get_contents wykonujesz żądnie HTTP GET/POST do serwera autoryzacji przyrzekając parametry jak wyżej i w zależności od uzyskanej odpowiedzi lub jej całkowitego braku, czyli odpo serwera != 200 wykonujesz odpowiednie sterowanie przepływem:

- Dziękujemy, kod jest poprawny, wiec możesz dodać wpis bla, bla bla ....
- Ups, kod jest już wykorzystany bla, bla bla ....
- Problem z połączeniem z serwerem autoryzacji spróbuj ponownie za chwilę lub bla, bla bla ....
- Ups, coś poszło nie tak spróbuj ponownie za chwilę lub bla, bla bla ....

To niestety nie wszystko, bo musisz jeszcze w sesji usera go uwierzytelnić tak by miał tylko dostęp do cześć dodającej, czy też innej operacji po autoryzacji kodem. W wypadku braku uwierzytelnienia sprytny user może skopiować link do niezabezpieczonego formularza który pojawia sie po poprawnym kodzie i poźniej dowoliu go wywoływać bez konieczności wykupienia kolejnych kodów.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

$kod_usera="1A34";

$sprawdz_kod = file_get_contents('https://panoramyfirm.pl/jakis_plik.php?kod=$kod_usera&katalog=2');

Próbowałem z zapisem jak u góry , ale funkcja file_get_contents nie przekazuje wartości $kod_usera="1A34"; tylko wyświetla napis $kod_usera

Wyczytałem , że może być problem z interpretacją znaków ? i &

katalog=2 przekazuje dobrze, ale nie wczytuje zmiennej.

Dodaj własny artykuł na naszym blogu   https://bazafirmy.pl/blog/      , https://katalogifirm.com.pl/blog/ , https://dzialka.bazafirmy.pl/

Odnośnik do komentarza
Udostępnij na innych stronach

Programowanie to nie zgaduj zgadula ! Wszystkie funkcje są dokładnie udokumentowane w php manual do którego też odsyłam.

Jak nie potrafisz wejść na górę piachu za blokiem, to nie porywaj się na wspinaczkę na Rysy...

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności