ciao a tutti ho da poco inziato a studiare il php con il libro "sviluppare applicazioni web con php e mysql" al capitolo 20 c' è un esempio di autenticazione utente che mi da:
Fatal error: Cannot redeclare class InvalidArgumentException in C:\www\Chapter20\errors.inc on line 9
![]()
il codice è il seguente:
newuser_form.php
<?php session_start(); ?>
<html>
<head>
<title>New User Form</title>
</head>
<body>
<p align='center'>
Please Enter your User Information:
</p>
<form action='create_user.php' method='post'>
<table align='center' width='100%' border='0'>
<tr>
<td width='30%'>User Name:</td>
<td>
<input type='text' size='30' name='username'/>
</td>
</tr>
<tr>
<td width='30%'>Password:</td>
<td>
<input type='password' size='30' name='password1'/>
</td>
</tr>
<tr>
<td width='30%'>Password (confirm):</td>
<td>
<input type='password' size='30' name='password2'/>
</td>
</tr>
<tr>
<td width='30%'>Full Name:</td>
<td>
<input type='text' size='30' name='fullname'/>
</td>
</tr>
<tr>
<td width='30%'>Email Address:</td>
<td>
<input type='text' size='30' name='emailaddr'/>
</td>
</tr>
<tr>
<td width='30%'>Birth Date:</td>
<td>
Year: <select name='year'>
<option value='--'> --
<option value='1999'>1999
<option value='1998'>1998
<option value='1997'>1997
<option value='1996'>1996
<option value='1995'>1995
<option value='1994'>1994
<option value='1993'>1993
<option value='1992'>1992
<option value='1991'>1991
<option value='1990'>1990
<option value='1989'>1989
<option value='1988'>1988
<option value='1987'>1987
<option value='1986'>1986
<option value='1985'>1985
<option value='1984'>1984
<option value='1983'>1983
<option value='1982'>1982
<option value='1981'>1981
<option value='1980'>1980
<option value='1979'>1979
<option value='1978'>1978
<option value='1977'>1977
<option value='1976'>1976
<option value='1975'>1975
<option value='1974'>1974
<option value='1973'>1973
<option value='1972'>1972
<option value='1971'>1971
<option value='1970'>1970
<option value='1969'>1969
<option value='1968'>1968
<option value='1967'>1967
<option value='1966'>1966
<option value='1965'>1965
<option value='1964'>1964
<option value='1963'>1963
<option value='1962'>1962
<option value='1961'>1961
<option value='1960'>1960
<option value='1959'>1959
<option value='1958'>1958
<option value='1957'>1957
<option value='1956'>1956
<option value='1955'>1955
<option value='1954'>1954
<option value='1953'>1953
<option value='1952'>1952
<option value='1951'>1951
<option value='1950'>1950
<option value='1949'>1949
<option value='1948'>1948
<option value='1947'>1947
<option value='1946'>1946
<option value='1945'>1945
<option value='1944'>1944
<option value='1943'>1943
<option value='1942'>1942
<option value='1941'>1941
<option value='1940'>1940
<option value='1939'>1939
<option value='1938'>1938
<option value='1937'>1937
<option value='1936'>1936
<option value='1935'>1935
<option value='1934'>1934
<option value='1933'>1933
<option value='1932'>1932
<option value='1931'>1931
<option value='1930'>1930
</select>
Month: <select name='month'>
<option value='--'> --
<option value='01'>01
<option value='02'>02
<option value='03'>03
<option value='04'>04
<option value='05'>05
<option value='06'>06
<option value='07'>07
<option value='08'>08
<option value='09'>09
<option value='10'>10
<option value='11'>11
<option value='12'>12
</select>
Day: <select name='day'>
<option value='--'> --
<option value='01'>01
<option value='02'>02
<option value='03'>03
<option value='04'>04
<option value='05'>05
<option value='06'>06
<option value='07'>07
<option value='08'>08
<option value='09'>09
<option value='10'>10
<option value='11'>11
<option value='12'>12
<option value='13'>13
<option value='14'>14
<option value='15'>15
<option value='16'>16
<option value='17'>17
<option value='18'>18
<option value='19'>19
<option value='20'>20
<option value='21'>21
<option value='22'>22
<option value='23'>23
<option value='24'>24
<option value='25'>25
<option value='26'>26
<option value='27'>27
<option value='28'>28
<option value='29'>29
<option value='30'>30
<option value='31'>31
</select>
</td>
</tr>
</table>
<input type='submit' value='Create Account'/>
</p>
</form>
</body>
</html>
create_user.php
<?php
require_once('user_manager.inc');
require_once('errors.inc');
//
// 1. in the interest of brevity, we're going
// to omit a few of the security features suggested in
// Chapter 15: "Cookies and Sessions".
//
session_start();
//
// 2. Validate full input.
//
$uname = isset($_POST['username']) ? $_POST['username'] : '';
$pw1 = isset($_POST['password1']) ? $_POST['password1'] : '';
$pw2 = isset($_POST['password2']) ? $_POST['password2'] : '';
$fname = isset($_POST['fullname']) ? $_POST['fullname'] : '';
$email = isset($_POST['emailaddr']) ? $_POST['emailaddr'] : '';
$year = isset($_POST['year']) ? intval($_POST['year']) : 0;
$month = isset($_POST['month']) ? intval($_POST['month']) : 0;
$day = isset($_POST['day']) ? intval($_POST['day']) : 0;
//
// a. mandatory values.
//
if ($uname == '' or $fname == '' or $pw1 == '' or $pw2 == '')
{
throw new InvalidInputException();
}
//
// b. values are sane.
//
$usermgr = new UserManager();
if (!$usermgr->isValidUserName($uname))
{
throw new InvalidInputException();
}
// are passwords the same?
if ($pw1 != $pw2)
{
throw new InvalidInputException();
}
// is date sane-ish?
if (!checkdate($month, $day, $year))
{
throw new InvalidInputException();
}
// data are okay!
//
// 3. Create the Account
//
$usermgr = new UserManager();
$usermgr->createAccount($uname, $pw1, $fname,
$year, $month, $day);
//
// 4. redirect user to login page.
//
header('Location: login.php');
?>