Session and id does not continue HELP!

Help…I almost had this but I included the password field in my form now it is not working. What was happening before I had all the tested members added to the Welcome page at once. When I put in the password field it is not welcoming anyone so sessions is not operating.


// Get the user session id variable into a local php variable for easier use in scripting
$id = $_SESSION['id'];

// Now let's initialize vars to be printed to page in the HTML section so our script does not return errors 
// they must be initialized in some server environments

$firstname = '';
$lastname = '';
$country = '';
$email = '';

//Formulate Query
//This is the best way to perform an SQL query
$query = "SELECT id, firstname FROM `Members` WHERE id='$id'";
$result = mysql_query($query);

//Check result
//This shows the actual query sent to MySQL and the error. Useful for debugging.

if(!$result){
	$message = 'Invalid query:' . mysql_error() . "\
";
	$message .= 'Whole query:' . $query;
	die($message);
}
//Use result
//Attempting to print $result won't allow access to information in the resource
//One of the mysql result functions must be used
//See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while($row=mysql_fetch_assoc($result)){
	echo "Welcome, {$row[firstname]}";
}
//Free the resources associated with the result set
mysql_free_result($result);

At one point it when it was including everyone all at once it was able to view the private pages but the new update password takes me back to square one. It was showing a error message with SQL " after the WHERE clause where I had the id={$_SESSION[‘id’]} so I just tested to see how the codes id=‘$id’ would work and it does not have the echo Welcome, firstname.

these codes are very tricky.
:confused:

I dont see any password in there?

or a session_start, or… any sort of form whatsoever…

If we’re going to help you we’re going to need to see the relevant code.

I also don’t see any password in there, also on a side note, are you starting your session?

remember at the top of your code: session_start();

I’m more confused as to why you need 2 posts http://www.sitepoint.com/forums/php-34/sessions-id-not-continuing-756767.html

I was focusing on my coding and got side tracked nothing intentional :blush:



<?php
session_start();
?>
<?php
ini_set ("display_errors", "1");
error_reporting(E_ALL);
?>		
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Welcome</title>
</head>

<body>
<?php
/* Program: login.php
 * Desc:	Displays the new member welcome page. Greets
 *			member by name and gives a choice to enter
 *			restricted section or go back to main page.
 */ 
include('Connections/connect_to_mysql.php'); 

// Get the user session id variable into a local php variable for easier use in scripting
$id = $_SESSION['id'];

// Now let's initialize vars to be printed to page in the HTML section so our script does not return errors 
// they must be initialized in some server environments

$firstname = '';
$lastname = '';
$country = '';
$email = '';

//Formulate Query
//This is the best way to perform an SQL query
$query = "SELECT id, firstname FROM `Members` WHERE id='$id'";
$result = mysql_query($query);

//Check result
//This shows the actual query sent to MySQL and the error. Useful for debugging.

if(!$result){
	$message = 'Invalid query:' . mysql_error() . "\
";
	$message .= 'Whole query:' . $query;
	die($message);
}
//Use result
//Attempting to print $result won't allow access to information in the resource
//One of the mysql result functions must be used
//See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while($row=mysql_fetch_assoc($result)){
	echo "Welcome, {$row[firstname]}";
}
//Free the resources associated with the result set
mysql_free_result($result);

?>
<p>Your new Member accounts lets you enter the members only section
of our web site. You'll find special discounts, a profile of matches,
live advise from experts, and much more.</p>
<p>Your new Member ID and password were emailed to you. Store them
carefully for future use.</p>
<div style="text-align: center">
<p style="margin-top: .5in; font-weight: bold">
Glad you could join us!</p>
<form action="profile.php" method="post">
	<input type="submit"
		value="Enter the Members Only Section">
		</form>
<form action="index.php" method="post">
	<input type="submit" value="Go to Main Page">
	</form>		
		</div>
</body>
</html>

Hopefully there isnt actually a blank line before your <?php at the top, or session_start will fail…
In your query, Unless your id field is a string type (VARCHAR), you shouldnt have quotes around it. Numerical field types (INT, etc) dont have quotes around them.

I… still dont see anything about a password in there, or anywhere where you’re writing to the session variable…

I agree with StarLion, im a little lost as to the problem your trying to solve with the code you supplied. With that said i went and cleaned up your code as i saw room for improvement.

&lt;?php

session_start();

ini_set('display_errors', '1');
error_reporting(E_ALL);

?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;Welcome&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;?php

/**
 * Program : login.php
 * Desc    : Displays the new member welcome page. Greets
 *           member by name and gives a choice to enter
 *           restricted section or go back to main page.
 */

// Check if the user has a current session, if they don't show the
// login form required to gain access
if (isset($_SESSION['id'])) {
    include('Connections/connect_to_mysql.php');
    
    // Set the users session ID
    $id = $_SESSION['id'];
    
    // Now let's initialize vars to be printed to page in the HTML
    // section so our script does not return errors they must be
    // initialized in some server environments
    $firstname = '';
    $lastname = '';        // &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
    $country = '';         // Are these really needed??
    $email = '';           // &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;
    
    // Build the MySQL query
    $query = "SELECT id, firstname FROM `Members` WHERE id = $id";
    
    // Run the query and kill the page upon any MySQL errors
    if (!$result = mysql_query($query)) {
        $message  = 'Invalid query: ' . mysql_error() . "\
";
        $message .= 'MySQL query: ' . $query;
        die($message);
    }
    
    // Check to make sure that a user was found otherwise remove the
    // the session and reload the page
    if (mysql_num_rows($result)) {
        $row = mysql_fetch_row($result);
        mysql_free_result($result);
        
        echo 'Welcome, ' . $row['firstname'];
    } else {
        unset($_SESSION['id']);
        header('Location: ' . $_SERVER['PHP_SELF']);
    }
} else {
?&gt;

    &lt;p&gt;
        Your new Member accounts lets you enter the members only section of our web site. You'll find special discounts, a profile of matches, live advise from experts, and much more.
    &lt;/p&gt;
    &lt;p&gt;
        Your new Member ID and password were emailed to you. Store them carefully for future use.
    &lt;/p&gt;
    
    &lt;div style="text-align: center"&gt;
        &lt;p style="margin-top: .5in; font-weight: bold"&gt;Glad you could join us!&lt;/p&gt;
        &lt;form action="profile.php" method="post"&gt;
            &lt;input type="submit" value="Enter the Members Only Section" /&gt;
        &lt;/form&gt;
        &lt;input type="button" value="Go to Main Page" /&gt;   
    &lt;/div&gt;
&lt;?php
}
?&gt;

&lt;/body&gt;
&lt;/html&gt;

This is my form. Do you mean to take out the ‘’ around the id in the query??
Also no space in front of the <?php


&lt;?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
include_once ("Connections/connect_to_mysql.php"); 

  $err='';
  $id='';
  $firstname='';
  $lastname='';
  $password='';
  $country='';
  $email='';
  $_SESSION['$id']='id';

  if(isset($_POST["submit"])){

  
    // Validate form data

    if($_POST["firstname"]=='') $err.='Please enter First Name&lt;br&gt;';
    if($_POST["email"]=='') $err.='Please enter Email&lt;br&gt;';



    if($err==''){ 

      // Check if there are duplicate entries in the 'contacts' table

      $sql_check = mysql_query("SELECT id FROM `Members` WHERE firstname='".addslashes($_POST["firstname"])."' and Email='".addslashes($_POST["email"])."'");
      if($row = mysql_fetch_array($sql_check)){
        $err.='Can not add duplicate entry&lt;br&gt;';
      }
      else{

        // adding new record to 'contacts' table

       $results = mysql_query("INSERT INTO Members (firstname,lastname,password,country,Email) 
                    values ('".mysql_real_escape_string($_POST["firstname"])."','".mysql_real_escape_string($_POST["lastname"])."','".md5($_POST["password"])."','".mysql_real_escape_string($_POST["country"])."','".mysql_real_escape_string($_POST["email"])."')")
					or die (mysql_error());
 $id = mysql_insert_id();
 $userid = mysql_insert_id(); 

       // redirecting to success screen
	   if($results){
         header("Location: login.php");
}else
die(mysql_error());

      }
    }
  }

?&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Add New Contact&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;

&lt;h2&gt;Register with us&lt;/h2&gt;

&lt;?php echo $err==''?'':('&lt;p style="color:red;"&gt;'.$err.'&lt;/p&gt;') ?&gt;

&lt;form method="post" action="form.php"&gt;

&lt;table border="0"&gt;
&lt;tr&gt;
&lt;td valign="middle"&gt;First Name:&lt;/td&gt;
&lt;td&gt;&lt;input type="text" name="firstname" size="30" value="&lt;?php echo htmlspecialchars($firstname) ?&gt;"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="middle"&gt;Last Name:&lt;/td&gt;
&lt;td&gt;&lt;input type="text" name="lastname" size="30" value="&lt;?php echo htmlspecialchars($lastname) ?&gt;"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="middle"&gt;Password:&lt;/td&gt;
&lt;td&gt;&lt;input type="password" name="password" size="32" value="&lt;?php echo htmlspecialchars($password) ?&gt;"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="middle"&gt;Country:&lt;/td&gt;
&lt;td&gt;&lt;input type="text" name="country" size="30" value="&lt;?php echo htmlspecialchars($country) ?&gt;"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="middle"&gt;Email:&lt;/td&gt;
&lt;td&gt;&lt;input type="text" name="email" size="30" value="&lt;?php echo htmlspecialchars($email) ?&gt;"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;br&gt;

&lt;input type="submit" name="submit" value=" Submit! "&gt;

&lt;/form&gt;

&lt;/body&gt;
&lt;/html&gt;

The vars I dont think I need them I had them there because I thought that was what was stopping it from continuing. I am pasting your codes. Thanks

$id=‘’;
$_SESSION[‘$id’]=‘id’;

so… you’re setting $_SESSION[‘’] to “id” … o…kay…I do not understand this logic at all. Please elaborate.

Anyway, so now you’ve got $_SESSION[‘’] set to “id”. When you get back to your page,
$id = $_SESSION[‘id’];
$_SESSION[‘id’] doesnt exist. Because you didnt set that. You set $_SESSION[‘’].

Think maybe in your form code you meant to do $_SESSION[‘id’] = $id; ?

I updated the coding shows no errors but I dont think it is continuing the sessions as it does not show the Welcome, firstname.

this is the SQL code in phpmyadmin

SELECT * FROM Members WHERE 1

Well considering that nowhere in your code do you select *, that’s… not true.

What entries do you have in your table at the moment?

I have the id, pw, firstname,lastname, country. Just the basic till I get the form right. that SQL is just there when I click on the SQL button in my members table. Does that code that is there hinder my own coding with PHP for the form and welcome page.

What i mean is… what data do you have in the table? What’s the ID you’re trying to query?

Oh when I fill out my form I am hoping that the sessions continues with the Welcome page.
Here is my form


&lt;?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
include_once ("Connections/connect_to_mysql.php"); 

  $err='';
  $id='';
  $firstname='';
  $lastname='';
  $password='';
  $country='';
  $email='';
  $_SESSION['$id']='id';

  if(isset($_POST["submit"])){

  
    // Validate form data

    if($_POST["firstname"]=='') $err.='Please enter First Name&lt;br&gt;';
    if($_POST["email"]=='') $err.='Please enter Email&lt;br&gt;';



    if($err==''){ 

      // Check if there are duplicate entries in the 'contacts' table

      $sql_check = mysql_query("SELECT id FROM `Members` WHERE firstname='".addslashes($_POST["firstname"])."' and Email='".addslashes($_POST["email"])."'");
      if($row = mysql_fetch_array($sql_check)){
        $err.='Can not add duplicate entry&lt;br&gt;';
      }
      else{

        // adding new record to 'contacts' table

       $results = mysql_query("INSERT INTO Members (firstname,lastname,password,country,Email) 
                    values ('".mysql_real_escape_string($_POST["firstname"])."','".mysql_real_escape_string($_POST["lastname"])."','".md5($_POST["password"])."','".mysql_real_escape_string($_POST["country"])."','".mysql_real_escape_string($_POST["email"])."')")
					or die (mysql_error());
 $id = mysql_insert_id();
 $userid = mysql_insert_id(); 

       // redirecting to success screen
	   if($results){
         header("Location: login.php");
}else
die(mysql_error());

      }
    }
  }

?&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Add New Contact&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;

&lt;h2&gt;Register with us&lt;/h2&gt;

&lt;?php echo $err==''?'':('&lt;p style="color:red;"&gt;'.$err.'&lt;/p&gt;') ?&gt;

&lt;form method="post" action="form.php"&gt;

&lt;table border="0"&gt;
&lt;tr&gt;
&lt;td valign="middle"&gt;First Name:&lt;/td&gt;
&lt;td&gt;&lt;input type="text" name="firstname" size="30" value="&lt;?php echo htmlspecialchars($firstname) ?&gt;"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="middle"&gt;Last Name:&lt;/td&gt;
&lt;td&gt;&lt;input type="text" name="lastname" size="30" value="&lt;?php echo htmlspecialchars($lastname) ?&gt;"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="middle"&gt;Password:&lt;/td&gt;
&lt;td&gt;&lt;input type="password" name="password" size="32" value="&lt;?php echo htmlspecialchars($password) ?&gt;"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="middle"&gt;Country:&lt;/td&gt;
&lt;td&gt;&lt;input type="text" name="country" size="30" value="&lt;?php echo htmlspecialchars($country) ?&gt;"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="middle"&gt;Email:&lt;/td&gt;
&lt;td&gt;&lt;input type="text" name="email" size="30" value="&lt;?php echo htmlspecialchars($email) ?&gt;"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;br&gt;

&lt;input type="submit" name="submit" value=" Submit! "&gt;

&lt;/form&gt;

&lt;/body&gt;
&lt;/html&gt;

Like StarLion mentioned in post#2, you’re missing session_start() on that page.

If you want to have access to the session variables, you need to have session_start() at the top of each php page - no exceptions.

It has the Welcome page but not the Welcome, firstname sessions is not working??? I included the session_start(); now at the top of the form.

You’re missing the third arm of the triangle - you’ve got the page set up to read session data, you’ve got the form to insert data into the table… but where’s the login to read the table and fill in the session?