Yasuo, the function you call is > $msg = user_regist(); while in regist_util.inc, the function defined is > function regist_user() { Could that be the problem? Do you see any errors about undefined functions? Cheers, Ben Yasuo Ohgaki wrote: > > This is really strange. PHP fails to exit / die form script after include / > require / include_once / required_once (I tested with all of them, same > result). > In addition to this, script gets started again automatically from the > beginning. > (You probably think this is a another newbie mistakes, but I think it is > not) > > Does anyone have the same experience? > I'm asking to decide if this is worth to report as a bug. If anyone does not > have this problem but me. I'll just leave it alone. (I cannot reproduce this > with simple script anyway) > > I cannot reproduce this behavior with simple script, but it does every time > on my script. > > PHP 4.0.4pl1 with PostgreSQL, mhash, mcript, gd, and others > Apache 1.3.17 (mod_php, mod_gzip, mod_ssl and others) > RedHat Linux7.0.1/ja > (Apache and PHP are build from source) > > My code does as follows > > In user registration form (regist.php) > - require_once() to include registration function > - call registration function > - if the function does not exit, display HTML in this registration file. > regist.php looks like > ------------ > <?php > require_once('regist_util.inc'); > > $msg = user_regist(); // defined in regist_util.inc > > ?> > <html> > <form method=post action=regist.php> > <?php @print($msg); // print errors for users' inputs if there is ?> > ........................ > <input type="text" name="username"></input> > <input type="text" name="email"></input> > ........................ > </html> > ------------- > > regist_util.inc does <= THIS FILE HAS PROBLEM > - check if there is the same user name is registered > - if there is, return 'Choose other name' error (or other error) > - if not, insert user data into database and send notify email, include > other html file > to show user registered successfully. Then exit script. > regist_util.inc looks like > -------------- > <?php > function regist_user() { > global $HTTP_POST_VARS; > $error = array(); > // check inputs add errors, add error like $error[] = 'Error1'; $error[] = > 'Error2'; > // check database > $db = pg_pconnect(); > $qid = pg_exec("select * from user where username = '". > $HTTP_POST_VARS['username'] ."'"); > if (pg_numrow($qid) > 0) { > $error[] = 'Choose other name'; > } > if (count($error) == 0) { > // INSERT DATA - data is inserted if username is new > ......................... > // SEND EMAIL - mail is sent if username is new > ....................... > <= **** if I put die() or exit() BEFORE include PHP exits from script as > expected. **** > // include HTML file (with just a little PHP code) > include('registered.php'); <= **** THIS IS NOT DISPLAYED AT ALL ****** > // If I remove include(), it exits from script. > exit; <= ************* DOES NOT EXIT or DIE HERE ************* > > // Script seems start from the beginning. It shows 'Choose other name' error > and > // there is the data newly creating in database, even if the user table is > empty. > // Because data with the username was inserted at 1 first time script > iteration. > // For the second time, script finds the username (of course) and return > 'Choose > // other name' error. > > // Since I did get ANY additional HTML, but HTML codes in regist.php when > // this happened, I thought it might something to do with 'ob_gzhandler'. I > // disabled it. But no difference. This makes difficult to find out what PHP > is > // doing, now I'm sure PHP is executing the scripts TWICE. > // Reason: > // 1) There will be a new db table row every time I use new username. > // 2) I get notification email every time I use new username. > // (I thought PHP never buffer outputs unless user explicitly to do so) > > // If I redirect, it works as expected.... I would rather not to show > registered.php, since > // user does not have to access this page directly. (I can work around this > with different > // way, so I will do so) > > // By the way, I use EUC-JP code, which is multi-byte char code set, in > scripts > // and HTML part, etc. EUC-JP supposed to work well for many programs > written > // for single byte char code set. However, it might something to do with > char code. > // I'm using. So far, I didn't have problems. May be this is the first time. > (I haven't > // investigated yet) > } > } > --------------- > > registered.php looks like > -------------- > <html> > <body> > You have been registered to this web site<br> > username = <?php @print($HTTP_POST_VARS['username']; ?><br> > .......................... > </body> > </html> > --------------- > > -- > Yasuo Ohgaki > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > To contact the list administrators, e-mail: [EMAIL PROTECTED] -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]