STATIC 及global variable 可不可以並???

edited 十月 2013 in PHP新手區
@ 好明顯這個輸入長度一定長過十而且是非英文未或數字而且應該給出 名字長度超過十位 名稱只能是英文字或數字 等錯誤的信息但最後都只出現名稱只能是英文字或數字,我曾經試過global static $total_message;及static global $total_message;但都給出錯誤信息
<html>
<head><title>YouthGroup</title><meta http-equiv="Content-Type" content="text/html; charset=BIG5" /></head>
<body>
<?
static $total_message="";
function check_userinput($username)
{
if(strlen($username = trim($username)) == 0)
{
setmessage("你沒有輸入任何名稱");
}
else if(strlen($username = trim($username)) >10)
{
setmessage("名字長度超過十位");
}
else if(!eregi("^([0-9a-z])*$", $username))
{
setmessage("名稱只能是英文字或數字");
return 0;
}
}
//////////
function register_user($username)
{
if(check_userinput($username,$password)&&check_exists_user($username)==1)
{
echo"成功注冊";
}
else
{
echo"注冊失敗";
}
}
///////////
function setmessage($message)
{
global $total_message;
$total_message=$total_message.$message;

}
if($_POST["submit"]<>"")
{
$something=register_user($_POST);
}
?>

<form action="mainpage.php" method="post" name="form">
Username <input name="username" type="text" size="20"><?php echo $total_message;?><br>
password <input name="passwrod" type="password" size="10"><br>
<input name="submit" type="submit" value="submit">
</form>
</body>
</html>

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=4526

評論

  • edited 九月 2009
    如果目的是想限制10碼加上maxlength="10"就可以限制住了,
    Username <input name="username" type="text" size="20" maxlength="10">

    而要完成你所說的機能,把判斷式else if 的else拿掉就可以了,
    static $total_message="";
    function check_userinput($username)
    {
    if(strlen($username = trim($username)) == 0)
    {
    setmessage("你沒有輸入任何名稱");
    }
    if(strlen($username = trim($username)) >10)
    {
    setmessage("名字長度超過十位");
    }
    if(!eregi("^([0-9a-z])*$", $username))
    {
    setmessage("名稱只能是英文字或數字");
    }
    return 0;
    }

    因為else if是當前一個條件不成立時才會執行,
    所以用else if的話,只要滿足了超過10位的條件後,
    他就不會再往下走了...
    (PS.小弟也是新手還請其他的大大補充)
  • edited 九月 2009
    1. static $total_message=""; 不需要 static
    2. strlen($username = trim($username)) 不需要 $username =
    3. check_userinput($username,$password) $password 不知道哪裡來的
    4. 如果希望所有的錯誤都產生提示,參考 shiang 的回應

    也許你已經混淆了物件導向與一般流程形式的程式,建議可以多找些範例程式去閱讀、操作
  • edited 九月 2009
    多謝大家熱心幫忙但問題解決了,下邊是修正了的function
    <html>
    <head><title>YouthGroup</title><meta http-equiv="Content-Type" content="text/html; charset=BIG5" /></head>
    <body>
    <?
    $total_count_error=0;
    $save_password="";
    $save_username="";
    $user_message="";
    $password_message="";
    $fail=true;



    function check_userinput($username,$password)
    {
    global $total_count_error;
    static $count_error;
    if(strlen($username = trim($username)) == 0)
    {
    setusermessage("你沒有輸入任何名稱");
    $count_error++;
    }
    if(strlen($username = trim($username)) >10)
    {
    setusermessage("名字長度超過十位");
    $count_error++;
    }
    if(!eregi("^([0-9a-zA-Z])*$", $username))
    {
    setusermessage("名稱只能是英文字或數字");
    $count_error++;
    }
    if(strlen($password = trim($password)) == 0)
    {
    setpasswordmessage("你沒有輸入任何密碼");
    $count_error++;
    }
    if(strlen($password = trim($password)) >20)
    {
    setpasswordmessage("密碼長度超過20");
    $count_error++;
    }
    if($count_error>0)
    {
    $total_count_error = $count_error;
    }
    }


    if(isset($_POST))
    {
    global $save_username;
    global $save_password;
    $save_username = $_POST;
    $save_password = $_POST;
    register_user($_POST,$_POST);
    }
    ?>

    <form action="mainpage.php" method="post" name="form">
    Username <input name="username" type="text" size="20" value="<?php display_reg_username(); ?>"><?php echo $user_message;?><br>
    password <input name="password" type="password" size="20"><?php echo $password_message;?><br>
    <input name="register" type="submit" value="register">
    </form>

    </body>
    </html>
Sign In or Register to comment.