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

question-closed PHP - Proserwer, cookies i łączenie

Object Storage Arubacloud
0 głosów
498 wizyt
pytanie zadane 19 lipca 2015 w PHP przez Adrian1999 Nałogowiec (34,570 p.)
zamknięte 19 lipca 2015 przez Adrian1999

Witam wszystkich serdecznie mam problem, z dwoma kodami.. 

  1. Nie mogę się połączyć z bazą danych
  2. Nie mogę używać zmiennych sesyjnych w plikach

Tutaj jest mój connect php i przykładowo zaloguj.php

<?php

	$host = 'bielecadrian.xaa.pl';
	$db_user = 'bielecad_adi';
	$db_password = 'qwertyu';
	$db_name = 'bielecad_baza';
	
	try{
	
		$polaczenie = new PDO('mysql:host='.$host.';dbname='.$db_name.';', $db_user, $db_password);
	
		$polaczenie->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	}
   	   catch(PDOException $e)
   {
      echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
exit;

   }
?>
//// to był connect teraz zaloguj
<?php

	session_start();
	
	require_once "connect.php";


		$login = filter_input(INPUT_POST, 'login', FILTER_SANITIZE_STRING);
		$haslo = $_POST['haslo'];
			
			

		if(!$login || empty($haslo))
			echo "blad";
		
		$rezultat= $polaczenie->prepare("SELECT * FROM uzytkownicy WHERE user=:user LIMIT 1");
        $rezultat->bindParam(":user", $login,PDO::PARAM_STR);
        $user = null;
       $rezultat->execute();
 
 	$wiersze = $rezultat->RowCount();
 	if($wiersze ==0)
 	{
 		$_SESSION['blad'] = '<span style="color:red; font-size:18px;"><i>Nie ma takiego loginu w bazie danych</i></span>';
 		header('Location: index.php');
 		exit;
 	}

			$user = $rezultat->fetch(PDO::FETCH_OBJ);	
		//	$hash = password_hash($user->pass, PASSWORD_BCRYPT);
			
		
			if (password_verify($haslo, $user->pass)) {

  				$_SESSION['zalogowany'] = true;
				$_SESSION['id'] = $user->id;
				$_SESSION['user'] = $user->user;
				$_SESSION['drewno'] = $user->drewno;
				$_SESSION['kamien'] = $user->kamien;
				$_SESSION['zboze'] = $user->zboze;
				$_SESSION['email'] = $user->email;
				$_SESSION['dnipremium'] = $user->dnipremium;
				
				unset($_SESSION['blad']);
				$rezultat->closeCursor();
				header('Location: gra.php');
  		}
  		else
  		{
 		$_SESSION['blad'] = '<span style="color:red; font-size:18px;"><i>Nie ma takiego loginu w bazie danych</i></span>';
 		header('Location: index.php');
exit;
  		}

?>

wyskakuje mi taki błąd 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/bielecad/public_html/zarejestruj.php:1) in /home/bielecad/public_html/zarejestruj.php on line 3
Połączenie nie mogło zostać utworzone: SQLSTATE[28000] [1045] Access denied for user 'bielecad_adi'@'188.165.22.182' (using password: YES)

Wpisywałem w google ale nic to nie daje, dla osób które chcą przetestować na własnej skórze  http://bielecadrian.xaa.pl/

komentarz zamknięcia: Znaleziono odpowiedź

3 odpowiedzi

+1 głos
odpowiedź 19 lipca 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)

Co do drugiego to standardowy błąd - operacje na sesji muszą zostać wykonane przed wysłaniem jakichkolwiek danych do przeglądarki. Lub jeśli nie możesz tak zrobić to na początku pliku możesz dać

ob_start();

a na końcu

ob_end_flush();

I to też rozwiązuje problem.

A co do pierwszego to jesteś pewien, że dane do połączenia z bazą są poprawne? Spróbuj może bez tego średnika na końcu za dbname o tak

$polaczenie = new PDO('mysql:host='.$host.';dbname='.$db_name, $db_user, $db_password);

 

komentarz 19 lipca 2015 przez Boshi VIP (100,240 p.)
Raczej na 100 % problemem jest średnik, bo narazie twoja nazwa bazy wygląda tak; TwojaNazwa;
komentarz 19 lipca 2015 przez Adrian1999 Nałogowiec (34,570 p.)
<?php

	$host = "bielecadrian.xaa.pl";
	$db_user = "bielecad_adi";
	$db_password = "qwertyuiop";
	$db_name = "bielecad_baza";
	
	try{
	
		$polaczenie = new PDO('mysql:host='.$host.';dbname='.$db_name, $db_user, $db_password);
	
		$polaczenie->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	}
   	   catch(PDOException $e)
   {
      echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
exit;

   }
?>

Nadal nic, tworzylem nową baze zmieniałem hasło itd nie działa..

A co do drugiego to to samo, również nie działa, ale tutaj mogłem błąd gdzieś popełnić

<?php
session_start();
function blad()
{
			$_SESSION['blad'] = '<span style="color:red">Uzupełnij wszystkie pola</span>';
			header('Location: index.php');
			exit;
}

	
	
if ($_SERVER['REQUEST_METHOD'] != "POST") {
    exit;
}
	require_once "connect.php";

		$login = filter_input(INPUT_POST, 'login', FILTER_SANITIZE_STRING);
		$haslo = $_POST['haslo'];
		$email = filter_input(INPUT_POST, 'mail', FILTER_VALIDATE_EMAIL);

		$hash = password_hash($haslo,PASSWORD_BCRYPT);
		if(!$login || !$email || empty($haslo))
		{
		blad();
		}
		$rezultat = $polaczenie->prepare("SELECT * FROM uzytkownicy WHERE user=? OR email=? ");
$rezultat->bindParam(1, $login, PDO::PARAM_STR);
$rezultat->bindParam(2, $email, PDO::PARAM_STR);   		
$rezultat->execute();
$wiersze = $rezultat->RowCount();
   	      if($wiersze!=0)
   	    {
blad();
   	    }
   	    $rezultat = $polaczenie->prepare("INSERT INTO `uzytkownicy`( `user`, `pass`, `email`, `drewno`, `kamien`, `zboze`, `dnipremium`) VALUES (:user,:haslo,:email,0,0,0,0)");
		$rezultat->bindParam(":user", $login,PDO::PARAM_STR);
   	    $rezultat->bindParam(":haslo", $hash,PDO::PARAM_STR);
   	    $rezultat->bindParam(":email", $email,PDO::PARAM_STR);
   	    if($rezultat->execute())
   	    {
   	    	echo "udalo sie";
   	   }

?>

 

komentarz 19 lipca 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)
Co do pierwszego: jesteś pewien, że host bazy danych jest poprawny? Bo znalazłem informacje że na xaa.pl host bazy danych to po prostu "localhost" ale nie jestem w stanie tego zweryfikować bo nie mam u nich konta.

Co do drugiego to nie masz nic wcześniej przed tym kodem który podałeś? Żadnego kodu HTML ani nic? Dalej wyświetla ten sam błąd?
komentarz 19 lipca 2015 przez Adrian1999 Nałogowiec (34,570 p.)

ooo, localhost zadziałał dzięki ziomek a co do kodu to jest cały.

Co do drugiego nadal mam problem, Zarejestruj.php

<?php
ob_start();
session_start();
function blad()
{
            $_SESSION['blad'] = '<span style="color:red">Uzupełnij wszystkie pola</span>';
            header('Location: index.php');
            exit;
}

    
    
if ($_SERVER['REQUEST_METHOD'] != "POST") {
    exit;
}
    require_once "connect.php";

        $login = filter_input(INPUT_POST, 'login', FILTER_SANITIZE_STRING);
        $haslo = $_POST['haslo'];
        $email = filter_input(INPUT_POST, 'mail', FILTER_VALIDATE_EMAIL);

        $hash = password_hash($haslo,PASSWORD_BCRYPT);
        if(!$login || !$email || empty($haslo))
        {
        blad();
        }
        $rezultat = $polaczenie->prepare("SELECT * FROM uzytkownicy WHERE user=? OR email=? ");
$rezultat->bindParam(1, $login, PDO::PARAM_STR);
$rezultat->bindParam(2, $email, PDO::PARAM_STR);           
$rezultat->execute();
$wiersze = $rezultat->RowCount();
             if($wiersze!=0)
           {
blad();
           }
           $rezultat = $polaczenie->prepare("INSERT INTO `uzytkownicy`( `user`, `pass`, `email`, `drewno`, `kamien`, `zboze`, `dnipremium`) VALUES (:user,:haslo,:email,0,0,0,0)");
        $rezultat->bindParam(":user", $login,PDO::PARAM_STR);
           $rezultat->bindParam(":haslo", $hash,PDO::PARAM_STR);
           $rezultat->bindParam(":email", $email,PDO::PARAM_STR);
           if($rezultat->execute())
           {
               echo "udalo sie";
          }
ob_end_flush();
?>

index.php

<?php

session_start();

	if ((isset($_SESSION['zalogowany']))&& ($_SESSION['zalogowany']==true))
	{
		header('Location: gra.php');
		exit();
	}
?>
<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset="utf-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
	<title>Osadnicy</title>
</head>
<body>
<center>
	Tylko martwi ujrzeli koniec wojny - Platon
	Logowanie
	<br /><br />
	<form action="zaloguj.php" method="post">
		
		Login: <br /> <input type="text" name ="login" /><br />
		Hasło: <br /> <input type="password" name ="haslo" /><br />
		<input type="submit" value="Zaloguj" />
		</form>
		<br /> <br / >
		Rejestracja
		<form action="zarejestruj.php" method="post">
		
		Login: <br /> <input type="text" name ="login" /><br />
		Hasło: <br /> <input type="password" name ="haslo" /><br />
		Email: <br /> <input type="text" name ="mail" /><br />

		<input type="submit" value="Zarejestruj" />
		</form>
		
	<?php
	if(isset($_SESSION['blad']))
	echo $_SESSION['blad'];
	?>
	</center>
</body>
</html>

a tu błąd 


Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/bielecad/public_html/zarejestruj.php:1) in /home/bielecad/public_html/zarejestruj.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at /home/bielecad/public_html/zarejestruj.php:1) in /home/bielecad/public_html/zarejestruj.php on line 7

 

komentarz 19 lipca 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)
Noo nie ma za co, tylko to powinieneś wiedzieć i znaleźć u hostingodawcy ;)

Spróbuj może dodać to ob_start() na początku pliku i ob_end_flush() na końcu pliku i zobacz czy będzie działać.
komentarz 19 lipca 2015 przez Adrian1999 Nałogowiec (34,570 p.)
Na początku robiłem localhost, nie działało pisało by wpisać adres swojej strony, zauważyłem że zmieniało się na adres jej ( ip) i że jest dobry dlatego, cóż w pliku zarejestruj.php dodałem jak widać i nie działa error który pokazałem wyskakuje
komentarz 19 lipca 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)
Na początku nie działało Ci localhost pewnie przez ten średnik na końcu ;)

A wybacz, nie zauważyłem że już to dodałeś. Spróbuj jeszcze zamienić linie 2 i 3 kolejnością - tak aby pierwsze było session_start a dopiero później ob_start.
komentarz 19 lipca 2015 przez Adrian1999 Nałogowiec (34,570 p.)

cóż teraz to i index.php coś mi się zniszczył 

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/bielecad/public_html/index.php:1) in /home/bielecad/public_html/index.php on line 3

komentarz 19 lipca 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)
Hmm to nie wiem co się dzieje...

Masz w obydwu plikach na samym początku pliku session_start i później ob_start a na końcu pliku ob_end_flush? Jeśli tak no to wszystko wydaje mi się okej i powinno działać.
komentarz 19 lipca 2015 przez Adrian1999 Nałogowiec (34,570 p.)
http://pastebin.com/ABMgq9YZ tu jest cały index.php on mi powoduje błędy teraz widzę

http://pastebin.com/xkpXLCsf - zaloguj.php
+1 głos
odpowiedź 19 lipca 2015 przez DL TD Nałogowiec (36,710 p.)

Sesje muszą zostać wykonane przed resztą kodu php ;)

+1 głos
odpowiedź 19 lipca 2015 przez efiku Szeryf (75,160 p.)
Plik w utf-8 bez BOM?
Na pewno nie masz czegoś przed <?php ?
Zmien na nowsza wersje php jeśli masz stara :P
komentarz 19 lipca 2015 przez Adrian1999 Nałogowiec (34,570 p.)
zmieniłem na najnowszą jeżeli usunę ogonki to się przekonam czy to wina utf-a ?
komentarz 19 lipca 2015 przez efiku Szeryf (75,160 p.)
Ja pytam czy masz jakieś znaki przed <?php np spację / enter itd.
np :

http://pastebin.com/W7X3rLAR

PS: Jaka jest tam najnowsza? ;)
komentarz 19 lipca 2015 przez Adrian1999 Nałogowiec (34,570 p.)

http://pastebin.com/xkpXLCsf

http://pastebin.com/ABMgq9YZ tu masz kody ja tu nic nie widzę // unseta dałem wcześniej zgaduje że on nie działa bo przed sesją jest wywołany. Ale error i tak się pokazuje, wersja php too php w wersji 5.5 (5.5.22) 

komentarz 19 lipca 2015 przez Boshi VIP (100,240 p.)
http://pastebin.com/DAFpcfq8 takie coś nie działa?
komentarz 19 lipca 2015 przez Adrian1999 Nałogowiec (34,570 p.)

niestety ale nie, wyskakują mi takie błędy 

Warning: Cannot modify header information - headers already sent by (output started at /home/bielecad/public_html/connect.php:1) in /home/bielecad/public_html/zaloguj.php on line 28

Warning: Cannot modify header information - headers already sent by (output started at /home/bielecad/public_html/connect.php:1) in /home/bielecad/public_html/zaloguj.php on line 14

 

komentarz 19 lipca 2015 przez Boshi VIP (100,240 p.)
pokaż plik connect.php
komentarz 19 lipca 2015 przez efiku Szeryf (75,160 p.)
Kodowanie pliku w UTF-* bez BOM?
komentarz 19 lipca 2015 przez Adrian1999 Nałogowiec (34,570 p.)
cóż, stworzyłem kod od nowa jakoś z waszymi instrukcjami. Działa całe szczęście dzięki wszystkim za pomoc

Podobne pytania

0 głosów
1 odpowiedź 209 wizyt
pytanie zadane 25 lutego 2021 w PHP przez domkub12 Początkujący (480 p.)
0 głosów
1 odpowiedź 788 wizyt
pytanie zadane 21 sierpnia 2019 w PHP przez Sobol3k Użytkownik (690 p.)
0 głosów
2 odpowiedzi 750 wizyt
pytanie zadane 6 lipca 2016 w PHP przez Radekol Bywalec (2,880 p.)

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 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!

...