Skocz do zawartości

Przerobienie kodu z języka PHP mysql na PDO


 Udostępnij

Rekomendowane odpowiedzi

  • Ekspert

Połączenie z bazą: PHP: Connections and Connection management - Manual

Zapytanie: PHP: PDO::query - Manual

Lub dla większego bezpieczeństwa:

Przygotowanie zapytania: PHP: PDO::prepare - Manual

Bindowanie parametrów: PHP: PDOStatement::bindParam - Manual

Wykonanie zapytania: PHP: PDOStatement::execute - Manual

I teraz w zależności od tego co masz w strumieniu wynikowym:

Jeden wynik: PHP: PDOStatement::fetch - Manual

Wiele wyników: PHP: PDOStatement::fetchAll - Manual

Odnośnik do komentarza
Udostępnij na innych stronach

Cześć, chcę się przenieść tym razem z systemem sygnatur na PDO i mam problemy, gdyż nie wyświetla mi obrazka,

<? 

// <!-- Nie dotykać - sesja --> \\


	include("bazadanych.php");
	session_start();
	error_reporting(0);

	
// <!-- Sesja na nick Gracza --> \\


	if(isset($_SESSION['Login']))

		
// <!-- Sprawdzamy nick Gracza po czym zostajemy przenoszeni z login.php --> \\	


	{  

	$Login = $_SESSION['Login'];

	}

	else header('location: login.php');

?>


<?

	$bazaWybor = $bazaPolaczenie->query("SELECT * FROM cG_uzytkownicy WHERE Login = '$Login'");
	 while($kolumna = $bazaWybor->fetch()) 
	
	{

    // <!-- Tworzenie obrazka w formie tła --> \\
    
    header('Content-Type: image/png;');
    $tloSygnatura = @imagecreatefrompng('Grafika/tloSygnatura.png') or die("Nie znaleziono obrazka");
	
	// <!-- Skin --> \\
	
    header('Content-Type: image/png;');
    $tloSkin = @imagecreatefrompng('Grafika/Skiny2/'.$kolumna['Skin'].'.png') or die("Nie znaleziono obrazka");	
	ImageCopy($tloSygnatura, $tloSkin, 10,3,0,0,74,237);
   
    // <!-- Tworzenie koloru tekstu --> \\
    
    $kolorTekst = imagecolorallocate($tloSygnatura, 255, 255, 255);
    
    // <!-- Tworzenie czcionki --> \\
	
	putenv('GDFONTPATH=' . realpath('.'));
    
    $czcionkaTekst = 'Czcionka/czcionka'; 
	
	// <!-- Twoja nazwa serwera jako stopka --> \\
	
	$serwerStopka = "NAZWA SERWERA"; 
    
    // <!-- Generowanie tekstu --> \\

    imagettftext($tloSygnatura, 16, 0, 100, 30, $kolorTekst, $czcionkaTekst, $kolumna['Login']);
    imagettftext($tloSygnatura, 16, 0, 100, 60, $kolorTekst, $czcionkaTekst, $kolumna['UID']);
    imagettftext($tloSygnatura, 16, 0, 100, 90, $kolorTekst, $czcionkaTekst, $kolumna['Pieniadze']);
	imagettftext($tloSygnatura, 8, 0, 410, 140, $kolorTekst, $czcionkaTekst, $serwerStopka);
    imagepng($tloSygnatura);
	imagedestroy($tloSygnatura);
    imagepng($tloSkin);
	imagedestroy($tloSkin);
	
	} 

    // <!-- Sprawdzanie czy podany gracz istnieje w bazie danych --> \\

    else{
		
	// <!-- Tworzenie obrazka w formie tła --> \\
		
	header('Content-Type: image/png;');
	$tloSygnatura = @imagecreatefrompng('Grafika/tloSygnatura.png') or die("Nie znaleziono obrazka");
	
	// <!-- Skin --> \\
	
    header('Content-Type: image/png;');
    $tloSkin = @imagecreatefrompng('Grafika/Skiny2/0.png') or die("Nie znaleziono obrazka");	
	ImageCopy($tloSygnatura, $tloSkin, 10,3,0,0,74,237);
		   
	// <!-- Tworzenie koloru tekstu --> \\
			
	$kolorTekst = imagecolorallocate($tloSygnatura, 255, 255, 255);
			
	// <!-- Tworzenie czcionki --> \\
			
	putenv('GDFONTPATH=' . realpath('.'));
			
	$czcionkaTekst = 'Czcionka/czcionka'; 

	// <!-- Pobieranie nazw kolumn i zamiana na formę tekstu --> \\
			
	$loginTekst = "Login: brak danych"; 
	$pieniadzeTekst = "Pieniądze: brak danych";
	$skinTekst = "Skin: brak danych";
			
	// <!-- Twoja nazwa serwera jako stopka --> \\
	
	$serwerStopka = "NAZWA SERWERA"; 
    
    // <!-- Generowanie tekstu --> \\

    imagettftext($tloSygnatura, 16, 0, 100, 30, $kolorTekst, $czcionkaTekst, $loginTekst);
    imagettftext($tloSygnatura, 16, 0, 100, 60, $kolorTekst, $czcionkaTekst, $pieniadzeTekst);
    imagettftext($tloSygnatura, 16, 0, 100, 90, $kolorTekst, $czcionkaTekst, $skinTekst);
	imagettftext($tloSygnatura, 8, 0, 410, 140, $kolorTekst, $czcionkaTekst, $serwerStopka);
    imagepng($tloSygnatura);
	imagedestroy($tloSygnatura);
    imagepng($tloSkin);
	imagedestroy($tloSkin);
	
	}

    mysql_close($bazaPolaczenie);

?>

A, tu od generowania

<!-- // Sygnatura - obrazek \\ -->


<center>
 <img src="http://s31713.web101.svpj.pl/sygnatura.php?Login=<?echo $Login = $_GET[ 'Login' ];?>" width="500" height="150">

 
 <!-- // Formularz \\ -->

<br>
    <form action="sygnatura2.php" method="get">
        <input type="text" name="Login" placeholder="Tutaj wpisz login...">
        <input type="submit" value="Szukaj">
    </form>
</center>
Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

A jak wchodzisz pod ten adres:

http://s31713.web101.svpj.pl/sygnatura.php?Login=login-z-bazy

To co widzisz? Ale wejdź z innej przeglądarki.

Skrypt generujący sygnaturkę sprawdza sesję i pobiera login z niej. A tu chcesz pobrać login przez GET i skrypt nie wie co z tym ma zrobić. Więc zamiast sprawdzać sesję musisz sprawdzić klucz z globalnej zmiennej tablicowej (GET).

Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

Jeżeli wejdziesz na taki adres:

your-website.com/index.php?Login=login-from-db

To zadziała - tu się zgodzę. Natomiast sygnaturki nie generuje się uzależniając się od GET, bo to oznacza, że żeby wyświetlić sygnaturkę, musisz dopisać do adresu ?Login.

Dlatego na sztywno musisz pisać login w atrybucie src, a w pliku generującym zamienić SESSION na GET.

Odnośnik do komentarza
Udostępnij na innych stronach

8 minut temu, BlackIce napisał:

Jeżeli wejdziesz na taki adres:


your-website.com/index.php?Login=login-from-db

To zadziała - tu się zgodzę. Natomiast sygnaturki nie generuje się uzależniając się od GET, bo to oznacza, że żeby wyświetlić sygnaturkę, musisz dopisać do adresu ?Login.

Dlatego na sztywno musisz pisać login w atrybucie src, a w pliku generującym zamienić SESSION na GET.

Jakiś example w formie kodu? Bo tak nie rozumiem.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

index.php

<img src="./sygnatura.php?Login=abcd" width="500" height="150">

sygnatura.php (fragment)

<?php
$Login = '';
if(isset($_GET['Login'])) $Login = $_GET['Login'];
else header('location: login.php');
Edytowane przez BlackIce
Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
  • Podobna zawartość

    • Witam,
      mam może głupie pytanie, ale czy ktoś zdaje z forum E.14 w nadchodzących dniach/tygodniach. Wychodzę z zapytaniem, czy na egzaminie można używać "nowej" biblioteki zwanej PDO, a nie przestarzałego mysql_query? I jeśli użyje PDO czy będzie to zaliczone? Może ktoś wie coś na ten temat?
      Jak wiadomo CKE zawsze trzyma się starych reguł. (html 4 itd.)
      Pozdrawiam.
    • Witam jak w temacie szukam darmowej bazy mysql jest jakaś strona która takie coś oferuje?

      jeżeli zły dział proszę o przeniesienie pozdrawiam
    • MyBB napotkało wewnętrzny błąd w zapytaniu SQL i nie może kontynuować. Błąd SQL: 1203 - User cszajawk_root already has more than 'max_user_connections' active connections Zapytanie: [READ] Unable to connect to MySQL server O co chodzi?
    • Mam problem z przyznaniem dostępu zdalnego do mysql. Otóż dodałem do /etc/my.cnf bind-address = 54.37.233.204 (ip vpsa) i potem zrestartowalem mysql. I teraz utworzyłem konto. I gdy próbuje sie zalogowac do bazy przez to ip 79.133.194.18 to nie mogę ;c (os centos jak cos)


      //Można usunąć temat. Głupi poprostu jestem xd
    • Cześć, odnalazłem stary kod MySQL. Niestety nie potrafię przerobić go na PDO ... Jest ktoś w stanie pomóc i podpowiedzieć czego użyć?
      <?php if (isset($_POST['szukaj'])) { $id = $_POST['id']; $connect = mysqli_connect("xxx", "xxx", "xxx", "xxx"); $query = "SELECT `UID`, `Login`, `Pieniadze` FROM `cG_uzytkownicy` WHERE `UID` = $id LIMIT 1"; $result = mysqli_query($connect, $query); if (mysqli_num_rows($result) > 0) { while ($row = mysqli_fetch_array($result)) { $UID = $row['UID']; $Login = $row['Login']; $Pieniadze = $row['Pieniadze']; } } else { echo "Nie wyszukano gracza!"; $UID = ""; $Login = ""; $Pieniadze = ""; } } else { $UID = ""; $Login = ""; $Pieniadze = ""; } ?> <form action="wyszukiwarka.php" method="post"> Wpisz tutaj UID:</br><input type="text" name="id"></br></br> UID: <?php echo $UID;?> </br> Login: <?php echo $Login;?> </br> Pieniądze: <?php echo $Pieniadze;?> </br></br> <input type="submit" name="szukaj" value="Szukaj"> </form>
  • Najnowsze tematy

  • Ostatnio rozwiązane

    • Grafikiem nie jestem ale może się spodoba 🙂 Dodaję też plik PSD (edycja w programie Photoshop) jakby ktoś chciał sobie zmienić napis: Ukryta zawartość Zareaguj na post lub odpowiedz w temacie aby zobaczyć ukrytą zawartość.
    • Witaj Zenon. Program jest bardzo stary, wydany po raz pierwszy w 2004 roku. Rozumiem że posiadasz jeszcze wersję 1.0 bądź 1.1?  Z tego co widzę najnowszą i ostatnią wersją która została wydana, jest wersja 2.2.2 z 2008 roku. Niestety nie wspiera ona systemu Windows 7 ani tym bardziej Windows 10. Jeżeli chodzi o błąd to mówi on że nie próba ustawienia/zapisu danych dla pola ScreenFontName się nie powiodła.  Kod programu jest stary i nie jest kompatybilny z najnowszym systemem. Najlepszym wyjściem z tej sytuacji będzie przeniesienie się na nowszy program. Jest kilka tego typu programów, jednak musisz wziąć pod uwagę że nie wszystkie są w pełni darmowe a wiele z nich posiada ograniczenia. Sprawdź proszę poniższą listę programów do tworzenia drzewa genealogicznego: Drzewo Genealogiczne II (ograniczenia, wersja testowa)  Family Tree Builder (trzeba założyć konto online, ale jest darmowy i bez ograniczeń) Brother's Keeper (wersja testowa) Drzewo przodków (wersja demo)
×