PHP соединение с веб-сервером - PullRequest
0 голосов
/ 18 октября 2018

Я, как правило, новичок в использовании онлайн веб-сервера.000webhost.com - это бесплатный сервер веб-хостинга, который предоставляет базу данных, и вы также можете подключить к ней свой веб-сайт.Я хорошо создал свою базу данных, и когда я попытался соединить базу данных и веб-сайт.Я думаю, что проблема заключается в подключении к базе данных, и я понятия не имею, что мне вводить.эта ошибка вызывает enter image description here

вот как я настраиваю свое соединение.

<?php
   // define database related variables
   $database = '..';
   $host = '..';
   $user = '..';
   $pass = '..';

   // try to conncet to database
   $dbh = new PDO("mysql:dbname={$database};host={$host};port={3306}", $user, $pass);

   if(!$dbh){

      echo "unable to connect to database";
   }

?>

и это мой authenticate.php

<?php 
    require 'database-config.php';

    session_start();

    $username = "";
    $password = "";

    if(isset($_POST['username'])){
        $username = $_POST['username'];
    }
    if (isset($_POST['password'])) {
        $password = $_POST['password'];

    }

    echo $username ." : ".$password;

    $q = 'SELECT * FROM users WHERE username=:username AND password=:password';

    $query = $dbh->prepare($q);

    $query->execute(array(':username' => $username, ':password' => $password));


    if($query->rowCount() == 0){
        header('Location: index.php?err=1');
    }else{

        $row = $query->fetch(PDO::FETCH_ASSOC);

        session_regenerate_id();
        $_SESSION['sess_user_id'] = $row['id'];
        $_SESSION['sess_username'] = $row['username'];
        $_SESSION['sess_userrole'] = $row['role'];

        echo $_SESSION['sess_userrole'];
        session_write_close();

        if( $_SESSION['sess_userrole'] == "admin"){
            header('Location: adminhome.php');
        }else{
            header('Location: userhome.php');
        }


    }


?>

потому что это то, что сайт дал мне enter image description here

Я надеюсь, что смогу решить эту проблему прямо сейчас, потому что я планирую подключить его через мобильный телефон в ближайшее время.Заранее спасибо, господа.

1 Ответ

0 голосов
/ 18 октября 2018

Ваша проблема в том, что вы отправляете данные перед отправкой заголовка.В вашем случае имя пользователя: пароль вызывает ошибки.Вы должны повторить их после всех header s и session_*.Просто вызовите эхо в конце этого скрипта, и все будет в порядке.И, пожалуйста, никогда не публикуйте учетные данные (особенно учетные данные БД)

<?php 
require 'database-config.php';

session_start();

$username = "";
$password = "";

if(isset($_POST['username'])){
    $username = $_POST['username'];
}
if (isset($_POST['password'])) {
    $password = $_POST['password'];

}

echo $username ." : ".$password; //<-- Causing the problem

$q = 'SELECT * FROM users WHERE username=:username AND password=:password';

$query = $dbh->prepare($q);

$query->execute(array(':username' => $username, ':password' => $password));


if($query->rowCount() == 0){
    header('Location: index.php?err=1');
}else{

    $row = $query->fetch(PDO::FETCH_ASSOC);

    session_regenerate_id();
    $_SESSION['sess_user_id'] = $row['id'];
    $_SESSION['sess_username'] = $row['username'];
    $_SESSION['sess_userrole'] = $row['role'];

    echo $_SESSION['sess_userrole']; //<-- Causing the second problem
    session_write_close();

    if( $_SESSION['sess_userrole'] == "admin"){
        header('Location: adminhome.php');
    }else{
        header('Location: userhome.php');
    }


}


?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...