Могу ли я установить PHP-сессию из заголовка ссылки, когда я ее щелкну? - PullRequest
0 голосов
/ 19 мая 2018

Я хотел бы сохранить в сеансе текст, который щелкнул.

$sql = mysqli_query($conn, "SELECT * FROM movies WHERE id = '".$_GET['id']."'");
                                while ($movie = mysqli_fetch_array($sql))
                                {
                                    $mdirector = $movie['director'];
                                }
$directors = explode(", ", $mdirector);
                            foreach ($directors as &$d) {
                                $sd = sanitize($d);
                                $d = "<a href=\"/movies/director/$sd-movies\" id='mov' title='$d movies' itemprop='name'>$d</a>";
                            }

Если в имени директора есть специальные символы, такие как: Per-Olav Sørensen

Функция sanitize меняет все специальныесимвол в норме, поэтому в браузере так:

фильмы / режиссер / per-olav-sorensen-movies

Функция очистки:

    function sanitize($string, $force_lowercase = true, $anal = false) {
    $strip = array("„","”","~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "=", "+", "[", "{", "]",
                   "}", "\\", "|", ";", ":", "\"", ".", "'", "&#8216;", "&#8217;", "&#8220;", "&#8221;", "&#8211;", "&#8212;",
                   "—", "–", ",", "<", ".", ">", "/", "?");
    $clean = trim(str_replace($strip, "", strip_tags($string)));
    $clean = str_replace(array(" - ","À","Á","Â","Ã","Ä","Å","Ǻ","Ā","Ă","Ą","Ǎ","à","á","â","ã","å","ǻ","ā","ă","ą","ǎ","ª","ä","Ç","Ć","Ĉ","Ċ","Č","ç","ć","ĉ","ċ","č","Ð","Ď","Đ","ð","ď","đ","È","É","Ê","Ë","Ē","Ĕ","Ė","Ę","Ě","è","é","ê","ë","ē","ĕ","ė","ę","ě","Ĝ","Ğ","Ġ","Ģ","ĝ","ğ","ġ","ģ","Ĥ","Ħ","ĥ","ħ","Ì","Í","Î","Ï","Ĩ","Ī","Ĭ","Ǐ","Į","İ","ì","í","î","ï","ĩ","ī","ĭ","ǐ","į","ı","Ĵ","ĵ","Ķ","ķ","Ĺ","Ļ","Ľ","Ŀ","Ł","ĺ","ļ","ľ","ŀ","ł","Ñ","Ń","Ņ","Ň","ñ","ń","ņ","ň","ʼn","Ò","Ó","Ô","Õ","Ō","Ŏ","Ǒ","Ő","Ơ","Ø","Ǿ","Ö","ò","ó","ô","õ","ō","ŏ","ǒ","ő","ơ","ø","ǿ","º","ö","Þ","Ŕ","Ŗ","Ř","ŕ","ŗ","ř","Ś","Ŝ","Ş","Š","ś","ŝ","ş","ș","š","ſ","Ţ","Ť","Ŧ","ţ","ť","ŧ","Ù","Ú","Û","Ũ","Ū","Ŭ","Ů","Ű","Ų","Ư","Ǔ","Ǖ","Ǘ","Ǚ","Ǜ","Ü","ù","ú","û","ũ","ū","ŭ","ů","ű","ų","ư","ǔ","ǖ","ǘ","ǚ","ǜ","ü","Ý","Ÿ","Ŷ","ý","ÿ","ŷ","Ŵ","ŵ","Ź","Ż","Ž","ź","ż","ž","Æ","æ","Ǽ","ǽ","ß","IJ","ij","Œ","œ","ƒ",),
                         array("-","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","c","c","c","c","c","c","c","c","c","c","d","d","d","d","d","d","e","e","e","e","e","e","e","e","e","e","e","e","e","e","e","e","e","e","g","g","g","g","g","g","g","g","h","h","h","h","i","i","i","i","i","i","i","i","i","i","i","i","i","i","i","i","i","i","i","i","j","j","k","k","l","l","l","l","l","l","l","l","l","l","n","n","n","n","n","n","n","n","n","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","p","r","r","r","r","r","r","s","s","s","s","s","s","s","s","s","s","t","t","t","t","t","t","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","u","y","y","y","y","y","y","w","w","z","z","z","z","z","z","ae","ae","ae","ae","ss","ij","ij","oe","oe","f"), $clean);
    $clean = preg_replace('/\s+/', "-", $clean);
    $clean = ($anal) ? preg_replace("/[^a-zA-Z0-9]/", "", $clean) : $clean ;
    return ($force_lowercase) ?
        (function_exists('mb_strtolower')) ?
            mb_strtolower($clean, 'UTF-8') :
            strtolower($clean) :
        $clean;
        if(preg_match('/[^\\p{Common}\\p{Latin}]/u', $clean) == 1)
            {$clean = "";}
}

И всвязанную страницу, если я читаю $_GET[director], я получаю "per-olav-sorensen-movies" и не могу использовать ее с базой данных.

Как я могу сохранить исходный текст или декодировать очищенный?

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Чтобы сохранить идентификатор связанного фильма в этом случае, замените его в цикле запросов

$mdirector[$movie["id"]] = $movie['director'];

Тогда вместо взрыва вы зациклите массив mdirector следующим образом

foreach($mdirector as $id=>$d){
        $sd = sanitize($d);
        $d = "<a href=\"/movies/director/$sd-movies/$id\" id='mov' title='$d movies' itemprop='name'>$d</a>";}
0 голосов
/ 19 мая 2018

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

Пример:

Таблица директоров:

id
name
slug // field to save sanitize director name

таблица фильмов:

id
director_id
name

, поэтому вы можете сделать запрос, чтобы выбрать все фильмы, имеющие отношение к x режиссерам.

select movies.*, directors.name from movies inner join directors on directors.id = movies.director_id where directors.slug = '$_GET[director]'
...