Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Mikhail Shell
51 / 51 / 39
Регистрация: 15.11.2014
Сообщений: 626
1

Сессии

02.07.2015, 22:38. Просмотров 315. Ответов 3
Метки нет (Все метки)

Например есть форма, после отправки которой производится проверка на пустоту переменных. Вылазит сообщение о пустоте и ссылка назад чтобы исправить положение. Но из остальных инпутов, которые заполнены значения стираются. Начал решать эту проблему с помощью сессий. Нашел код, но как то в моем коде он не прижился. Что не так? Куда поставить этот кусок
PHP
1
2
3
4
5
session_start();
  $_SESSION["name"] = $_POST["name"];
  $_SESSION["family"] = $_POST["family"];
  header("Location: ".$_SERVER["HTTP_REFERER"]);
  exit;
вот сюда
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<div id="content">
    <h1>обратная связь</h1>
    <?php
        if($_SERVER['REQUEST_METHOD'] == 'POST'){
            date_default_timezone_set('Asia/Almaty');
                    
            $months = array(
                'January' => 'января',
                'February' => 'февраля',
                'March' => 'марта',
                'April' => 'апреля',
                'May' => 'мая',
                'June' => 'июня',
                'July' => 'июля',
                'August' => 'августа',
                'September' => 'сентября',
                'October' => 'октября',
                'November' => 'ноября',
                'December' => 'декабря'
            );
                        
            $datetime = date('j ') . $months[date('F')] . date(' Y ') . 'года' . date(' H:i:s ');
                    
            $number = 3;
                        
            $name = $_POST['name'];
            $name = str_replace(' ', '', $name);    
            $name = mb_convert_case($name, MB_CASE_TITLE,'UTF-8');
            $name = trim($name);
 
            $family = $_POST['family'];
            $family = str_replace(' ', '', $family);
            $family = mb_convert_case($family, MB_CASE_TITLE,'UTF-8');
            $family = trim($family);
                        
            $text = $_POST['text'];
            $text = preg_replace("/(style=\".+?\"|onclick=\".+?\")/","",$text); 
            $text = trim($text);
                    
            if (isset($_POST['name']) and isset($_POST['family']) and isset($_POST['text'])){
                        
                if($name == '' or $family == '' or $text == ''){
                    echo '<p><span style="color:red;">Не все поля заполнены!</span><br />Вернитесь и заполните все поля <a href="javascript:history.go(-1)">здесь</a>.</p>';
                    echo '</div>';
                    include ('blocks/footer.php');
                    echo '  </div>';
                    exit();
                }
                            
                $arInvalidChar  = array("/", "|", ",", ".", ")", "(", "_", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "<", ">", "[", "]", "}", "{", "+", "=", "%", "$", "!", "@", "#", "^", "*", "'", '"', ":", ";", "?", "`", "~"); 
                 
                function strposa($haystack, $needles = array(), $offset = 0) {
                    $chr = array();
                    foreach($needles as $needle) {
                    $res = strpos($haystack, $needle, $offset);
                    if ($res !== false) $chr[$needle] = $res;
                }
                if(empty($chr)) return false;
                    return min($chr);
                }
                            
                if (strposa($name, $arInvalidChar) or strposa($family, $arInvalidChar)) {
                    echo '<p><span style="color:red;">В поле ввода имени или фамилии указаны недопустимые символы.</span><br /> Вернитесь и уберите: "/", "|", ",", ".", ")", "(", "_", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "<", ">", "[", "]", "}", "{" и подобные символы <a href="javascript:history.go(-1)">здесь</a>.</p>';
                    echo '</div>';
                    include ('blocks/footer.php');
                    echo '  </div>';
                    exit();
                }
                            
                if (mb_strlen($text, "utf-8") < $number){
                    echo '<p><span style="color:red;">Слишком мало символов в поле ввода!</span><br /> Вернитесь назад и наберите большее количество символов <a href="javascript:history.go(-1)">здесь</a>.</p>';
                    echo '</div>';
                    include ('blocks/footer.php');
                    echo '  </div>';
                    exit();
                }
                            
                $new_data = strip_tags($_POST['text'], '');
                if(mb_strlen($_POST['text']) !== strlen($new_data)){
                    echo '<p><span style="color:red;">Не используйте html!</span><br />Вернитесь и исправьте свою ошибку <a href="javascript:history.go(-1)">здесь</a>.</p>';
                    echo '</div>';
                    include ('blocks/footer.php');
                    echo '  </div>';
                    exit();
                }
                            
                else{
                    file_put_contents('blocks/content/comment.php', '<div class="comments">
    <div>
        '. $datetime .'<br />от: ' . $name . ' ' . $family . '
    </div>
    <div>
        '. nl2br($text) .'
    </div>
</div>
'.file_get_contents('blocks/content/comment.php'));
                //file_put_contents("comment.php", "<div class='comments'>" . $datetime . "<br>от:<span> </span>" . $name . "<span> </span>" . $family . "<br><br>" . $text . "</div>\n".file_get_contents("comment.php"));
                echo '<p>Ваше сообщение отправлено!</p>';
                echo '</div>';
                include ('blocks/footer.php');
                echo '  </div>';
                echo '<script>alert("Ваше сообщение отправлено!");</script><meta http-equiv="refresh" content="0; url=comments.php">';
                exit();
                }
            }
            exit();
            }
        ?>
        <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
        <p>ваше имя:</p>
        <input type="text" class="input"  name="name" placeholder="введите ваше имя" value="<?=$_SESSION['name']?>" autocomplete="off" />
        
        <p>ваша фамилия:</p>
        <input type="text" class="input" name="family" placeholder="введите вашу фамилию" value="<?=$_SESSION['family']?>" autocomplete="off" />
                        
        <p>текст сообщения:</p>
        <textarea name="text" placeholder="введите ваш отзыв о сайте " id="textarea"></textarea>
        <br /><input type="submit" value="отправить" id="sub" />
    </form>
</div>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2015, 22:38
Ответы с готовыми решениями:

Сессии
При session_start() выводит предупреждение... Что не так делаю? session_start() стоит в...

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

Сессии
1.php &lt;?php session_start(); session_register(&quot;sess_var&quot;); $sess_var = &quot;Hello world!&quot;; ...

Сессии
Нужно использовать сессии в упрощённом смысле примерно так: &lt;?php session_start(); if...

Сессии
Скажите , можно ли как нибуть со стороны пользователя сэмитировать сессии? Для чего я это...

3
Seovin
79 / 79 / 36
Регистрация: 28.02.2014
Сообщений: 400
03.07.2015, 00:19 2
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?
session_start();
?>
<div id="content">
    <h1>обратная связь</h1>
    <?php
        if($_SERVER['REQUEST_METHOD'] == 'POST'){
            date_default_timezone_set('Asia/Almaty');
              $_SESSION["name"] = $_POST["name"];
              $_SESSION["family"] = $_POST["family"];       
            $months = array(
                'January' => 'января',
                'February' => 'февраля',
                'March' => 'марта',
                'April' => 'апреля',
                'May' => 'мая',
                'June' => 'июня',
                'July' => 'июля',
                'August' => 'августа',
                'September' => 'сентября',
                'October' => 'октября',
                'November' => 'ноября',
                'December' => 'декабря'
            );
                        
            $datetime = date('j ') . $months[date('F')] . date(' Y ') . 'года' . date(' H:i:s ');
                    
            $number = 3;
                        
            $name = $_POST['name'];
            $name = str_replace(' ', '', $name);    
            $name = mb_convert_case($name, MB_CASE_TITLE,'UTF-8');
            $name = trim($name);
 
            $family = $_POST['family'];
            $family = str_replace(' ', '', $family);
            $family = mb_convert_case($family, MB_CASE_TITLE,'UTF-8');
            $family = trim($family);
                        
            $text = $_POST['text'];
            $text = preg_replace("/(style=\".+?\"|onclick=\".+?\")/","",$text); 
            $text = trim($text);
                    
            if (isset($_POST['name']) and isset($_POST['family']) and isset($_POST['text'])){
                        
                if($name == '' or $family == '' or $text == ''){
                    echo '<p><span style="color:red;">Не все поля заполнены!</span><br />Вернитесь и заполните все поля <a href="javascript:history.go(-1)">здесь</a>.</p>';
                    echo '</div>';
                    include ('blocks/footer.php');
                    echo '  </div>';
                    exit();
                }
                            
                $arInvalidChar  = array("/", "|", ",", ".", ")", "(", "_", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "<", ">", "[", "]", "}", "{", "+", "=", "%", "$", "!", "@", "#", "^", "*", "'", '"', ":", ";", "?", "`", "~"); 
                 
                function strposa($haystack, $needles = array(), $offset = 0) {
                    $chr = array();
                    foreach($needles as $needle) {
                    $res = strpos($haystack, $needle, $offset);
                    if ($res !== false) $chr[$needle] = $res;
                }
                if(empty($chr)) return false;
                    return min($chr);
                }
                            
                if (strposa($name, $arInvalidChar) or strposa($family, $arInvalidChar)) {
                    echo '<p><span style="color:red;">В поле ввода имени или фамилии указаны недопустимые символы.</span><br /> Вернитесь и уберите: "/", "|", ",", ".", ")", "(", "_", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "<", ">", "[", "]", "}", "{" и подобные символы <a href="javascript:history.go(-1)">здесь</a>.</p>';
                    echo '</div>';
                    include ('blocks/footer.php');
                    echo '  </div>';
                    exit();
                }
                            
                if (mb_strlen($text, "utf-8") < $number){
                    echo '<p><span style="color:red;">Слишком мало символов в поле ввода!</span><br /> Вернитесь назад и наберите большее количество символов <a href="javascript:history.go(-1)">здесь</a>.</p>';
                    echo '</div>';
                    include ('blocks/footer.php');
                    echo '  </div>';
                    exit();
                }
                            
                $new_data = strip_tags($_POST['text'], '');
                if(mb_strlen($_POST['text']) !== strlen($new_data)){
                    echo '<p><span style="color:red;">Не используйте html!</span><br />Вернитесь и исправьте свою ошибку <a href="javascript:history.go(-1)">здесь</a>.</p>';
                    echo '</div>';
                    include ('blocks/footer.php');
                    echo '  </div>';
                    exit();
                }
                            
                else{
                    file_put_contents('blocks/content/comment.php', '<div class="comments">
    <div>
        '. $datetime .'<br />от: ' . $name . ' ' . $family . '
    </div>
    <div>
        '. nl2br($text) .'
    </div>
</div>
'.file_get_contents('blocks/content/comment.php'));
                //file_put_contents("comment.php", "<div class='comments'>" . $datetime . "<br>от:<span> </span>" . $name . "<span> </span>" . $family . "<br><br>" . $text . "</div>\n".file_get_contents("comment.php"));
                echo '<p>Ваше сообщение отправлено!</p>';
                echo '</div>';
                include ('blocks/footer.php');
                echo '  </div>';
                echo '<script>alert("Ваше сообщение отправлено!");</script><meta http-equiv="refresh" content="0; url=comments.php">';
                exit();
                }
            }
            exit();
            }
        ?>
        <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
        <p>ваше имя:</p>
        <input type="text" class="input"  name="name" placeholder="введите ваше имя" value="<?=$_SESSION['name']?>" autocomplete="off" />
        
        <p>ваша фамилия:</p>
        <input type="text" class="input" name="family" placeholder="введите вашу фамилию" value="<?=$_SESSION['family']?>" autocomplete="off" />
                        
        <p>текст сообщения:</p>
        <textarea name="text" placeholder="введите ваш отзыв о сайте " id="textarea"></textarea>
        <br /><input type="submit" value="отправить" id="sub" />
    </form>
</div>
как-то так
1
Mikhail Shell
51 / 51 / 39
Регистрация: 15.11.2014
Сообщений: 626
03.07.2015, 05:54  [ТС] 3
Спасибо большое!
Но почему то при обновлении страницы содержимое стирается из textarea.

Добавлено через 14 минут
PS
Сессию для textarea написал
0
alexsamos33
620 / 600 / 325
Регистрация: 26.04.2014
Сообщений: 1,976
03.07.2015, 15:16 4
Ну так правильно... В сессию то вы его записали, а прочитать? Вы же читаете переменные выше (например value="<?=$_SESSION['family']?>)
А здесь так же...
PHP/HTML
1
        <textarea name="text" placeholder="введите ваш отзыв о сайте " id="textarea"><?=$_SESSION['text']?></textarea>
Добавлено через 50 секунд
Кстати да, что-то я не нахожу запись текста из textarea в сессию в вашем коде.
0
03.07.2015, 15:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2015, 15:16

Сессии
отправляю форму через Ajax, все работает замечательно. Есть 2 варианта завершения отправки формы 1....

Сессии
Господа, прошу о помощи. При работе данного скрипта &lt;?php session_start(); $login = $_SESSION;...

Сессии
На сумму &lt;? if ($_SESSION % 1 === 0 /*!is_float($_SESSION)*/) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru