Я написал этот сценарий «Вы здесь» для веб-сайта, и он работает, однако вывод для категории «История» имеет дополнительный трейлер, и я хотел бы знать, почему и удалите •
<?php
if (isset($_GET['pagina']) && isset($_GET['storycategory'])) {
$pagina = $_GET['pagina'];
$storycategory = $_GET['storycategory'];
$storypage = $storycategory;
$storypage = str_replace(stories, story, $storypage);
$storypagename = $_GET[$storypage];
$content_path = 'You are here: Home • ' . $pagina . ' • ' . $storycategory . ' • ' . $storypagename;
$content_path = str_replace("-", " ", $content_path);
echo '<strong>' . $content_path . '</strong><hr />'; // Voor een bezoeker die in een bepaald verhaal bezoekt - Output: You are here: Home • all stories • story category Name • Best story ever
}
elseif (isset($_GET['pagina']) && isset($_GET['storycategory'])) { // this is the part that has a trailing • that I'd like to remove and find out why it was created by my script
$pagina = $_GET['pagina'];
$storycategory = $_GET['storycategory'];
$content_path = 'You are here: Home • ' . $pagina . ' • ' . $storycategory; // Note: I did NOT add a • here but it is generated in output...
$content_path = str_replace("-", " ", $content_path);
echo '<strong>' . $content_path . '</strong><hr />'; // Voor een bezoeker die in een bepaalde alles uit deze story category pagina is! Output: You are here: Home You are here: Home • all stories • story category Name •
}
elseif (isset($_GET['pagina'])) {
$pagina = $_GET['pagina'];
$content_path = 'You are here: Home • ' . $pagina;
$content_path = str_replace("-", " ", $content_path);
echo '<strong>' . $content_path . '</strong><hr />'; // Voor een bezoeker die op de alle sex stories pagina is! Output: Home • all stories
}
else {
// Als iemand verdwaald is en daardoor bovenstaande totaal niet van toepassing is...
echo '<strong>Thank you for visiting our site!</strong><hr />';
}
?>
С Pagina все в порядке, не бычий след, но когда я захожу в какую-либо категорию, появляется • то, что я не люблю отображать (см. Вывод комментариев и примечание в коде), но когда я посещаю любую страницу истории в любой категории, есть нет • в конце …
Как я должен удалить быка и почему он был создан?
Спасибо за чтение!
РЕДАКТИРОВАТЬ
Я хотел бы объяснить используемые переменные в моем коде, я надеюсь, что это поможет понять этот вопрос.
У меня есть несколько URL-адресов, и я хотел бы рассказать посетителям, где они находятся:
Страница для истории: www.example.com/index.php?pagina=all-stories&storycategory = в-передовые истории&-лучший рассказ = мой-первых, компьютер
Страница для всех историй внутри «лучших историй»: www.example.com/index.php?pagina=all-stories&storycategory = в-передовые истории
Страница для всех категорий историй: www.example.com/index.php?pagina=all-stories
У меня есть папка с именем pagina, в этой папке вы найдете папку под названием storycategory, в папке storycategory вы найдете огромное количество папок, и у всех из них есть истории в качестве последней части их имен и множество файлов php, которые имеют История в конце там, мама (те же имена, но сменили истории на историю для файлов php в storycategory) в папках внутри папки storycategory хранятся мои истории …
Часть 1, чтобы повторить «Вы здесь: Домой • все истории • лучшая история • мой первый компьютер» это работает просто отлично
if (isset($_GET['pagina']) && isset($_GET['storycategory']) && isset($_GET['storycategory'])) {
$pagina = $_GET['pagina'];
$storycategory = $_GET['storycategory'];
$storypage = $storycategory;
$storypage = str_replace(stories, story, $storypage);
$storypagename = $_GET[$storypage];
$content_path = 'You are here: Home • ' . $pagina . ' • ' . $storycategory . ' • ' . $storypagename;
$content_path = str_replace("-", " ", $content_path);
echo '<strong>' . $content_path . '</strong><hr />'; // Voor een bezoeker die in een bepaald verhaal bezoekt - Output: You are here: Home • all stories • story category Name • Best story ever
}
Часть 2, где все идет не так с нежелательным
elseif (isset($_GET['pagina']) && isset($_GET['storycategory'])) { // this is the part that has a trailing • that I'd like to remove and find out why it was created by my script
$pagina = $_GET['pagina'];
$storycategory = $_GET['storycategory'];
$content_path = 'You are here: Home • ' . $pagina . ' • ' . $storycategory; // Note: I did NOT add a • here but it is generated in output...
$content_path = str_replace("-", " ", $content_path);
echo '<strong>' . $content_path . '</strong><hr />'; // Voor een bezoeker die in een bepaalde alles uit deze story category pagina is! Output: You are here: Home You are here: Home • all stories • story category Name •
}
Часть 3 это тоже нормально, без проблем
elseif (isset($_GET['pagina'])) {
$pagina = $_GET['pagina'];
$content_path = 'You are here: Home • ' . $pagina;
$content_path = str_replace("-", " ", $content_path);
echo '<strong>' . $content_path . '</strong><hr />'; // Voor een bezoeker die op de alle sex stories pagina is! Output: Home • all stories
}
Часть 4 моего кода — это то, для чего не была установлена переменная, связанная с историей, или неизвестная ошибка
else {
// Als iemand verdwaald is en daardoor bovenstaande totaal niet van toepassing is...
echo '<strong>Thank you for visiting our site!</strong><hr />';
}
Что не так с частью 2 или почему я получаю быка в конце?
РЕДАКТИРОВАТЬ 2
отредактированная строка 2
Заменены
if (isset ($ _ GET [‘pagina’]) && Исеть ($ _ GET [ ‘storycategory’]) && isset ($ _ GET [‘storycategory’])) {
с
if (isset ($ _ GET [‘pagina’]) && isset ($ _ GET [‘storycategory’])) {
Проблема с • в конце все еще существует на страницах категорий рассказов, $storypage
используется для создания $storypagename
от storycategory
использование str_replace и Home жестко закодировано.
РЕДАКТИРОВАТЬ 3 (Раскрыты)
isset($_GET[$storypagename]))
(Строка 2) и $storypagename = $_GET[$storypagename];
Решил проблему в глобальном файле srories, но любая переменная должна быть определена перед запросом, как я уже говорил в комментариях, поэтому мне пришлось искать способ определить $storypagename
до Строка 2. Я определил его во всех файлах метатегов для каждой отдельной страницы, и это работает отлично.
НОТА: Последние 2 жирные части являются динамический, поэтому последняя переменная url изменится, если посетитель находится в какой-либо другой категории.
Страница истории: www.example.com/index.php?pagina=all-stories&storycategory = в-передовые истории&заместитель лучший рассказзнак равномой первый компьютер,
Страница для рассказов в этой категории: www.example.com/index.php?pagina=all-stories&storycategory = в-передовые истории
Страница для всех категорий историй: www.example.com/index.php?pagina=all-stories
Сначала я попытался использовать str_replace (), используя значение storycategory, но раньше я не смог определить его, поэтому он никогда не работал, я считаю, что небольшая дополнительная строка в файле метатега $storypagename = 'the-best-story';
лучшее доступное решение
Мой сайт имеет тысячи страниц, поэтому array()
не было никакой опции, каждая страница имеет файл php метатега и загружается перед этим скриптом, там я определил $storypagename
переменная, чтобы убедиться, что она будет определена до того, как будет запрошена. это решение сделало PHP-код меньше.
Я хотел бы сказать спасибо обоим mudasobwa А ТАКЖЕ Константин, оба ответа были полезны, чтобы найти этот метод, чтобы решить эту ошибку.
Все 3 части работают нормально, спасибо еще раз!
Окончательный рабочий код
<?php
if (isset($_GET['pagina']) && isset($_GET['storycategory']) && isset($_GET[$storypagename])) {
$pagina = $_GET['pagina'];
$storycategory = $_GET['storycategory'];
$storypagename = $_GET[$storypagename];
$content_path = 'You are here: Home • ' . $pagina . ' • ' . $storycategory . ' • ' . $storypagename;
$content_path = str_replace("-", " ", $content_path);
echo '<strong>' . $content_path . '</strong><hr />'; // Voor een bezoeker die in een bepaald verhaal bezoekt - Output: You are here: Home • all stories • story category Name • Best story ever
}
elseif (isset($_GET['pagina']) && isset($_GET['storycategory'])) { // this is the part that has a trailing • that I'd like to remove and find out why it was created by my script
$pagina = $_GET['pagina'];
$storycategory = $_GET['storycategory'];
$content_path = 'You are here: Home • ' . $pagina . ' • ' . $storycategory; // Note: I did NOT add a • here but it is generated in output...
$content_path = str_replace("-", " ", $content_path);
echo '<strong>' . $content_path . '</strong><hr />'; // Voor een bezoeker die in een bepaalde alles uit deze story category pagina is! Output: You are here: Home You are here: Home • all stories • story category Name •
}
elseif (isset($_GET['pagina'])) {
$pagina = $_GET['pagina'];
$content_path = 'You are here: Home • ' . $pagina;
$content_path = str_replace("-", " ", $content_path);
echo '<strong>' . $content_path . '</strong><hr />'; // Voor een bezoeker die op de alle sex stories pagina is! Output: Home • all stories
}
else {
// Als iemand verdwaald is en daardoor bovenstaande totaal niet van toepassing is...
echo '<strong>Thank you for visiting our site!</strong><hr />';
}
?>
Вы скопировали самый первый if
ошибочно
if (
isset($_GET['pagina']) &&
isset($_GET['storycategory']) &&
isset($_GET['storycategory'])) { // ERROR, should be $_GET['storypagename']
и вы вводите это с пустым $storypagename
,
Будь то $storypagename
рассчитывается, его следует рассчитать и проверить здесь, потому что это условие, вероятно, всегда true
и вы никогда не входите else if
разделы.
Как сказал мудасобва: из-за ошибки в вашем первом условии (в строке 2)
if (isset($_GET['pagina']) && isset($_GET['storycategory']) && isset($_GET['storycategory'])) {
ты никогда не входишь первым elseif
блок (в строке 12)
строка, которая выполняется, является строкой 8:
$content_path = 'You are here: Home • ' . $pagina . ' • ' . $storycategory . ' • ' . $storypagename;
но $storypagename
пустой. так что в итоге вы получите пулю в конце