Передача GET запроса в php (.htaccess)

260
25 сентября 2017, 04:05

Здравствуйте.
Возникла проблема, не получается использовать GET запрос в этой части кода (при нажатии на ссылку должно переводить на страницу site.ru/lesson.php?id=1, но открывает страницу ошибки(т.е. включается функция not_found()))

$query = mysqli_query($connect, "SELECT * FROM `lessons` WHERE `teachid` = '".$_SESSION['id']."' ");
while ($row = mysqli_fetch_assoc($query))
{
    $haslesson = TRUE;
    echo "
        <br>
        <a href='lesson.php?id=".$row['id']."'><p>".$row['title']."</p></a><br>
    ";
}

Как я сам предполагаю, скорее всего дело в .htaccess, или же в моем index.php

.htaccess:

AddDefaultCharset utf-8
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L]

Часть кода index.php, в которой тоже нужно что-то исправить

if($_SERVER['REQUEST_URI'] == '/') $page ='home';
else
{
    $page = substr($_SERVER['REQUEST_URI'], 1);
    if(!preg_match('/^[A-z0-9]{3,40}$/', $page) ) not_found();
}
$connect = mysqli_connect('localhost', 'root', '', 'qschool');
if (!$connect)
{
    exit('MySQL error');
}
session_start();
if ( file_exists('all/'.$page.'.php')) include 'all/'.$page.'.php';
else if ( $_SESSION['id'] and file_exists('auth/'.$page.'.php')) include 'auth/'.$page.'.php';
else if ( !$_SESSION['id'] and file_exists('guest/'.$page.'.php')) include 'guest/'.$page.'.php';
else not_found();

Знаю, что подобных вопросов здесь полно, но все мои попытки оказались тщетными.
Надеюсь на помощь. Спасибо
P.S. Я почти уверен, что нужно поменять preg_match и добавить что-то в .htaccess

Answer 1

В .htaccess замените

RewriteRule ^(.*)$ index.php?/$1 [L]

на

RewriteRule ^ index.php [L,QSA]

В index.php

$page = substr($_SERVER['REQUEST_URI'], 1);
if(!preg_match('/^[A-z0-9]{3,40}$/', $page) ) not_found();

на

if (preg_match('/^\/([a-z0-9]{3,40})(\?.*)?$/i', $_SERVER['REQUEST_URI'], $matches)) {
    $page = $matches[1];
} else {
    not_found();
}
READ ALSO
Множество проверок, множество запросов

Множество проверок, множество запросов

Условия: как минимум 1, как максимум 3 строки, где userid=$_SESSION['id']; наличие для этих строк в столбцах active значений 1, 2 или 3 (обязательно все три,...

231
Как прописать таймер загрузки кеев?

Как прописать таймер загрузки кеев?

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

228
Как отправлять cookie в заголовке отдельно? C php curl

Как отправлять cookie в заголовке отдельно? C php curl

Нужно что-бы куки отправлялись таким образом А не так

317
Подскажите с рекурсией

Подскажите с рекурсией

ЗдравствуйтеНемного не могу разобраться с рекурсией, а именно как его построить

283