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

Skrypt rejestracji przekierowuje na stronę główną domeny, nawet bez uzupełnienia formularza.

VPS Starter Arubacloud
0 głosów
189 wizyt
pytanie zadane 3 listopada 2019 w Hostingi, domeny, usługi przez Rafał Michalik 1 Początkujący (490 p.)
edycja 3 listopada 2019 przez Rafał Michalik 1

Posiadam pewien problem z którym się jeszcze nie spotkałem. Otóż niedawno zakupiłem serwer i domenę. Wszystko działało do pewnego momentu. Obecnie skrypt rejestracji (taki jak na filmie u Zelenta), nawet nie uzupełniony i wysłany przenosi użytkownika na główną stronę domeny. Gdy wypełnimy formularz i dane są poprawne to doda użytkownika do bazy, lecz nie przekieruje użytkownika na stronę podaną w header() tylko od razu na główną stronę domeny. Używam .htaccess, lecz nie wiem czy może to być przyczyną problemu.
Męczę się z tym dwa dni i nie mam już pomysłu. Skrypt jest poprawny, więc czy to może być wina serwera i hostingu na Linuxpl.com?

Zamieszczam kod rejestracji:

<?php
	session_start();
	if((isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany']==true))
	{
		header('Location: https://e-rafcik.pl');
		exit();
	}
	if (isset($_POST['email']))
	{
		$wszystko_OK=true;
		$nick = $_POST['nick'];
		if ((strlen($nick)<3) || (strlen($nick)>20))
		{
			$wszystko_OK=false;
			$_SESSION['e_nick']="Nick musi posiadać od 3 do 20 znaków!";
		}
		if (ctype_alnum($nick)==false)
		{
			$wszystko_OK=false;
			$_SESSION['e_nick']="Nick może składać się tylko z liter i cyfr (bez polskich znaków)";
		}
		$email = $_POST['email'];
		$emailB = filter_var($email, FILTER_SANITIZE_EMAIL);
		if ((filter_var($emailB, FILTER_VALIDATE_EMAIL)==false) || ($emailB!=$email))
		{
			$wszystko_OK=false;
			$_SESSION['e_email']="Podaj poprawny adres e-mail!";
		}
		$haslo1 = $_POST['haslo1'];
		$haslo2 = $_POST['haslo2'];
		if ((strlen($haslo1)<8) || (strlen($haslo1)>20))
		{
			$wszystko_OK=false;
			$_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
		}
		if ($haslo1!=$haslo2)
		{
			$wszystko_OK=false;
			$_SESSION['e_haslo']="Podane hasła nie są identyczne!";
		}
		$haslo_hash = password_hash($haslo1, PASSWORD_DEFAULT);
		if (!isset($_POST['regulamin']))
		{
			$wszystko_OK=false;
			$_SESSION['e_regulamin']="Potwierdź akceptację regulaminu!";
		}
		$sekret = "6Ld3S8AUAAAAAHyz6vg24FGtwkO1ZdcibyfzFyvO";
		$sprawdz = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$sekret.'&response='.$_POST['g-recaptcha-response']);
		$odpowiedz = json_decode($sprawdz);
		if ($odpowiedz->success==false)
		{
			$wszystko_OK=false;
			$_SESSION['e_bot']="Potwierdź, że nie jesteś botem!";
		}
		$_SESSION['fr_nick'] = $nick;
		$_SESSION['fr_email'] = $email;
		$_SESSION['fr_haslo1'] = $haslo1;
		$_SESSION['fr_haslo2'] = $haslo2;
		if (isset($_POST['regulamin'])) $_SESSION['fr_regulamin'] = true;
		require_once "../connect.php";
		mysqli_report(MYSQLI_REPORT_STRICT);
		try
		{
			$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
			$polaczenie->set_charset('utf8');
			if ($polaczenie->connect_errno!=0)
			{
				throw new Exception(mysqli_connect_errno());
			}
			else
			{
				$rezultat = $polaczenie->query("SELECT id FROM uzytkownik WHERE email='$email'");
				if (!$rezultat) throw new Exception($polaczenie->error);
				$ile_takich_maili = $rezultat->num_rows;
				if($ile_takich_maili>0)
				{
					$wszystko_OK=false;
					$_SESSION['e_email']="Istnieje już konto przypisane do tego adresu e-mail!";
				}
				$rezultat = $polaczenie->query("SELECT id FROM uzytkownik WHERE login='$nick'");
				if (!$rezultat) throw new Exception($polaczenie->error);
				$ile_takich_nickow = $rezultat->num_rows;
				if($ile_takich_nickow>0)
				{
					$wszystko_OK=false;
					$_SESSION['e_nick']="Istnieje już gracz o takim nicku! Wybierz inny.";
				}
				if ($wszystko_OK==true)
				{
				    $data= date("Y-m-d");
					if ($polaczenie->query("INSERT INTO uzytkownik VALUES (NULL, '$nick', '$haslo_hash', '$email', '$data', 0, '1.png',0,0,'0')"))
					{
						$_SESSION['udanarejestracja']=true;
						$odbior=$polaczenie->query("SELECT id FROM uzytkownik WHERE email='$email'");
						$row=mysqli_fetch_row($odbior);
						$n=20; 
						function getName($n) { 
							$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
							$randomString = ''; 
							for ($i = 0; $i < $n; $i++) { 
								$index = rand(0, strlen($characters) - 1); 
								$randomString .= $characters[$index]; 
							} 
							return $randomString; 
						} 
						$kodaktywacyjny= $row['0']."ż".getName($n); 
						$koddeaktywacja=$kodaktywacyjny."14de15le192te";
						$polaczenie->query("UPDATE uzytkownik SET kodaktywacyjny='$kodaktywacyjny' WHERE email='$email' AND id='$row[0]' ");
						include_once "../smtpmail/smtpmail1.php";
						$temat="Aktywacja konta w serwisie www.e-Rafcik.pl!";
						$wiadomosc="<div style=\"color: black;\">Dziękujemy za dokonanie rejestracji w serwisie www.e-Rafcik.pl! Cieszymy się, że chciałeś/aś dołączyć do naszej społeczności. <br/> Poniżej załączamy link aktywacyjny do Twojego konta. <br/> <a href=\"https://e-rafcik.pl/konta/aktywuj.php?kod=$kodaktywacyjny\">TEN LINK</a><br/>
						Jeśli to nie Ty rejestrowałeś/aś się w tym serwisie kliknij w poniższy link i usuń to konto:<a href=\"https://e-rafcik.pl/konta/delete.php?kod=$koddeaktywacja\">TEN LINK</a> </div>";
						wyslijMailText("$email","$temat","$wiadomosc");
						header('Location: aktywuj.php?id='.$row[0].'&a=1');
					}
					else
					{
						throw new Exception($polaczenie->error);
					}

				}

				$polaczenie->close();
			}

		}
		catch(Exception $e)
		{
			echo '<span style="color:red;">Błąd serwera! Przepraszamy za niedogodności i prosimy o rejestrację w innym terminie!</span>';
			echo '<br />Informacja developerska: '.$e;
		}

	}

?>

a tu htaccess

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://e-rafcik.pl%{REQUEST_URI} [L,NE,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

 

komentarz 3 listopada 2019 przez Arkadiusz Waluk Ekspert (287,550 p.)
Bez kodu nikt Ci nie powie co jest nie tak. Może w htaccess jest jakieś kolejne przekierowanie? Może to przekierowanie jednak się nie wykonuje albo wykonuje jakieś inne później?
komentarz 3 listopada 2019 przez Rafał Michalik 1 Początkujący (490 p.)
Poprawiłem pytanie.

1 odpowiedź

0 głosów
odpowiedź 3 listopada 2019 przez Arkadiusz Waluk Ekspert (287,550 p.)
wybrane 4 listopada 2019 przez Rafał Michalik 1
 
Najlepsza
if((isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany']==true))
    {
        header('Location: https://e-rafcik.pl');
        exit();
    }

Sprawdzałeś czy w momencie próby jesteś na pewno wylogowany? Może przekierowanie następuje już tutaj?

header('Location: aktywuj.php?id='.$row[0].'&a=1');

Jeśli wszystko się uda to przekierowanie jest tutaj, co się dzieje w tym pliku? Może tam też jest jakieś przekierowanie?

komentarz 3 listopada 2019 przez Rafał Michalik 1 Początkujący (490 p.)
W tym pierwszym przypadku, gdyby tak było, nie mógłbym wchodzić do tej strony i nic nie mógłbym tam wpisać. Ze wszystkich headerów w pliku rejestracja i aktywuj zrobiłem komentarze i mimo tego dalej dochodzi do przekierowania na główną stronę domeny.
komentarz 3 listopada 2019 przez Arkadiusz Waluk Ekspert (287,550 p.)
Nie ma w tym pliku kodu formularza, więc nie wiem czy on też ma takie zabezpieczenie. Jeżeli to jest tutaj: https://e-rafcik.pl/konta/rejestracja to po wysłaniu formularza w odpowiedzi jest przekierowanie 302. Coś tam więc musi przekierowywać.
komentarz 3 listopada 2019 przez Rafał Michalik 1 Początkujący (490 p.)
edycja 4 listopada 2019 przez Rafał Michalik 1

 

Kod niepotrzebny już


 

komentarz 4 listopada 2019 przez Rafał Michalik 1 Początkujący (490 p.)

@Arkadiusz Waluk, przeprowadziłem kolejne próby i zaczęło działać dopiero, gdy początek kodu, czyli php sprawdzający dane przeniosłem do innego pliku, a resztę strony czyli ten formularz zostawiłem i teraz wszystko działa. Zostawię to w tej formię, jednak wciąż mnie zastanawia dlaczego przestało to działać w takiej postaci jakiej było na początku. No cóż, nie zawsze kod chce współpracować. Dzięki za pomoc, jaką mi udzieliłeś.wink

komentarz 5 listopada 2019 przez Arkadiusz Waluk Ekspert (287,550 p.)
Fajnie, że się udało. Może miałeś jakieś manipulacje sesją/nagłówkami po tym, gdy coś już zostało wysłane do przeglądarki? Ciężko powiedzieć bez szczegółowego testowania, na pierwszy rzut oka niczego nie zauważyłem.

Podobne pytania

0 głosów
0 odpowiedzi 129 wizyt
pytanie zadane 28 lutego 2020 w PHP przez Hardwell Dyskutant (8,960 p.)
0 głosów
2 odpowiedzi 484 wizyt
0 głosów
2 odpowiedzi 265 wizyt
pytanie zadane 5 stycznia 2018 w PHP przez fyww Obywatel (1,450 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...