Я хочу скопировать $ friendname = $ _ POST ['friendname']; значение для следующей страницы, когда оператор if работает и отображается эхо - PullRequest
0 голосов
/ 26 мая 2019

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

<?php

    include("config.php");
    session_start();
    $user=$_POST['username'];//username
    $friendname=$_POST['friendname'];//friendname
    $years=$_POST['years'];
    $nickname=$_POST['nickname'];
    $place=$_POST['place'];//username

    $sql = "INSERT INTO data (username,friendname,years,nickname,place)
                VALUES ('$user', '$friendname', '$years','$nickname','$place')";




    if ($con->query($sql) === TRUE) {
        $_POST['friendname']=$frnd;//username
        header('location: ../form2.php');
    } else {
        echo "Error: " . $sql . "<br>" . $con->error;
    }
    $con->close();
?> 

это то, что я пробовал, но не работает insert.php

<?php


    include("config.php");
    session_start();
    $user=$_POST['username'];//username
    $friendname=$_POST['friendname'];//friendname
    $years=$_POST['years']
    $nickname=$_POST['nickname'];
    $place=$_POST['place'];

    $sql = "INSERT INTO data (username,friendname,years,nickname,place)
            VALUES ('$user', '$friendname', '$years','$nickname','$place')";

    if ($con->query($sql) === TRUE) {
        $_POST['friendname']=$frnd;//username
        header('location: ../form2.php');
    } else {
        echo "Error: " . $sql . "<br>" . $con->error;
    }
    $con->close();
?>

form2.php

<?php
    session_start();
    if (!isset($_SESSION['username'])) {

    }
    if (isset($_GET['logout'])) {

    }
?>




<html>
    <body>
        <p><?php echo $_SESSION['username']; ?></p>
        <h4>Enter some details for your friend <?php echo $frnd;?></h4>
        <form>
        </form>
    </body>
</html>

NOtice: неопределенная индексная переменная frnd в номере строки

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

SQL-код широко открыт для внедрения SQL-кода в приведенном выше коде - вам следует рассмотреть возможность использования prepared statements, так как после его освоения жизнь станет намного проще, а ваш код - более безопасным.

Ниже не проверено, но по существу работает следующим образом:

Данные запроса POST фильтруются - хотя это не является строго обязательным, когда использование подготовленного оператора, IMO, всегда хорошая идея.

sql для выполнения prepared, а заполнители ? в sql связаны с переменными.

<?php

    session_start();
    include 'config.php';

    $user=filter_input( INPUT_POST, 'username', FILTER_SANITIZE_STRING );
    $name=filter_input( INPUT_POST, 'friendname', FILTER_SANITIZE_STRING );
    $years=filter_input( INPUT_POST, 'years', FILTER_SANITIZE_NUMBER_INT );
    $nick=filter_input( INPUT_POST, 'nickname', FILTER_SANITIZE_STRING );
    $place=filter_input( INPUT_POST, 'place', FILTER_SANITIZE_STRING );

    $sql='insert into `data` (`username`,`friendname`,`years`,`nickname`,`place`) values (?,?,?,?,?)';
    $stmt=$con->prepare( $sql );

    if( !$stmt )exit('Failed to prepare SQL query');
    $stmt->bind_param('ssiss',$user,$name,$years,$nick,$place);

    $res=$stmt->execute();

    if( $res && $con->affected_rows==1 ){
        $_SESSION['friendname']=$name;
        $_SESSION['username']=$user;
        exit( header('Location: ../form2.php') );
    } else {
        exit('Error');
    }
?>

Тогда ваш HTML может быть изменен следующим образом, чтобы назначить переменную сеанса переменной - опять же, строго не обязательно делать это

<?php
    session_start();
    $friend = $_SESSION['friendname'];
?>

<html>
    <body>
        <form>
            <p><?php echo $_SESSION['username']; ?></p>
            <h4>Enter some details for your friend <?php echo $friend;?></h4>       
        </form>
    </body>
</html>
0 голосов
/ 26 мая 2019

file2.php

<?php
session_start();
$frnd = $_SESSION['friendname'];

?>

<html>
    <body>
        <p><?php echo $_SESSION['username']; ?></p>
        <h4>Enter some details for your friend <?php echo $frnd;?></h4>
        <form>
        </form>
    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...