gc5
gc5

Reputation: 9898

Unable to pass information with a form using POST

I'm trying a simple form using POST but I am unable to pass input to the page. File is "agenda.php", code is the following (in the end the form part):

<?php
/* includes lib */
include_once("lib.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
<script type="text/javascript" src="lib.js"></script>
<link href="schedulerStyle.css" rel="stylesheet" type="text/css">
<title>Scheduler</title>
</head>
<body>
<div id="wrapper">
    <div id="box">
        <h2>Your Agenda</h2>
        <?php 
        if(isset($_SESSION['name']))
        {
            if(isset($_SESSION['meetingCode']))
            {
                $firstDate = getFirstDate($_SESSION['meetingCode']);
                if($firstDate != "")
                {
                    echo "<h3>Organizing meeting starting from ".$firstDate."</h3>";
                    ?>

                    <?php 
                }
                else 
                {
                    unset($_SESSION['name']);
                    unset($_SESSION['meetingCode']);
                    header("Location: agenda.php");
                }
            }
            else
            {
                unset($_SESSION['meetingCode']);
                header("Location: agenda.php");
            }
        }
        else 
        {
            if(!isset($_POST['name']) || $_POST['name'] == "")
            {
            ?>
            <form action="agenda.php" method="post" id="loginForm" 
                    name="loginForm">
                <h3>Insert your name</h3>
                <input type="text" title="Insert your name" maxlength="8" 
                    size="8" id="name" name="name">
                <h3>Insert meeting password</h3>
                <input type="password" title="Insert meeting password" 
                    maxlength="8" size="8" id="meetingPassword" 
                    name="meetingPassword">
                <br><br>
                <input title="Login" type="submit" value="Login">
                <input title="Reset fields" type="reset">
                <a href="index.php">
                <input title="Go to homepage" type="button" value="Back">
                </a>
            </form>
            <?php
            }
            else 
            {
                $meetingCode = checkUserIn($_POST['name'], $_POST['meetingPassword']);
                if(is_int($meetingCode) && $meetingCode > 0)
                {
                    $_SESSION['name'] = $_POST['name'];
                    $_SESSION['meetingCode'] = $meetingCode;
                }
                unset($_POST['name']);
                unset($_POST['meetingPassword']);
                header("Location: agenda.php");
            } 
        }
        ?>
    </div>
</div>
</body>
</html>

The behaviour of this code is:

For other informations code doesn't show ask me and I'll update it. Thanks

For reference, lib.php following:

<?php
$hostDB = "localhost";
$userDB = "root";
$passDB = "";
$dataDB = "scheduler";  

function printAlertScript($msg)
{
    echo "<script type=\"text/javascript\">
            <!--
            alert(\"$msg\");
            //-->
            </script>";
}

function createRandPassword8Chars()
{
    return substr(md5(rand()), 16, 8);
}

function createMeeting($meetingStartDate, $rangeN)
{
    /* opens database connection */
    $conn = new mysqli($GLOBALS['hostDB'], $GLOBALS['userDB'], 
                            $GLOBALS['passDB'], $GLOBALS['dataDB']);
    if (mysqli_connect_errno())
    {
        die("Connect failed: ".mysqli_connect_error());
    }
    $query = "SELECT MAX(meetingCode) FROM meetings;";
    if(!$result = @$conn->query($query))
    {
        die("Query error: " .$query."<br>");
    }
    if($result->num_rows == 0)
        $meetingCode = 0;
    else 
    {
        $item = $result->fetch_array(MYSQL_NUM);
        $meetingCode = (int)$item[0];
        $meetingCode++;
    }
    @$result->close();

    printAlertScript("Meeting code assigned: $meetingCode");

    $pass = createRandPassword8Chars();

    printAlertScript("Password assigned: $pass");
    $GLOBALS['meetingPassword'] = $pass;

    $range = $conn->real_escape_string($rangeN);

    while($range > 0)
    {
        $meetingDate = date('Y-m-d', $meetingStartDate); 
        $query = "INSERT INTO meetings VALUES('$meetingCode', 
            '$meetingDate', '".md5($pass)."');";
        $meetingStartDate = $meetingStartDate + (60 * 60 * 24);

        if(!$result = @$conn->query($query))
        {
            die("Query error: " .$query."<br>");
        }
        $range = $range - 1; 
    }

    /* closes connection */
    @$conn->close();

    return $meetingCode;
}

function addUser($meetingCode, $userN)
{
    /* opens database connection */
    $conn = new mysqli($GLOBALS['hostDB'], $GLOBALS['userDB'], 
                            $GLOBALS['passDB'], $GLOBALS['dataDB']);
    if (mysqli_connect_errno())
    {
        die("Connect failed: ".mysqli_connect_error());
    }
    $user = $conn->real_escape_string($userN);
    $query = "INSERT INTO invites VALUES('$meetingCode', '$user');";

    if(!$result = @$conn->query($query))
    {
        die("Query error: " .$query."<br>");
    }
}

function checkUserIn($nameN, $passwordN)
{
    /* opens database connection */
    $conn = new mysqli($GLOBALS['hostDB'], $GLOBALS['userDB'], 
                            $GLOBALS['passDB'], $GLOBALS['dataDB']);
    if (mysqli_connect_errno())
    {
        die("Connect failed: ".mysqli_connect_error());
    }
    $name = $conn->real_escape_string($nameN);
    $password = $conn->real_escape_string($passwordN);
    $query = "SELECT meetings.meetingCode FROM meetings, invites 
                WHERE password='".md5($password)."' AND user='$name'
                AND meetings.meetingCode = invites.meetingCode;";
    if(!$result = @$conn->query($query))
    {
        die("Query error: " .$query."<br>");
    }
    if($result->num_rows > 0)
    {
        $item = $result->fetch_array(MYSQL_NUM);
        $meetingCode = $item[0];
        $result->close();
        return $meetingCode;
    }
    return "";
}

function getFirstDate($meetingCode)
{
    /* opens database connection */
    $conn = new mysqli($GLOBALS['hostDB'], $GLOBALS['userDB'], 
                            $GLOBALS['passDB'], $GLOBALS['dataDB']);
    if (mysqli_connect_errno())
    {
        die("Connect failed: ".mysqli_connect_error());
    }
    $query = "SELECT MIN(meetingDate) FROM meetings
                WHERE meetingCode=$meetingCode;"; 
    if(!$result = @$conn->query($query))
    {
        die("Query error: " .$query."<br>");
    }
    if($result->num_rows > 0)
    {
        $item = $result->fetch_array(MYSQL_NUM);
        $firstDate = $item[0];
        $result->close();
        return $firstDate;
    }
    return "";
}

function getMeetingData($meetingCode)
{
    /* opens database connection */
    $conn = new mysqli($GLOBALS['hostDB'], $GLOBALS['userDB'], 
                            $GLOBALS['passDB'], $GLOBALS['dataDB']);
    if (mysqli_connect_errno())
    {
        die("Connect failed: ".mysqli_connect_error());
    }
    $query = "SELECT * FROM meetings, invites 
        WHERE user='$nameE' AND pass='".md5($passE)."' 
        AND meetings.meetingCode=invites.meetingCode;"; 
    if(!$result = @$conn->query($query))
    {
        die("Query error: " .$query."<br>");
    }

}

function getUserData($name, $pass)
{
    /* opens database connection */
    $conn = new mysqli($GLOBALS['hostDB'], $GLOBALS['userDB'], 
                            $GLOBALS['passDB'], $GLOBALS['dataDB']);
    if (mysqli_connect_errno())
    {
        die("Connect failed: ".mysqli_connect_error());
    }
    if(strlen($name) > 0 && strlen($name) <= 8)
    {
        $nameE = @$conn->real_escape_string($name);
        $passE = @$conn->real_escape_string($pass);
        /* searches for meetings where user is invited */
        $query = "SELECT * FROM meetings, invites 
            WHERE user='$nameE' AND pass='".md5($passE)."' 
            AND meetings.meetingCode=invites.meetingCode;"; 
        if(!$result = @$conn->query($query))
        {
            die("Query error: " .$query."<br>");
        }
        @$result->close();
    }
    /* closes connection */
    @$conn->close();

    return;
}
?>

also, addUser.php, a file in the same directory and with same includes that has a similar form that works fine:

<?php
/* includes lib */
include_once("lib.php");

global $meetingPassword;

/* if it is the first time tries to create the meeting */
if(isset($_POST['monthInput']) && isset($_POST['dayInput'])
    && isset($_POST['yearInput']) && isset($_POST['daysRange'])
    && isset($_POST['usernameInput']))
{
    $unixTime = mktime(0,0,0, $_POST['monthInput'], 
                        $_POST['dayInput'], $_POST['yearInput']);
    if($unixTime === false || $unixTime < time())
    {
        printAlertScript("Unable to use date");
        header("Location: index.php");
    }
    $meetingCode = createMeeting($unixTime, $_POST['daysRange']);
    if(isset($meetingCode) && is_int($meetingCode) && $meetingCode >= 0)
    {
        addUser($meetingCode, $_POST['usernameInput']);
        $_SESSION['name'] = $_POST['usernameInput'];
        $_SESSION['meetingCode'] = $meetingCode;
    }
    else 
        header("Location: index.php");
    unset($_POST['monthInput']); 
    unset($_POST['dayInput']);
    unset($_POST['yearInput']); 
    unset($_POST['daysRange']);
    unset($_POST['usernameInput']);
}
/* if someone has been invited */
if(isset($_POST['friendInput']) && isset($_SESSION['meetingCode']))
{
    addUser($_SESSION['meetingCode'], $_POST['friendInput']);
    unset($_POST['friendInput']);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
<script type="text/javascript" src="lib.js"></script>
<link href="schedulerStyle.css" rel="stylesheet" type="text/css">
<title>Scheduler</title>
</head>
<body>
<div id="wrapper">
    <div id="box">
        <h2>Invite people</h2>
        <h3>Password is <?php echo $GLOBALS['meetingPassword']; ?></h3>
        <h3>Write username of a friend</h3>
        <form action="addUser.php" method="post" id="addForm" name="addForm">
            <input type="text" title="Insert a friend's name" maxlength="8" 
                size="8" id="friendInput" name="friendInput">
            <input type="submit" title="Add user to invite list" value="Add">
            <a href="agenda.php">
            <input type="button" title="I finished inviting" value="Done">
            </a>
        </form>
    </div>
</div>
</body>
</html>

Also, if I try to reference POST variables I get

Notice: Undefined index: name in C:\xampp\htdocs\home\agenda.php

I'm using XAMPP 1.7.4 [PHP: 5.3.5] on Windows 7

Upvotes: 0

Views: 280

Answers (1)

Vap0r
Vap0r

Reputation: 2616

Have you checked to make sure that lib.php isn't interferring? I put that script up on my site here: http://vapor.ne8us.com/stacks/agenda.php. This is working just fine, it breaks at the checkUser, which it should. I'm guessing that lib.php is either interferring, or the .js file is, or php is not set up correctly on your server.

Upvotes: 1

Related Questions