0

I have tried out some code in php for user registration this whole code works fine on local server but when it comes to live server every php code is getting executed but session variables are not displayed but in local server session variables are passed and displayed properly

DB_Function.php

public function storeUser($salutation, $fname, $lname, $dob, $mobile, $country, $state, $city, $pin){  
    try {
        //$hash = md5($password);
        $characters = '0123456789';
            $uuid = '';
            $random_string_length = 5;
        for ($i = 0; $i < $random_string_length; $i++) {
            $uuid .= $characters[rand(0, strlen($characters) - 1)];
        }
        $fullname = $fname . " " . $lname;
        $vault_no = $salutation . "" . $country . "" . $pin . "" . $uuid;
        $sql = "INSERT INTO users(salutation, fname, lname, fullname, dob, mobile, country, state, city, pin, unique_id, vault_no, created_at) VALUES ('$salutation', '$fname', '$lname', '$fullname', '$dob', '$mobile', '$country', '$state', '$city', '$pin', '$uuid', '$vault_no', NOW())";
        $dbh = $this->db->prepare($sql);

        /*execute the insert query in 
        get the user details return
        */
        if($dbh->execute()){
            // get user details
            $sql = "SELECT * FROM users WHERE mobile = '$mobile' LIMIT 1";
            $dbh = $this->db->prepare($sql);
            $result = $dbh->execute();
            $rows = $dbh->fetch();
            $n = count($rows);
            if($n){
                return $rows;
            }
        }
    }
    catch (Exception $e) {
        die('Error accessing database: ' . $e->getMessage());
    }
    return false;
}

fill.php

<?php
session_start();
 ?>
<html>

<head>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>MiiSKy | Register</title>
    <script type="text/javascript" src="jquery_source.js"></script>
    <script type="text/javascript" src = "register.js"></script>
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link href="font-awesome/css/font-awesome.css" rel="stylesheet">
    <!--<link href="css/plugins/iCheck/custom.css" rel="stylesheet">-->
    <link href="css/animate.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">
    <!--<script src='https://www.google.com/recaptcha/api.js'></script>-->

    <link href="css/plugins/iCheck/custom.css" rel="stylesheet">

    <link href="css/plugins/datapicker/datepicker3.css" rel="stylesheet">
    <!--Dropzone-->
    <link href="css/plugins/dropzone/basic.css" rel="stylesheet">
    <link href="css/plugins/dropzone/dropzone.css" rel="stylesheet">
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>



</head>

<body class="gray-bg">

    <div class="middle-box text-center loginscreen   animated fadeInDown">
        <div>
            <div>

                <!--<h3 class="logo-name">MiiSky</h3>-->
                <img src="img/landing/mii-logo.png">
            </div>
            <!--<h3>Register to MiiSky</h3>-->
            <p>Create your vault to see it in action.</p>
            <form id = "form" name = "form" class="validate-form" method="POST" action="formprofile.php" autocomplete = "off" >

register.js

/* (.ready)Executes the 
    function on 
    complete load
*/
$(document).ready(function(){

    /*executes the function 
    on click of id 'submit'
    */
    $("#submit").click(function(e){

    //validate front-end prior to back-end
        var status = $('form')[0].checkValidity();
        if(status){
            /*jquery to call the url requested 
            and parse the data in json*/
            $.ajax({
                url: "register.php",
                type: "POST",
                //form serialization of the all parameters
                data: $("#form").serialize(),
                async: false,
                //data passed in json
                dataType: "JSON",
                /*Give out the alert box
                to display the results*/                
                success: function (json){
                    /*if error exists alert
                    the user*/
                    if(json.error){
                        alert(json.error_msg);
                        e.preventDefault();
                    }else{
                        //on successs of process
                        alert("Registeration successful!");
                        $('#form').submit();
                    }
                },
                //through out error from back-end if exist
                error: function(jqXHR, textStatus, errorThrown){
                    alert(errorThrown);
                }
            });
        }

    });

}); 

register.php

 <?php
        session_start();
        require_once 'DB_Functions.php';
        $db = new DB_Functions();

        // json response array
        $response = array("error" => false);
        if (!empty($_POST['salutation']) && !empty($_POST['fname']) && !empty($_POST['lname']) && !empty($_POST['dob']) && !empty($_POST['mobile']) && !empty($_POST['country']) && !empty($_POST['state']) && !empty($_POST['city']) && !empty($_POST['pin'])){
                /*
                if required include seperate validation
                for some fields which require validation
                */
                // receiving the post params
                $salutation = ($_POST['salutation']);
                $fname = trim($_POST['fname']);
                $lname = trim($_POST['lname']);
                $dob = trim($_POST['dob']);
               /* $email = trim($_POST['email']);
                $password = $_POST['password'];*/
                $mobile = trim($_POST['mobile']);
                $country = trim($_POST['country']);
                $state = trim($_POST['state']);
                $city = trim($_POST['city']);
                $pin = trim($_POST['pin']);

                /*
                validation process
                starts from here
                */

                // validate your email address

               /* if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
                        //validate your password
                        if(strlen($password) >= 6){*/
                                //validate your mobile
                                //$mobile="/^[1-9]*$/";
                                if(strlen($mobile) == 10){
                                         //Check for valid email address
                                         /*if ($db->isUserExisted($email)) {
                                                                // user already existed
                                                                $response["error"] = true;
                                                                $response["error_msg"] = "User already existed with " . $email;
                                                                echo json_encode($response);
                                                        }*/
                                                        if($db->isMobileNumberExisted($mobile)) {
                                                                        //user already existed
                                                                        $response["error"] = true;
                                                                        $response["error_msg"] = "user already existed with" . $mobile;
                                                                        echo json_encode($response);
                                                        }else{  
                                                                // create a new user
                                                                $user = $db->storeUser($salutation, $fname, $lname, $dob, $mobile, $country, $state, $city, $pin);
                                                                if ($user) {
                                                                        // user stored successfully
                                                                        $response["error"] = false;
                                                                        $_SESSION["fullname"] = $user["fullname"];
                                                                        $_SESSION["vault_no"] = $user["vault_no"];
                                                                        echo json_encode($response);
                                                                } else {
                                                                        // user failed to store
                                                                        $response["error"] = true;
                                                                        $response["error_msg"] = "Unknown error occurred in registration!";
                                                                        echo json_encode($response);
                                                                }
                                                        }

                                }else{
                                        //invalid mobile number
                                        $response["error"] = true;
                                        $response["error_msg"] = "PLEASE ENTER VALID MOBILE NUMBER!";
                                        echo json_encode($response);
                                }
                     /*   }else{
                                //min of 6-charecters
                                $response["error"] = true;
                                $response["error_msg"] = "PASSWORD MUST BE OF MINIMUM 6-CHARACTERS!";
                                echo json_encode($response);
                        }
                }else{
                        // invalid email address
                        $response["error"] = true;
                        $response["error_msg"] = "invalid email address";
                        echo json_encode($response);
                }*/
        }else{
                //missing the required fields
                $response["error"] = true;
                $response["error_msg"] = "Please fill all the required parameters!";
                echo json_encode($response);
        }

?>

form.php snippet

  <?php
session_start();
?>
<!DOCTYPE html>
<html>

<head>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>MiiSky | Dashboard</title>
    <script type="text/javascript" src="jquery_source"></script>
    <script type="text/javascript" src = "form_profile.js"></script>
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link href="font-awesome/css/font-awesome.css" rel="stylesheet">

    <!-- Toastr style -->
    <link href="css/plugins/toastr/toastr.min.css" rel="stylesheet">

    <!-- Gritter -->
    <link href="js/plugins/gritter/jquery.gritter.css" rel="stylesheet">

    <link href="css/animate.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">

</head>

<body>
    <div id="wrapper">
        <nav class="navbar-default navbar-static-side" role="navigation">
            <div class="sidebar-collapse">
                <ul class="nav metismenu" id="side-menu">
                    <li class="nav-header">
                        <div class="dropdown profile-element">
                            <!--<span>
                                <img alt="image" class="img-circle" src="img/sunil1.jpg" />
                            </span>-->
                            <a data-toggle="dropdown" class="dropdown-toggle" href="#">
                            <span class="clear"> <span class="block m-t-xs"> <strong class="font-bold">
                 /*here is use of session variable*/
                    <?php
                    echo $_SESSION["fullname"];
                    ?></strong>
                             </span>
                              <!--<span class="text-muted text-xs block">Android Developer <b class="caret"></b></span>--> </span> </a>
                            <ul class="dropdown-menu animated fadeInRight m-t-xs">
                                <li><a href="#">Profile</a></li>
                                <li><a href="#">Contacts</a></li>
                                <li><a href="#">Mailbox</a></li>
                                <li class="divider"></li>
                                <li><a href="sign_out.php">Sign out</a></li>
                            </ul>
                        </div>
                        <div class="logo-element">
                            MiiSky
                        </div>
                    </li>

                    <li>
                    <a href=""><i class="fa fa-user"></i> <span class="nav-label">Profile Vault</span><span class="fa arrow"></span></a>


                </li>



                </ul>

            </div>
        </nav>

        <div id="page-wrapper" class="gray-bg dashbard-1">
        <div class="row border-bottom">
        <nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0">
        <div class="navbar-header">
            <a class="navbar-minimalize minimalize-styl-2 btn btn-primary " href="#"><i class="fa fa-bars"></i> </a>
            <form role="search" class="navbar-form-custom" action="search_results.html">
                <div class="form-group">
                    <input type="text" class="form-control" name="top-search" id="top-search">
                </div>
            </form>
        </div>
            <ul class="nav navbar-top-links navbar-right">
                <li>
                    <span class="m-r-sm text-muted welcome-message">Welcome to MiiSky</span>
                </li>
                <li class="dropdown">



                <li>
                    <a href="signin.html">
                        <i class="fa fa-sign-out"></i> Sign Out
                    </a>
                </li>
                <!--<li>
                    <a class="right-sidebar-toggle">
                        <i class="fa fa-tasks"></i>
                    </a>
                </li>-->
            </ul>

        </nav>
        <br><div style="font-size:30px; text-align:center;">
                   /*here is use of session variable*/
                    <?php
                    echo "<h1>Your Vault Number is generated and will be sent to your Mobile shortly.<br></h1>"  . $_SESSION["vault_no"];
                    ?>
                    </div>           
Paolo Forgia
  • 6,572
  • 8
  • 46
  • 58
  • Have you started the session on the form.php page as well? – Epodax Dec 31 '15 at 10:49
  • You have to use `session_start()` on every page using the session variable. – Jay Blanchard Dec 31 '15 at 10:50
  • The session variables are only being set when you create a new user; so if you don't see anything in the session array, this means the user is not being created. – Burhan Khalid Dec 31 '15 at 10:50
  • I don't see any error here, and the comments and answer are sufficient to solve this issue. You may want to take a look at [my answer here](http://stackoverflow.com/a/34319416/5517143). And if that also doesn't solve your problem, then please contact your hosting provider. – Rajdeep Paul Dec 31 '15 at 16:40
  • All working out fine in localhost sir.. but when transferred to godaddy linux hosting with database name as (localhost) session's are totally ignored..!! –  Jan 01 '16 at 04:19
  • sir here i updated and provided complete code can you please rectify the mistake which is not allowing me to create session in http://www.miisky.com/appmiisky/web_api/formprofile.php –  Jan 02 '16 at 06:28
  • What is your server configuration? – Hardik Solanki Jan 02 '16 at 07:03
  • sir can u be bit clear what configurations..?? dint understand you properly –  Jan 02 '16 at 07:06
  • I mean to say, Is it linux or window server? – Hardik Solanki Jan 02 '16 at 07:11
  • yes sir its a linux server..!! –  Jan 02 '16 at 07:13
  • Ok. I think you haven't permission to save session in file on your server or session save path at tmp folder is not writable. – Hardik Solanki Jan 02 '16 at 07:14
  • sir...is the code alright..?? –  Jan 02 '16 at 07:17
  • Yeah..Code seems to looking fine for me..Did you try to print your session with `print_r($_SESSION);`? – Hardik Solanki Jan 02 '16 at 07:19
  • sure sir ill try even that..!! –  Jan 02 '16 at 07:20
  • if not can please suggest me some kind of solution..!! coz i want to go live but session not at all working in live server..!!:( –  Jan 02 '16 at 07:20
  • 2
    You need to make `php.ini` file and add this line into this file :`session.save_path = "/temp/php_sessions"`. You need to create folder `temp` then create other `php_sessions` folder into current `temp` folder. – Hardik Solanki Jan 02 '16 at 07:22
  • i havent created any such kind of php.ini file sir is that the problem..?? –  Jan 02 '16 at 07:27
  • Did you try to create `php.ini` file? – Hardik Solanki Jan 02 '16 at 07:29
  • noo sir.!! i have no idea of php.ini file..!!:( –  Jan 02 '16 at 07:33
  • i have all of my files stored in a folder called web_api..!! can you give me hint to create php.ini file..?? –  Jan 02 '16 at 07:40
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/99513/discussion-between-hardik-solanki-and-krishna). – Hardik Solanki Jan 02 '16 at 09:01
  • @krishna If you're on a shared hosting server then you're not allowed to make any changes to *php.ini* file. This issue is completely related to your live server, please contact your hosting provider, they may assist you in a better way than us. – Rajdeep Paul Jan 02 '16 at 10:18
  • sir then no need to create php.ini file for this..?? as we are hosting it on godaddy linux server..!! –  Jan 02 '16 at 10:21
  • sir the thing which is bothering me is every thing working smoothly on my xampp local server....but not when we host it..! –  Jan 02 '16 at 10:24
  • @krishna Pls check my answer and give me a reply if that doesn't fix your problem. – Tᴀʀᴇǫ Mᴀʜᴍᴏᴏᴅ Jan 05 '16 at 07:48

3 Answers3

1

You have space before declaring session variable.

  <?php
session_start();
?>

Note the space before <?php. This will create an issue so just remove it.

Alpesh Panchal
  • 1,723
  • 12
  • 9
0

The session_start() function must be the very first thing in your document. Before any HTML tags. Try this:

<?php
  session_start();
?>
<!DOCTYPE html>
<html>
<body>
Amit Visodiya
  • 856
  • 6
  • 18
  • yes sir done the changes but sadly not working..!! –  Dec 31 '15 at 11:40
  • Note: This is only true for cookie based sessions as said in PHP manual - _"To use cookie-based sessions, session_start() must be called before outputing anything to the browser."_ - http://php.net/manual/en/function.session-start.php – Tᴀʀᴇǫ Mᴀʜᴍᴏᴏᴅ Jan 05 '16 at 05:41
  • soo....sir can u plz guid me wer i went wrong..!! –  Jan 05 '16 at 07:14
0

You have saved the fullName as $_SESSION["user"]["fullname"] :

$_SESSION["user"]["fullname"] = $user["fullname"];

But you are echoing this way:

echo $_SESSION["fullname"];

Fix it to echo the correct one:

echo $_SESSION["user"]["fullname"];

Note: You can use additional check if(isset($_SESSION["user"]["fullname"])) so that you don't get error, when it is not actually set. But that will fix nothing until you use the correct variable / key.