Hej,
Na samym początku chciałbym zwrócić uwagę, że w programowaniu stron jestem totalnym amatorem i kod może wydawać się zabawny bardziej doświadczonym, ale stworzyłem już niemalże całą witrynę, a mam problem z głupim ciasteczkiem : D Problem jest prosty: używam setcookie do ustawienia pliku cookie, wszystko super działa na wielu różnych kompach czy nawet telefonach, ale już drugi pecet z kolei po prostu nie tworzy pliku cookie, przez co zalogowanie się nie jest możliwe. Na owych pecetach strona sprawdzana była przez różne przeglądarki (Firefox, Chrome, Opera), żadnej różnicy.
Spędziłem kilka długich godzin na szukaniu przyczyny problemu, na anglo jak i polskojęzycznych stronach - nie widzę by ktokolwiek na świecie miał taki problem. Znając życie to coś mega banalnego, ale już opadam z sił. Oto kod index.php:
<?php
ob_start();
include 'connect.php';
if(!isset($_GET['ZmianaHasla'])) //To takie tymczasowe, dopóki nie używam jeszcze mod_rewrite
header("Location: index.php?ZmianaHasla=0");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" >
<link href="index.css" rel="stylesheet" type="text/css">
<title>Logowanie</title>
</head>
<body>
<div class="center">
<div id="panel">
<form action="" method="post">
<noscript><center><b><font color="red">Do poprawnego działania strony wymagane jest włącznie obsługi javascript!</font></b></center><br></noscript>
<?php
if($_GET['ZmianaHasla'] == 1)
printf("<center><font color=green>Hasło zostało pomyślnie zmienione, zaloguj się ponownie.</font></center><br>");
?>
<label for="User">Nazwa użytkownika:</label>
<input type="text" id="User" name="User">
<label for="Pass">Hasło:</label>
<input type="password" id="Pass" name="Pass">
<label><a href="forgotpassword.php">Przypomnij hasło</a></label>
<div id="lower">
<input type="submit" value="Login" id="Send" name="Send">
<br>
</form>
</body>
<?php
$User = htmlspecialchars(trim($_POST['User']));
$Pass = htmlspecialchars(trim($_POST['Pass']));
$Send = $_POST['Send'];
if(isset($_COOKIE['Send'])) $error ='Odczekaj '.($_COOKIE['Send']-time()).' sekund przed wysłaniem';
if(SprawdzUprawnienia() > -2)
header("Location: zalogowany.php");
if($Send && !isset($_COOKIE['Send']))
{
if(strlen($User) && strlen($Pass))
{
$Znaleziono = 0;
$Podane = mysql_query("SELECT ID, User, Pass, Rights, Imie, Nazwisko FROM `$db`.`logowanie`");
while($Wiersz = mysql_fetch_array($Podane))
{
if($Wiersz['User'] == $User)
{
if(md5($Pass) == $Wiersz['Pass'])
{
$Znaleziono = 1;
$Ciasteczko = sprintf("%d/%s %s/%s", $Wiersz['Rights'], $Wiersz['Imie'], $Wiersz['Nazwisko'], $Wiersz['ID']);
setcookie("Zalogowany", $Ciasteczko, time() + 600, "/", ".www.g***k.eu");
header("Location: zalogowany.php");
}
break;
}
}
if($Znaleziono == 0)
printf("</br><center><font color=red>Niepoprawna nazwa użytkownika lub hasło!</font></center>");
}
else
printf("</br><center><font color=red>Wypełnij wszystkie pola!</font></center>");
}
?>
</html>
connect.php jakby było potrzebne:
<?php
error_reporting(0);
$db = "g***k_eko";
$link = mysql_connect('localhost', 'g***k_eko', 'tajnehaslo', '$db');
if(!$link)
{
printf("<br><b><font color='red'>Nie mogę połączyć się z serwerem MySQL. Kod błędu: %s</font></b>", mysqli_connect_error());
}
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER_SET utf8_polish_ci");
function SprawdzUprawnienia()
{
if(isset($_COOKIE['Zalogowany']) && strlen($_COOKIE['Zalogowany']) > 2)
{
$Data = 0;
$str = explode("/", $_COOKIE['Zalogowany']);
$Zapytanie = sprintf("SELECT ID, User, Rights, Imie, Nazwisko, ZmianaHasla, RightsConst FROM `g***k_eko`.`logowanie` WHERE ID='%s'", $str[2]);
$Podane = mysql_query("$Zapytanie");
while($Wiersz = mysql_fetch_array($Podane))
$Data = sprintf("%s", $Wiersz['ZmianaHasla']);
$Obecna_Data = date("Y-m-d");
$Minelo = (strtotime($Obecna_Data) - strtotime($Data)) / (60 * 60 * 24);
if($str[0] != -1 && $Minelo > 29)
{
$Zapytanie = sprintf("UPDATE `g***k_eko`.`logowanie` SET `Rights`='-1' WHERE `ID`='%s'", $str[2]);
mysql_query("$Zapytanie");
return -1;
}
else
return strtok($_COOKIE['Zalogowany'], "/");
}
else
return -2;
}
?>
Dziękuję za pomoc : )