• 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.

0 głosów
128 wizyt
pytanie zadane 3 listopada 2019 w Hostingi, domeny, usługi przez Rafał Michalik 1 Początkujący (470 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 (281,680 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 (470 p.)
Poprawiłem pytanie.

1 odpowiedź

0 głosów
odpowiedź 3 listopada 2019 przez Arkadiusz Waluk Ekspert (281,680 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 (470 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 (281,680 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 (470 p.)
edycja 4 listopada 2019 przez Rafał Michalik 1

 

Kod niepotrzebny już


 

komentarz 4 listopada 2019 przez Rafał Michalik 1 Początkujący (470 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 (281,680 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 72 wizyt
pytanie zadane 28 lutego 2020 w PHP przez Hardwell Dyskutant (8,580 p.)
0 głosów
2 odpowiedzi 315 wizyt
0 głosów
2 odpowiedzi 195 wizyt
pytanie zadane 5 stycznia 2018 w PHP przez fyww Obywatel (1,450 p.)

87,942 zapytań

136,520 odpowiedzi

304,383 komentarzy

58,306 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...