• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[PHP] Błąd z pamięcią

Object Storage Arubacloud
0 głosów
394 wizyt
pytanie zadane 8 lutego 2018 w PHP przez Kuba Jakubowski Gaduła (3,550 p.)
edycja 8 lutego 2018 przez HaKIM

Wczoraj napisałem nowy skrypt blokujący dostęp do strony dla nieuprawnionych osób. Jednak po uruchomieniu go dostaje od PHP: 

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /opt/lampp/htdocs/kubagp/dostep.php on line 11

Próbowałem już zmieniać ilość pamieci PHP jednak nie wydaje mi się aby łączenie z bazą mogło zajmować 700 mb. bo tyle właśnie ramu zużył ten skrypt zanim Linux się zwiesił.

Za każdym razem dołączam do pliku, do którego chcę ograniczyć dostęp ten plik oraz wywołuje funkcję dostep() z argumentem w postaci stringa z nazwą strony.

Proszę o pomoc

<?php
	function dostep($nazwa_strony)
	{
		global $mysqlhost, $mysqlname, $mysqlpass, $nazwa_strony;

		if(!isset($mysqlname))
		{
			require_once("mysqlhost.php");
		}

		$polaczenie = new mysqli($mysqlhost, $mysqlname, $mysqlpass, "b9_21256974_baza");
		$sql = 'SELECT dostep FROM dostep WHERE adres="'.$nazwa_strony.'"';
		$zapytanie = $polaczenie -> query($sql);
		$row = $zapytanie->fetch_assoc();
		$uprawnienia = $row['dostep'];
		$polaczenie->close();

		if($_SESSION['uprawnienia']>=$uprawnienia)
		{
			return(true);
		}
		else
		{
			if((isset($_SERVER['HTTP_REFERER'])&&(dostep($_SERVER['HTTP_REFERER']))))
			{
				header('Location: '.$_SERVER['HTTP_REFERER']);
			}
			else
			{
				header('Location: index.php');
			}
		}
	}
?>

 

1 odpowiedź

0 głosów
odpowiedź 8 lutego 2018 przez boyeo Obywatel (1,120 p.)
1. Nie ustawiaj passów do bazy na globalne.

2.Napisz pętle do wyciągania osobnych rekordów przy pomocy `fetch_assoc()` która przypisze wyniki do tablicy
komentarz 8 lutego 2018 przez Kuba Jakubowski Gaduła (3,550 p.)

1. Jeśli nie ustawie passów na globalne to skąd je potem wezmę?

2. Po co mam pisać pętle skoro chce wyciągnąć tylko jeden rekord?

Poza tym już znalazłem rozwiązanie problemu z pamięcią, okazało się że niepotrzebnie ustawiałem zmienną $nazwa_strony na globalną bo to prawdopodobnie powodowało błąd. Jednak przekierowanie dalej nie działa bo Chrome pokazuje za dużo przekierowań.

Dodaje screena z bazy.

Podobne pytania

0 głosów
1 odpowiedź 392 wizyt
pytanie zadane 12 kwietnia 2018 w Assembler przez Isild Użytkownik (580 p.)
0 głosów
1 odpowiedź 268 wizyt
pytanie zadane 8 stycznia 2021 w C i C++ przez bartx3 Początkujący (270 p.)
0 głosów
2 odpowiedzi 450 wizyt
pytanie zadane 27 listopada 2018 w C i C++ przez Alan Kruszyński Obywatel (1,410 p.)

92,555 zapytań

141,402 odpowiedzi

319,544 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...