Потеря значения $ var при использовании массива

0

Я пытаюсь построить url как:

https://theserver/career/pathway?path=3&edu=4&cert=

Общая проблема здесь заключается в том, что $message var теряет значения $pathval, $edval, $certval при заполнении массивом $data ala $data (как показано ниже)

При использовании вашего последнего блока кода

else if ($action == "send") {
    //added
    #pathway var
    var_dump($_SESSION);
    $pathval = $_SESSION['pathid'];
    $edval = $_SESSION['edid'];
    $certval = $_SESSION['certid'];

    var_dump($pathval);
    var_dump($edval);
    var_dump($certval);

    $data = array(
        "path"=>$pathval,
        "edu"=>$edval,
        "cert"=>$certval
    );

    var_dump($data);


    $server_prefix = 'https://';
    $server_address = $_SERVER['SERVER_ADDR'];

    #$fullurl = $server_prefix.$server_address."/career/pathway?ed=".$edval;

    // Send the email
    $name = isset($_POST["name"]) ? $_POST["name"] : "";
    $email = isset($_POST["email"]) ? $_POST["email"] : "";
    $subject = isset($_POST["subject"]) ? $_POST["subject"] : $subject;
    $message = $server_prefix.$server_address.'/career/pathway?'.http_build_query($data);
    var_dump($message);
    // $message = $pathval;
    var_dump($message);

    $cc = isset($_POST["cc"]) ? $_POST["cc"] : "";
    $token = isset($_POST["token"]) ? $_POST["token"] : "";

    // make sure the token matches
    if ($token === smcf_token($to)) {
        smcf_send($name, $email, $subject, $message, $cc);
        echo "Your message was successfully sent.";
        // echo $name . "\n";
        // echo $email . "\n";
        // echo $subject . "\n";
    }
    else {
        echo "Unfortunately, your message could not be verified.";
    }
}

Эти выходы (это отлично!):

array(3) { ["pathid"]=> string(1) "3" ["edid"]=> string(1) "4" ["certid"]=> string(0) "" } string(1) "3" string(1) "4" string(0) "" array(3) { ["path"]=> string(1) "3" ["edu"]=> string(1) "4" ["cert"]=> string(0) "" } string(56) "https://theserver/career/pathway?path=3&edu=4&cert=" string(56) "https://theserver/career/pathway?path=3&edu=4&cert=" Your message was successfully sen

Выход электронной почты: Message: https://theserver/career/pathway?path=edu=cert

  • 0
    Вы поместили session_start() в верхней части своей страницы?
  • 0
    Это действительно выглядит странно. Как вы выводите эти строки?
Показать ещё 10 комментариев
Теги:
variables
concatenation

1 ответ

0

Извините, я не могу комментировать.

Но как @JeremiahWinsley сказал:

http://php.net/manual/en/function.http-build-query.php

$pathval = 3;
    $edval = 4;
    $certval = '';
    $server_prefix = 'https://';
    $server_address = 'website.com';
   $data = array('path'=>$pathval,
        'edu'=>$edval,
        'cert'=>$certval);

    echo $server_prefix.$server_address.'/career/pathway?'.http_build_query($data) . "\n";
    echo $server_prefix.$server_address.'/career/pathway?'.http_build_query($data, '', '&');

вывод:

https://website.com/career/pathway?path=3&edu=4&cert=
https://website.com/career/pathway?path=3&edu=4&cert=

это то, о чем вы просили?

Ваш вопрос phph CODE должен быть следующим:

if ($action == "send") {
        // VALUES EXIST HERE
        var_dump($_SESSION);
        $pathval = $_SESSION['pathid'];
        $edval = $_SESSION['edid'];
        $certval = $_SESSION['certid'];
        var_dump($pathval);
        var_dump($edval);
        var_dump($certval);

        // << LOSING THE VALUES HERE >>
        $data = array(
            "path"=>$pathval,
            "edu"=>$edval,
            "cert"=>$certval
        );
        var_dump($data);
        // This DOES NOT work, and outputs: 'path=edu=cert'
        $message = http_build_query($data);
        var_dump($message);
        // This DOES work and outputs: '3'
        $message = $pathval;
            var_dump($message);
exit;
        }

так что теперь со всеми этими эхами и вашим php-кодом все ясно! просто будьте внимательны!

ваш код должен быть:

else if ($action == "send") {
//added

$pathval = $_SESSION['pathid'];
$edval = $_SESSION['edid'];
$certval = $_SESSION['certid'];

var_dump($pathval);
var_dump($edval);
var_dump($certval);

$data = array(
    "path"=>$pathval,
    "edu"=>$edval,
    "cert"=>$certval
);

var_dump($data);

$server_prefix = 'https://';
$server_address = $_SERVER['SERVER_ADDR'];

// Send the email
$name = isset($_POST["name"]) ? $_POST["name"] : "";
$email = isset($_POST["email"]) ? $_POST["email"] : "";
$subject = isset($_POST["subject"]) ? $_POST["subject"] : $subject;
$message = $server_prefix.$server_address.'/career/pathway?'.http_build_query($data);
var_dump($message);

$cc = isset($_POST["cc"]) ? $_POST["cc"] : "";
$token = isset($_POST["token"]) ? $_POST["token"] : "";

// make sure the token matches
if ($token === smcf_token($to)) {
    smcf_send($name, $email, $subject, $message, $cc);
    echo "Your message was successfully sent.";
}
else {
        echo "Unfortunately, your message could not be verified.";
    }
}

и если это сработает - вы можете удалить остальные строки var_dump

  • 0
    Какая? Это все еще не отправка значений
  • 0
    покажи мне выводы :-)
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню