Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从向ajax返回JSON结果的PHP脚本启动会话_Php_Jquery_Ajax_Session - Fatal编程技术网

如何从向ajax返回JSON结果的PHP脚本启动会话

如何从向ajax返回JSON结果的PHP脚本启动会话,php,jquery,ajax,session,Php,Jquery,Ajax,Session,我有一个loginscript,用于启动包含admin或任何可能的其他用户的会话 脚本中的所有内容都以JSON(消息和用户登录的内容)的形式返回。但在同一个脚本中,我还根据用户登录的内容启动会话 得到结果后,我会转到一个页面,具体取决于登录的用户,但在那里找不到会话。我试图附和它的内容,但它什么也没显示 我做错了什么 我的php脚本: session_start(); $conn = new Connection; $username = $_POST['username']; $userpas

我有一个loginscript,用于启动包含admin或任何可能的其他用户的会话

脚本中的所有内容都以JSON(消息和用户登录的内容)的形式返回。但在同一个脚本中,我还根据用户登录的内容启动会话

得到结果后,我会转到一个页面,具体取决于登录的用户,但在那里找不到会话。我试图附和它的内容,但它什么也没显示

我做错了什么

我的php脚本:

session_start();
$conn = new Connection;
$username = $_POST['username'];
$userpassword = $_POST['userpassword'];

if(empty($username) && empty($userpassword)){
    $logindata = array(
        'userdata' => '',
        'message' => 'Vul een gebruikersnaam en wachtwoord in',
    );
    echo json_encode($logindata);
}else if(empty($username)){
    $logindata = array(
        'userdata' => '',
        'message' => 'Vul een gebruikersnaam in',
    );
    echo json_encode($logindata);
}else if(empty($userpassword)){
    $logindata = array(
        'userdata' => '',
        'message' => 'Vul een wachtwoord in',
    );
}else{
  //Both filled in, begin logincode:
  $getuser = "SELECT * FROM users WHERE username = '".$conn->real_escape_string($username)."'";
  $getusercon = $conn->query($getuser);
  $getuser = $getusercon->fetch_assoc();

  if($userpassword == $getuser['password']){
    if($getuser['rights'] == '1'){
      $_SESSION['user'] = 'admin';
      $loginresult = array(
        'login_result' => 'success',
     );
      $logindata = array(
        'userdata' => $_SESSION['user'],
     );
    echo json_encode($logindata);
    }else{
      $_SESSION['user'] = $getuser['username'];
      $loginresult = array(
        'login_result' => 'success',
     );
      $logindata = array(
        'userdata' => $_SESSION['user'],
     );
    echo json_encode($logindata);
    }
  }else{
        $logindata = array(
            'userdata' => '',
            'message' => 'Wachtwoord en gebruikersnaam komen niet overeen',
     );
    echo json_encode($logindata);
  }
}
我的AJAX代码:

// Login Ajax Code
$( "#content" ).on("submit", "#loginform", function( event ) {
  // Stop normal form behaviour
  event.preventDefault();
  // Retrieve input fields and their values
  var $form = $( this ),
  $username = $form.find( "input[name='username']" ).val(),
  $userpassword = $form.find( "input[name='userpassword']" ).val(),
  url = $form.attr( "action" );
  // Post above values to the action of the form
  var posting = $.post( url, { username: $username, userpassword: $userpassword} );
  // Show result in a div
  posting.done(function( data ) {
    obj = JSON.parse(data);
    if(obj.userdata == ''){
      $( "#loginresult" ).empty().slideDown('fast').append( obj.message );
    }else if(obj.userdata == 'admin'){
      window.location.href = "http://www.website.nl/addcompany.php";
      console.log('dit is een admin');
    }else if(obj.userdata == 'user'){
      window.location.href = "http://www.website.nl/index2.php";
      console.log('dit is een user');
    }
  }, "json");
});
addcompany.php
index2.php
上的标题中,我尝试了以下方法:

<?PHP echo $_SESSION['user']; ?>test
测试

它显示测试,但不显示会话内容。

您是从跨域使用它的吗?您的API调用位于不同的域中,而您的请求来自不同的域?您的脚本非常开放,甚至可以在
MYSQLI
PDO
API中使用。在这段PHP代码中,我看不到您在哪里启动会话?i、 不,
start\u session()
@riggsfully我忘了添加它,它就在那里。在我的connection.php中,并在我的登录脚本的顶部。@PraveenKumar不,它们都在同一个域中