Всем привет)
Не могу решить задачу; суть в том, что авторизация проходит через RedBean , а загрузка/обновление фото профиля на обычном php; ну вот так я захотел.
<?php
require "database.php";
$_SESSION['logged_user'] = $user; // User's session
$sessionId = $_SESSION["id"];
$user = mysqli_fetch_assoc(mysqli_query($link, "SELECT * FROM users WHERE id = $sessionId"));
?>
идет жалоба на
$user = mysqli_fetch_assoc(mysqli_query($link, "SELECT * FROM users WHERE id = $sessionId"));
где $link, должна стоять другая переменная, в связи с чем, как я догадываюсь, вылезает такая ошибка:
"Warning: mysqli_query() expects parameter 1 to be mysqli, null given in"
Код авторизации:
<?php
$data = $_POST;
if ( isset($data['do_login']) )
{
$errors = array();
$user = R::findOne('users', 'login = ?', array($data['login']));
if ($user)
{
// логин существует
if( password_verify($data['password'], $user->password)) {
// всё хорошо, логиним пользователя
$_SESSION['logged_user'] = $user;
header('Location: /');
} else
{
$errors[] = 'Неверно введён пароль!';
}
} else
{
$errors[] = 'Пользователь с таким логином не найден!';
}
}
?>
<?php require_once 'tpl/head.php'; ?>
<div class="body_index">
<div class="authorization">
<form action="" method="POST">
<div class="head">
<p>Авторизация</p>
</div>
<div class="main">
<div class="input-login">
<input type="login" name="login" placeholder="Логин" value="<?php echo @$data['login']; ?>">
<img class="login-icon" src="images/log.png" alt="">
</div>
<div class="input-password">
<input type="password" name="password" placeholder="Пароль" value="<?php echo @$data['login']; ?>">
<img class="lock-icon" src="images/password.png" alt="">
</div>
<button type="submit" name="do_login">Войти</button>
<?php
if( ! empty($errors) )
{
echo '<div class="erros_msg">'.array_shift($errors).'</div>';
}
?>
</div>
<div class="footer">
<p><a class="reg" a href="/signup.php">Регистрация</a></p>
<p><a class="pass" href="">Забыли пароль?</a></p>
</div>
</form>
</div>
</div>
код загрузки/обновления фото:
<?php
require "database.php";
$_SESSION['logged_user'] = $user; // User's session
$sessionId = $_SESSION["id"];
$user = mysqli_fetch_assoc(mysqli_query($link, "SELECT * FROM users WHERE id = $sessionId"));
?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Обновление</title>
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
<form class="form" id = "form" action="" enctype="multipart/form-data" method="post">
<div class="upload">
<?php
$id = $user["id"];
$image = $user["image"];
?>
<img src="img/<?php echo $image; ?>" width = 125 height = 125 title="<?php echo $image; ?>">
<div class="round">
<input type="hidden" name="id" value="<?php echo $id; ?>">
<input type="hidden" name="name" value="<?php echo $name; ?>">
<input type="file" name="image" id = "image" accept=".jpg, .jpeg, .png">
<i class = "fa fa-camera" style = "color: #fff;"></i>
</div>
</div>
</form>
<script type="text/javascript">
document.getElementById("image").onchange = function(){
document.getElementById("form").submit();
};
</script>
<?php
if(isset($_FILES["image"]["name"])){
$id = $_POST["id"];
$name = $_POST["name"];
$imageName = $_FILES["image"]["name"];
$imageSize = $_FILES["image"]["size"];
$tmpName = $_FILES["image"]["tmp_name"];
// Image validation
$validImageExtension = ['jpg', 'jpeg', 'png'];
$imageExtension = explode('.', $imageName);
$imageExtension = strtolower(end($imageExtension));
if (!in_array($imageExtension, $validImageExtension)){
echo
"
<script>
alert('Invalid Image Extension');
document.location.href = 'addFile.php';
</script>
";
}
elseif ($imageSize > 1200000){
echo
"
<script>
alert('Image Size Is Too Large');
document.location.href = 'addFile.php';
</script>
";
}
else{
$newImageName = $name . " - " . date("Y.m.d") . " - " . date("h.i.sa"); // Generate new image name
$newImageName .= '.' . $imageExtension;
$query = "UPDATE users SET image = '$newImageName' WHERE id = $id";
mysqli_query($link, $query);
move_uploaded_file($tmpName, 'img/' . $newImageName);
echo
"
<script>
document.location.href = 'addFile.php';
</script>
";
}
}
?>
</body>
</html>
подключение к базе:
<?php
require "rb/rb.php";
R::setup('mysql:host=localhost;dbname=penguin_rus',
'root', 'root');
if ( !R::testConnection() )
{
exit('Нет подключения к Базе данных!');
}
R::close();
session_start();
?>
А если подключаться к базе данных через :
$link = mysqli_connect($dbhost, $username, $password, $dbname);
Код работает , фото загружается, обновляется и выводится;
но я же хочу через RedBean подключение к БД.