Jump to content

[SOLVED] Call to functions.php returns strange answer...


DEVILofDARKNESS

Recommended Posts

I have this piece of script:

include './functions.php';
//...
}elseif(isset($_POST['page31'])){
$nationname = $_POST['nationname'];
$username = $_POST['username'];
nation_check($nationname,$username);
if($error == "AA"){
	$_SESSION['nationname'] = $nationname;
	$_SESSION['username'] = $username;
	$_SESSION['pass'] = $_POST['password'];
	header('location:./register.php?page=41');
	exit();
}elseif($error == "NNA"){
	$nationNA = "NationName is already in use";
}elseif($error == "NNNA"){
	$nationNA = "NationName is not allowed";
}elseif($error == "UNA"){
	$userNA = "UserName is already in use";
}elseif($error == "UNNA"){
	$userNA = "UserName is not allowed";
}else{
	echo "<script type='text/JavaScript'>alert('UnKnown Error!?')</script>;";
}
//...
case 31:
    if($prev == '2'){
        echo "<form action='' method='POST'>";
        echo "Nation Name: <input type='text' name='nationname'><br>" . $nationNA;
        echo "User Name: <input type='text' name='username'><br>" . $userNA;
echo "Password: <input type='password' name='password'><p>";
echo "<input type='submit' name='page31' value='GO ON'>";
        echo "</form>";
        $_SESSION['prev'] = 31;
    }else{
        echo "Please Start From Page 1";
    }
break;

 

and functions.php

<?php
function nation_check($nationname,$username){
$error = "AA"; // All Allowed
if (preg_match("/^[A-Z][a-zA-Z]*$/", $nationname, $matches)) {
	$query = "SELECT nation_id FROM nations WHERE nation_name = '$nationname'";
	$result = mysql_query($query);
	if(mysql_num_rows($result) == 1){
		$error = "NNA"; // Nation Not Avaible
	}
}else{
	$error = "NNNA"; // Nation Name Not Allowed
}
if (preg_match("/^[A-Za-z][a-zA-Z0-9_]*$/", $nationname, $matches)) {
	$query = "SELECT user_id FROM users WHERE user_name = '$username'";
	$result = mysql_query($query);
	if(mysql_num_rows($result) == 1){
		$error = "UNA"; // User Not Avaible
	}
}else{
	$error = "UNNA"; // User Name Not Allowed
}
}
?>

 

if I insert in every field of the form the string: "peer" it give's me the javascript pop-up telling their is an unknown error :(

I really dunno why, I should get at least one $error from the functions.php

It looks like a scope issue.  $error is defined within your function's local scope, so it's unavailable to any higher level of scope.  A quick fix would be to modify your function to return $error.  You can then assign that error to a variable in the higher scope.  Using code -

 

The end of nation_check:

 

return $error;

 

Inside your if-conditional:

 

$error = nation_check($nationname, $username);

 

If that doesn't fix it, print_r $error so you can see what's inside of it.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.