У меня есть страница входа в PHP на веб-сайте в следующей форме:
<?php
$logincorrect = 'notdefined';
$SubmitLogin = 'no';
session_set_cookie_params (3600, $httponly = true);
session_start();
if (isset($_POST['SubmitLogin'])==TRUE)
{
$SubmitLogin = 'yes';
$email = strtolower($_POST['email']);
$passwrd = md5($_POST['nametag']);
}
if($SubmitLogin == 'yes')
{
$link = mysql_connect ('address.website.com', 'restricteduser', 'password_here');
if (!$link)
{
echo '<p style="color:red">* Error: Could not connect to database.</p> ';
}
$email = mysql_real_escape_string(strip_tags($email),$link);
$passwrd = mysql_real_escape_string(strip_tags($passwrd), $link);
$selectDB = mysql_select_db ('database', $link);
if (!$selectDB)
{
echo('<p style="color:red">* Error: Could not select database.</p> ' );
mysql_close($link);
}
$passwrdcheck = mysql_query
(" SELECT * FROM tablename WHERE email = '$email' AND passwrd = '$passwrd'");
if (!$passwrdcheck)
{
echo('<p style="color:red">* Error: Could not search database.</p> ' );
mysql_close($link);
}
if(mysql_num_rows($passwrdcheck) == 0)
{
$logincorrect = 'no';
echo '<p style="color:red">Login details incorrect. Please try again.</p>';
}
else
{
$logincorrect = 'yes';
if($profile = mysql_fetch_array($passwrdcheck));
{
if($profile = mysql_fetch_array($passwrdcheck));
{
$ID = $profile['ID'];
$languages = mysql_query
(" SELECT * FROM translanguages WHERE ID = '$ID' ");
if (!$languages)
{
echo('<p style="color:red">* Error: Could not search database.</p> ' );
mysql_close($link);
}
$expertise = mysql_query
(" SELECT * FROM transexpertise WHERE ID = '$ID' ");
if (!$expertise)
{
echo('<p style="color:red">* Error: Could not search database.</p> ' );
mysql_close($link);
}
$tracking = mysql_query
(" SELECT * FROM transtracking WHERE ID = '$ID' ");
if (!$tracking)
{
echo('<p style="color:red">* Error: Could not search database.</p> ' );
mysql_close($link);
}
if($profile2 = mysql_fetch_array($languages))
{ if($profile3 = mysql_fetch_array($expertise))
{ if($profile4 = mysql_fetch_array($tracking))
{
$_SESSION['profile'] = $profile;
$_SESSION['profile2'] = $profile2;
$_SESSION['profile3'] = $profile3;
$_SESSION['profile4'] = $profile4;
//echo "Login successful. If you are not automatically redirected, please click <a href='profile.php'> here </a>.";
header ("Location: ./profile.php"); exit;
}
}
}
}
}
}
}
?>
Это отлично работает с моего компьютера и телефона Android. Тем не менее, он не работает с моего Ipad. Я пробовал chrome и safari на ipad, и результат тот же: при нажатии кнопки «SubmitLogin» страница входа просто обновляется, а не подключается к базе данных и проверяет введенную информацию. Сообщения об ошибках не отображаются.
Я несколько дней ломал голову, но не могу понять, почему это так. Есть идеи? Спасибо!
Редактировать:
Часть «Направление обратно на страницу входа» в profile.php выглядит следующим образом:
$loggedin = 'no';
session_set_cookie_params (3600, $httponly = true);
session_start();
if(isset($_SESSION['profile']) AND isset($_SESSION['profile2']) AND isset($_SESSION['profile3']) AND isset($_SESSION['profile4']))
{
$profile = $_SESSION['profile'];
$profile2 = $_SESSION['profile2'];
$profile3 = $_SESSION['profile3'];
$profile4 = $_SESSION['profile4'];
$loggedin = 'yes';
}
else
{
session_destroy();
header ("Location: ./login.php");
exit;
}
Задача ещё не решена.
Других решений пока нет …