Как навсегда добавить пользовательский ввод в переменную в PHP из таблицы SQL

Любая помощь будет принята с благодарностью. Я пытаюсь, чтобы пользователи добавляли песни в плейлист проигрывателя SCM, который есть у меня на форуме. Так что это поток управления у меня сейчас. Первая часть — получение пользовательского ввода.

<form action="/phpbbauto/scmplayersend.php" method="post">
<?php
echo '<input class="searchbox" type="text" name="liensc" placeholder="Add to Playlist..." /><input class="searchbutton" type="submit" value="&#xf067" onclick=$onc title="Search" />';
?>
</form>

Это работает отлично. Теперь вот php-файл, в который отправляются данные.

<?php

define('DB_NAME', 'xxxxxxxxxx');
define('DB_USER', 'xxxxxxxxxx');
define('DB_PASSWORD', 'xxxxxxxxxx');
define('DB_HOST', 'xxxxxxxxxx');

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if(!$link){
die('Could not connect: ' . mysql_error());
}

$db_selected = mysql_select_db(DB_NAME, $link);

if(!db_selected){
die('Can\'t find ' . DB_NAME . ': ' . mysql_error());
}

//Connection Established//Data Hander Below This Line//

$valone = $_POST['liensc']; //Data from form stored//

$sql = "INSERT INTO demo (liensc) VALUES ('$valone')";

if(!mysql_query($sql)){
die('Error: '. mysql_error());
}

mysql_close();

?>

Это тоже хорошо работает. Теперь вот две проблемы, которые у меня есть.

<!-- Song Player http://playlist.me -->
<script type="text/javascript" src="http://playlist.me/w/script.js"data-config="{
'skin':'skins/black/skin.css',
'volume':10,
'autoplay':true,
'shuffle':true,
'repeat':1,
'placement':'top',
'showplaylist':false,
'playlist':[
<?php
define('DB_NAME', 'xxxxxxxx');
define('DB_USER', 'xxxxxxxxx');
define('DB_PASSWORD', 'xxxxxxxxxx');
define('DB_HOST', 'xxxxxxxxx');

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if(!$link){
die('Could not connect: ' . mysql_error());
}

$db_selected = mysql_select_db(DB_NAME, $link);

if(!db_selected){
die('Can\'t find ' . DB_NAME . ': ' . mysql_error());
}

$appe = "SELECT liensc FROM demo";
$tshell = ",{'title':'$appe','url':'$appe'}";
$stringco = "{'title':'Eddy Christiani and Frans Poptie - Rythm For You','url':'https://www.youtube.com/watch?v=E3sOnASmR24'},";

echo $stringco . $tshell;

$sql = "DELETE FROM demo WHERE ID=1";

if(!mysql_query($sql)){
die('Error: '. mysql_error());
}

mysql_close();?>
]}" >
</script>
<noscript><a href="http://playlist.me/songs/">player playlist</a></noscript>
<!-- playlist.me script end -->

Первая проблема: да, это на самом деле добавляет. Проблема в том, что значение не добавляется в столбец, а только команда SQL. Как я могу это исправить?

Вторая проблема: он добавляется, но я не уверен, что он будет постоянным при добавлении следующего значения.

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

Спасибо.

0

Решение

Вот некоторые вещи, которые я заметил в вашем коде:

  • Самое главное здесь — это использовать PDO и его API, так как это поможет вам предотвратить Атаки SQL-инъекций на Вашем сайте.

  • Как отмечает @Havenard в комментариях, вы печатаете свой SQL-запрос, а не выполняете и получаете результаты.

  • Похоже, что ваш плагин playlist.me ожидает название и URL-адрес песни, но ваша форма запрашивает только один из них.

  • Чтобы получить правильный вывод для вашего плагина, вам нужно получить строки из базы данных и распечатать их с json_encode(), который будет выводить что-то вроде:

[{'title':'whatever song','url':'http://theaddress'},{'title':...

Я переписал ваш код с учетом этих предложений:

добавить форму песни

<form action="scmplayersend.php" method="post">
<input class="searchbox" type="text" name="title" placeholder="Title of song" />
<input class="searchbox" type="text" name="url" placeholder="Url" />
<input class="searchbutton" type="submit" value="&#xf067" title="Search" />
</form>

scmplayersend.php

<?php
if (count($_POST)>0) {
$server = "myServer"; $database = "DbName"; $username = "myself"; $password = "secret";
$conn = new PDO("mysql:host=$server;dbname=$database", $username, $password);

$title = $_POST['title'];
$url = $_POST['url'];

$sql = "INSERT INTO demo (title, url) VALUES (:title, :url)";
$statement = $conn->prepare($sql);
$statement->bindValue(":title", $title, PDO::PARAM_STR);
$statement->bindValue(":url", $url, PDO::PARAM_STR);
$success = $statement->execute();

if (!$success) {
exit("<pre>\nPDO error: " . $statement->errorInfo()[2] . "</pre>");
}

exit('Song added successfully. <a href="' . $_SERVER["SCRIPT_NAME"] . '">Go back</a>');
}
?>

player.php

<!-- Song Player http://playlist.me -->
<script type="text/javascript" src="http://playlist.me/w/script.js"data-config='{
"skin":"skins/black/skin.css",
"volume":10,
"autoplay":true,
"shuffle":true,
"repeat":1,
"placement":"top",
"showplaylist":false,
"playlist":<?php

$server = "myServer"; $database = "DbName"; $username = "myself"; $password = "secret";
$conn = new PDO("mysql:host=$server;dbname=$database", $username, $password);

$sql = "SELECT title, url FROM demo";
$statement = $conn->prepare($sql);
$statement->execute();

$result = $statement->fetchAll(PDO::FETCH_ASSOC);

echo json_encode($result);
?>'>
</script>
<noscript><a href="http://playlist.me/songs/">player playlist</a></noscript>
<!-- playlist.me script end -->
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector