Файл index.php
<?php
include_once("bd.php");
$resultat = mysql_query("SELECT * FROM users WHERE id='$_GET[id]'");
$array = mysql_fetch_array($resultat);
?>
Для каждого пользователя в конце свой id ( example.com?id=1 )
<div id="button"></div>
</div>
<script src="js/button.js"></script>
Файл time.php
Подключение к базе данных, где идет выбор данных по id и соответствующие данные вставляются в кнопку
<?php
include_once("bd.php");
$resultat = mysql_query("SELECT * FROM users WHERE id='$_GET[id]'");
$array = mysql_fetch_array($resultat);
?>
Функция вставки самой кнопки
<?php
do{
echo "<a style='display:".$array['active1']."; ' class='button'
href='".$array['url1']."' target='_blank'>".$array['url_name1']."</a>";
}
while($array = mysql_fetch_array($result));
?>
Файл JS
Получаю параметр страницы из самой ссылки ( example.com?id=... )
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
var id_user = getUrlVars()["id"];
function show(){
$.ajax({
url: "time.php",
data: 'id=id_user',
cache: false,
success: function(html){
$("#button").html(html);
}
});
}
$(document).ready(function(){
show();
setInterval('show()',1000);
});
Файл time.php тоже идет для каждого пользователя свой ( time.php?id=... ), как сделать запрос, что при входе на страницу( index.php?id=15 ) посылался запрос на файл time.php с такими же параметрами ( time.php?id=15 ).
Сейчас запрос посылается коряво ( time.php?id=id_user&_=1488322194611 ) , а должен посылаться вот так ( time.php?id= число равное id файла index ) за 3 дня обрыл весь гугл и ничего не смог найти похожего. Помогите пожалуйста, буду очень благодарен!
Во-первых, прочтите следующий комментарий: http://ru.stackoverflow.com/a/633878/238901. Он во многом актуален и для вашего примера: встраивание необработанных пользовательских данных в текст запроса (огромная дыра в безопасности) и использование устаревшего провайдера данных (mysql_* вместо mysqli_* или pdo_*).
Во-вторых, чтобы передать данные в запросе, используйте следующий синтаксис:
$.ajax({
url: "time.php",
data: {
id: id_user,
name: name_user // Просто в качестве примера
},
cache: false,
success: function(html){
$("#button").html(html);
}
});
В-третьих, я порекомендовал бы переписать SQL-запрос следующим образом:
SELECT
active1,
url1,
url_name1
/* Добавьте другие поля, если необходимо*/
FROM users
WHERE id=?
LIMIT 1;
Речь, разумеется, не о разбиении на строчки, а о том, чтобы не использовать *, а всегда указывать все необходимые поля явным образом. Кроме того, ограничение LIMIT 1
даст вам гарантию, что запрос всегда вернет не больше одной записи, даже если с условием что-то не так (в вашем изначальном примере, если в GET придет '0 OR TRUE', из базы будет выгружена вся таблица целиком).
Наконец, в-четвертых, выполнение запроса лучше начинать с prepare:
if ($stmt = mysqli_prepare($link, $query)) {
/* связываем параметры с метками */
mysqli_stmt_bind_param($stmt, "s", $user_id);
/* запускаем запрос */
mysqli_stmt_execute($stmt);
/* связываем переменные с результатами запроса */
mysqli_stmt_bind_result($stmt, $active1, $url1, $url_name1);
/* получаем значения */
mysqli_stmt_fetch($stmt);
/* закрываем запрос */
mysqli_stmt_close($stmt);
}
Это преследует две цели: защита от SQL-инъекций и более эффективное выполнение запросов за счет возможности кеширования планов выполнения на стороне СУБД.
Спасибо, Igor.
Решил вопрос таким методом
data: 'id='+id_user,
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Если в функцию, принимающую int&, передать *p, где p - указатель на int, то функция будет работать с исходными данными, находящимися по этому адресу,...
Какая константа в STD определяет максимальное значение для типа std::uint64_t и для других подобных типов? Или использовать хедер <climits> ?
Есть код, который выявляет, является ли фраза или слово палиндромом, есть такой код
Помогите ,пожалуйста, реализовать близкую реализацию функции at()У меня существует класс для хранения массива типа char и мне нужно реализовать...