Dlaczego na localhost działa wszystko poprawnie a na innym serwerze zaczyna się problem z logowaniem ?

0

Witam,
Mam pewien problem, a mianowicie, mam projekt sklepu internetowego który jest na zaliczenie przedmiotu, jednak jest mały problem. Projekt był zrobiony na localhost przez xamppa, i tutaj się problem zaczyna, po wrzuceniu wszystkiego na serwer w nazwa.pl. Pierwsze wyskoczył problem z baza danych. Błąd biblioteki PDO :) jednak do tego doszłam zmieniłam i biblioteka działa jednak jest problem z logowaniem, na localhost działa wszystko bez zarzutu a gdy już wrzuce na serwer to nie działa... może mi ktoś pomóc, prace muszę oddać do nst tygodnia a nie mam pojęcia czemu nie działa logowanie, niby jest komunikat " zalogowano pomyślnie " ale nie loguje wg do panelu klienta czy administartora, tutaj podrzucam stronke

http://skoczeksklep.eu/ , login: [email protected] hasło: test ,

kod :

<?php include($_SERVER['DOCUMENT_ROOT']."/php/dbdata.php"); ?> <?php $email=addslashes($_POST['email']); $haslo=addslashes($_POST['haslo']); $ip=$_SERVER['REMOTE_ADDR']; require_once "reCapcha.php"; $secret = "6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe"; $response = null; $reCaptcha = new ReCaptcha($secret); if ($_POST["g-recaptcha-response"]) { $response = $reCaptcha->verifyResponse( $_SERVER["REMOTE_ADDR"], $_POST["g-recaptcha-response"] ); } if ($response != null && $response->success) { $pdo = new PDO('mysql:host='.$mysql_host.';dbname='.$database.';port='.$port, $username, $password ); $pdo->exec("set names utf8"); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt=$pdo->query("SELECT haslo, admin, id FROM uzytkownicy WHERE email = '$email'"); $row = $stmt->fetch(); if (password_verify ($haslo , $row['haslo'] )) { //$_SESSION['ip']=$ip; $_SESSION['zalogowany']=true; $_SESSION['id']=$row['id']; $_SESSION['email']=$email; if($row['admin']==true) $_SESSION['admin']=true; else $_SESSION['admin']=false; header("HTTP/1.1 301 Moved Permanently"); header("Refresh: 2; url=/index.php");echo"Zalogowałes się! - Za chwilę nastąpi przekierowanie..."; exit; } else{ header("HTTP/1.1 301 Moved Permanently"); header("Refresh: 12; url=/pages/zaloguj.php");echo"Błędne dane logowania! - Za chwilę nastąpi przekierowanie..."; exit; } } else { header("HTTP/1.1 301 Moved Permanently"); header("Refresh: 2; url=/pages/zaloguj.php");echo"Błędne dane Capchy! - Za chwilę nastąpi przekierowanie..."; exit; } ?> ```
0

session_start(); na początku było?

0

Nie mam nic :) więc pewnie nie :0

3

Najlepiej zrób tak:

<?php
session_start();
include($_SERVER['DOCUMENT_ROOT']."/php/dbdata.php");
$email=addslashes($_POST['email']);
1

Tak na szybko - widzę, że operujesz na sesjach, ale nie widzę ich inicjalizacji (czyli polecenia session_start()).
Poczytaj o tym, jak sesje działają - https://pl.wikibooks.org/wiki/PHP/Sesje

EDIT widzę, że w międzyczasie już @arczinosek o tym napisał, minęliśmy się. Ale tym bardziej - skoro dwie osoby niezależnie o tym wspominają, to może coś jest na rzeczy ;)

0

Nie Pomogło -.- nie działa nadal...a czy w konfiguracji php.ini moze być cos nie tak?

0

tutaj jeszcze wrzucam index.php

<!DOCTYPE html> <html lang="pl"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <?php include($_SERVER['DOCUMENT_ROOT']."/parts/ico.php"); ?> <meta name="description" content="Strona sklepu sportowego Skoczek."> <title>Strona główna sklepu sportowego Skoczek</title>
<!-- Bootstrap -->
<link href="/css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
  <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head> <body> <?php include($_SERVER['DOCUMENT_ROOT']."/parts/menu.php"); ?>
<?php include($_SERVER['DOCUMENT_ROOT']."/parts/left-panel.php"); ?>
<?php include($_SERVER['DOCUMENT_ROOT']."/parts/carousel.php"); ?>

Nowe produkty: <?php include($_SERVER['DOCUMENT_ROOT']."/php/img_produkt.php"); ?> <?php include($_SERVER['DOCUMENT_ROOT']."/php/dbdata.php"); ?> <?php try{ $pdo = new PDO('mysql:host='.$mysql_host.';dbname='.$database.';port='.$port, $username, $password ); $pdo->exec("set names utf8"); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $pdo->query('SELECT id, nazwa, cena FROM produkty ORDER BY id DESC LIMIT 9'); foreach($stmt as $row) { $zdj_src=img_news($row['id']); echo' ' ; } $stmt->closeCursor(); } catch(PDOException $e){ echo '
Błąd! Błąd biblioteki PDO!.
Powiadom Administratora!

'; } ?>
<?php include($_SERVER['DOCUMENT_ROOT']."/parts/footer.php"); ?>
<?php include($_SERVER['DOCUMENT_ROOT']."/parts/right-panel.php"); ?>
<?php include($_SERVER['DOCUMENT_ROOT']."/parts/footer-bottom.php"); ?> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="/js/bootstrap.min.js"></script> </body> </html>
3

session_start() musi być na samym początku pliku, czyli jeszcze przed <!DOCTYPE>

2

Tak technicznie to sesja musi się pojawić przed przesłaniem jakichkolwiek danych do przeglądarki, więc w sumie to w tym konkretnym przykładzie masz rację, niemniej jakby skrypt wykonywał jakieś obliczenia/działania "po cichu", to sesję można całkowicie bezpiecznie zainicjować później - "To use cookie-based sessions, session_start() must be called before outputting anything to the browser. ".

0

Ale wiecie co Panowie :) wszystko pięknie logowanie i wylogowywanie działa :-) ale czy ja w kazdym pliku php musze na początku dać
session_start() ?

0

bo jak na złość koszyk nie działa... już sił do tego nie mam -.-

1

Dobra, dziękuję :) wszystko działa ! :D dziękuje za szybką odpowiedź !
pozdrawiam :)

1

A czy możesz napisać, co było problem i w jaki sposób sobie poradziłaś? Może ta informacja się przyda kiedyś innym osobom, które będą walczyć z podobnym problemem :)

1

wiesz co :) ja porpostu do plików php dodałam na poczatku <?php session_start();?> i zadziałało :) moze delikatnie nie ładnie to wygląda ale pomogło :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1