Я работаю над небольшим количеством кода для создания некоторых случайных URL-адресов для страниц на моем сайте. Мое намерение состоит в том, чтобы человек перенаправлялся на страницу, которую они только что создали после ее создания, но вместо этого перенаправляется на «switch», php-код, который работает, чтобы определить, какая функция должна срабатывать на основе того, какой радиокнопка нажата. Вот моя страница, которая позволяет им «загружать» на мой сайт:Почему не файл_put_contents создает страницу?
<html>
<head>
<link rel="stylesheet" type="text/css" href="/style.css">
<title>
Learning Made Easy
</title>
</head>
<body>
<?php include_once 'googleanalytics.php'; ?>
<a href="http://terrythetutor.com">
<div class="banner"> </div>
</a>
<?php include 'menu.php'; ?>
<div class="content">
</br>
</br>
</br>
<form action="../scripts/switch.php" method="post">
Title:
</br><input type="text" name="Title">
</br>
</br>
</br>
Summary of the video (including questions used in the video):
</br><textarea name="Summary" COLS=60 ROWS=10></textarea>
</br>
</br>
</br>
URL of the video (Yes, this means you need to upload it to an external website.):
</br><input type="text" name="URL">
</br>
</br>
Which course does your video pertain to?</br>
<input type="radio" name="course" value="intermediate"> Intermediate and below</br>
<input type="radio" name="course" value="college"> College Algebra</br>
<input type="radio" name="course" value="precalculus"> PreCalculus</br>
<input type="radio" name="course" value="trigonometry"> Trigonometry</br>
<input type="radio" name="course" value="calculus I"> Calculus I</br>
<input type="radio" name="course" value="calculus II"> Calculus II</br>
<input type="radio" name="course" value="calculus III"> Calculus III</br>
<input type="radio" name="course" value="differential equations"> Differential Equations</br>
</br>
</br>
<input type="submit" value="Submit, foo!">
</form>
</br>
</br>
</br>
<p>
Please understand that you will not be able to change the title, summary, or URL of your video after submission.
</p>
</div>
<div class="footer">
<?php include 'footer.php'; ?>
</div>
</body>
</html>
Этот бит работает красиво. После этого они перенаправляются на «switch.php». Вы уже знаете, что это делает.
<?php
if (isset($_POST['course']) && $_POST['course'] == 'intermediate') {
include('storeintermediate.php');
} elseif (isset($_POST['course']) && $_POST['course'] == 'college') {
include('step2a.php');
} elseif (isset($_POST['course']) && $_POST['course'] == 'precalculus') {
include('replace.php');
} elseif (isset($_POST['course']) && $_POST['course'] == 'trigonometry') {
include('replace.php');
} elseif (isset($_POST['course']) && $_POST['course'] == 'calculus I') {
include('replace.php');
} elseif (isset($_POST['course']) && $_POST['course'] == 'calculus II') {
include('replace.php');
} elseif (isset($_POST['course']) && $_POST['course'] == 'calculus III') {
include('replace.php');
} elseif (isset($_POST['course']) && $_POST['course'] == 'differential equations') {
include('replace.php');
}
?>
Оттуда мы идем к storeintermediate.php, где у меня есть функциональность захвата всех переменных, хранить их в базе данных, создавая новую случайно сгенерированную страницу с форматом шаблона, и извлечь URL видео, которое они загружают.
<?php
// Create connection
$con = mysqli_connect("*******","******","************","*");
$IP = $_SERVER['REMOTE_ADDR'];
$IP = mysqli_real_escape_string($con, $IP);
$Title = mysqli_real_escape_string($con, $_POST[Title]);
$Summary = mysqli_real_escape_string($con, $_POST[Summary]);
$URL = mysqli_real_escape_string($con, $_POST[URL]);
$number = mt_rand(100,99999999); // see $new_url
$nospace = str_replace(' ', '_', $Title); // to enable URL friendly titles
$new_url = $number . $nospace ; // to ensure that each URL is unique
$data = include('../template.php');
$embed_URL = substr($URL, -11);
file_put_contents("../videos/" . $new_url, $data, FILE_APPEND) ;
// Check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO `Intermediate Algebra` (Title, URL, IP, Summary)
VALUES
('$Title','$URL','$IP','$Summary')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
header('Location: http://terrythetutor.com/'.$new_url);
?>
Теперь мои вопросы: при отправке тестовой страницы создается страница. Но размер 1 байт, и единственное, что в файле - «1». Я не могу понять, почему.
Во-вторых, страница, на которую перенаправляется (что также по какой-либо причине содержит переданный контент) IS switch.php, но это действительно должна быть страница создана.
В-третьих (и, вероятно, связано со вторым), я продолжаю иметь ошибку с моим заголовком, когда пытаюсь перенаправить на вновь созданную страницу.
Любая помощь была бы принята с благодарностью. Спасибо вам большое,
Terry.
Вместо создания нового файла каждый раз используйте фреймворк (который будет обрабатывать маршрутизацию и разные URL-адреса страниц без создания дополнительных файлов) или используйте базовый 'page.php', который отобразит содержимое на основе параметра URL (так что ваш URL будет выглядеть как 'page.php? page = some_page_id'). –
Собирался написать именно то, что сказал Андре. Вы не создаете страницы таким образом, вы храните данные в базе данных и загружаете данные, соответствующие целевому URL (с использованием шаблона). Кроме того, в коде, который вы опубликовали, довольно много ошибок (например, URL-адрес, фрагмент, смешение), поэтому я серьезно рекомендую вам изучить одну из существующих фреймворков (например, [Symfony 2] (http: // symfony .com /)). – nietonfir
@nietonfir Что не так с кодом? Что такое дружественный URL-адрес и «смешение проблем»? – user2666324