поиск и редактирование с помощью php [duplicate]

Правила разрешения имен говорят, что поиск имени останавливается в первой области, в которой найдено совпадающее имя. В этот момент правила разрешения перегрузки срабатывают, чтобы найти наилучшее соответствие доступных функций.

В этом случае gogo (int *) находится (в одиночку) в Derived класс, и поскольку стандартное преобразование из int в int * не выполняется, поиск не выполняется.

Решение состоит в том, чтобы принести объявления Base с помощью объявления using в классе Derived:

  с использованием Base :: gogo;   

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

5
задан Bogdan 1 November 2011 в 12:05
поделиться

7 ответов

Сохраните переменные в сеансе PHP.

session_start();
$_SESSION['images'] = $images;

Затем на следующей (или любой другой) странице вы можете получить значения как:

session_start();
$images = $_SESSION['images'];
15
ответ дан Vikk 15 August 2018 в 14:21
поделиться
  • 1
    применимо ли это, если я извлекаю значения на одной странице в секции //print the arrays моего кода? – Bogdan 1 November 2011 в 12:38
  • 2
    Да. После того, как вы установите переменные в сеансе, вы можете получить к нему доступ на той же странице – Vikk 1 November 2011 в 12:46
  • 3
    в моем случае это не сработало. Я добавил session_start();$_SESSION['images'] = $images; после шага: //save the arrays with the form data И затем я добавил session_start();$images = $_SESSION['images']; до //create the form and populate it – Bogdan 1 November 2011 в 16:12
  • 4
    Что не сработало? Сессия должна работать нормально. Проверьте свои значения. Например, запустите этот код: $name = "Vikk"; session_start(); $_SESSION['name'] = $name; echo $_SESSION['name']; Он напечатает Vikk – Vikk 1 November 2011 в 16:42
  • 5
    когда я сказал, что это не сработало, я имел в виду, что после того, как я закончил свою форму, и я нажал кнопку «Сохранить», я скопировал и вставлял url в свой php-файл в браузере, а значения переменных были пустыми. PS = может $_SESSION['name'] хранить массив? и если да, то какой синтаксис? это как $_SESSION['name'][0] и т. д.? – Bogdan 1 November 2011 в 22:36

Изменение области видимости переменных в большей области, может сделать трюк. Кроме того, проверьте, есть ли у вас запрос на отправку перед обновлением значений.

<?php
    if(sizeof($_POST) >0)
    {
      //UPDATE VALUES
    }
?>
2
ответ дан abhinav 15 August 2018 в 14:21
поделиться

Решение, которое вы ищете, - это сеанс. Используйте $_SESSION для хранения значений ваших переменных. Например, в конце скрипта:

$_SESSION['images'] = $images;

и на входе формы:

<input name='i".$x."' type='text' value='".(isset($_SESSION['images']) ? 
$_SESSION['images'] : '')."'>
0
ответ дан AvrilAlejandro 15 August 2018 в 14:21
поделиться

Если вы хотите сохранить постоянное хранилище, между различными страницами , вы должны использовать сеансы, поставив session_start(); в начало вашего скрипта. После этого каждая переменная $ _SESSION [$ x] будет сохранена и будет доступна для ваших скриптов.

Однако в этом конкретном случае, отвечая на ваш вопрос: «Есть ли способ сохранить значения из массива, чтобы форма всегда была заполнена последними сохраненными значениями? », проще просто использовать переменную $ _POST, если она уже существует:

<?php
if(!$_POST){
    $_POST = array();
    foreach(array("i0","i1","i2","i3") as $i) $_POST[$i]="";
    foreach(array("u0","u1","u2","u3") as $i) $_POST[$i]="";
    foreach(array("t0","t1","t2","t3") as $i) $_POST[$i]="";
}
foreach($_POST as $k=>$v)  filter_input(INPUT_POST,$k,FILTER_SANITIZE_SPECIAL_CHARS);

//save the arrays with the form data
$images = array($_POST["i0"], $_POST["i1"], $_POST["i2"], $_POST["i3"]);
$urls   = array($_POST["u0"], $_POST["u1"], $_POST["u2"], $_POST["u3"]);
$titles = array($_POST["t0"], $_POST["t1"], $_POST["t2"], $_POST["t3"]);


//print the arrays
print_r($images);
print_r($urls);
print_r($titles);
//create the form and populate it
echo "<p><form method='post' action='".$_SERVER['PHP_SELF']."';";
$x = 0;
while ($x <= 3) {
   echo"<div>
            <input name='i".$x."' type='text' value='".$images[$x]."'>
            <input name='u".$x."' type='text' value='".$urls[$x]."'>
            <input name='t".$x."' type='text' value='".$titles[$x]."'>";
       $x++;
}
?>
<br>
<input type="submit" name="sumbit" value="Save"><br>
</form>

Примечание: эта строка foreach($_POST as $k=>$v) filter_input(INPUT_POST,$k,FILTER_SANITIZE_SPECIAL_CHARS); должно быть достаточно, чтобы защитить вас от основных атак XSS. Обратите также внимание на то, что в целом лучше следовать шаблону перезагрузки страниц с помощью GET после POST , что делает вас менее восприимчивыми к формированию повторных представлений, и в этом случае использование сессий для хранения является лучшим решением.

2
ответ дан Dangelov 15 August 2018 в 14:21
поделиться
  • 1
    код, который вы опубликовали, не работает: он возвращает пустую страницу ... – Bogdan 1 November 2011 в 16:05
  • 2
    для ввода фильтра требуется, чтобы версия интерпретатора PHP была & gt; = 5.2.0 (см. php.net/manual/en/function.filter-input.php ). Вы можете безопасно удалить строку, которая содержит его, если вы используете другие способы для дезинфекции ваших входов. – Dangelov 2 November 2011 в 17:58

Что привело меня сюда, было несколько другое зверь. У меня возникла проблема с последующим отправкой запроса с IP-камеры AXIS и необходимость сохранения последнего имени файла в запросах. В случае, если кто-то споткнется здесь и ищет способ кэшировать переменные, а SESSION - это не вариант, возможно, стоит посмотреть на альтернативный кэш PHP:

Примечание: в отличие от многих других механизмов в PHP переменные, хранящиеся с помощью apc_store () будет сохраняться между запросами (пока значение не будет удалено из кеша).

http://php.net/manual/en/book.apc.php

1
ответ дан Gawran 15 August 2018 в 14:21
поделиться

Использовать сеансы: http://php.net/manual/en/function.session-start.php

0
ответ дан Mārtiņš Briedis 15 August 2018 в 14:21
поделиться

Вы можете использовать сеансы для хранения значений и писать правила, чтобы пополнить поля формы после проверки на отправке данных. Также функция isset () очень полезна, чтобы избежать «неопределенных» ошибок.

0
ответ дан xeranas 15 August 2018 в 14:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: