将文本从表单转换为int

我试图从表单中获取一些数据,但我不能出于某种原因。 这里是我的代码的一些行。

cellphone: <input type = "text" name = "cellphone"><br />
username : <input type = "text" name = "username"><br />

    $cellphone = $_GET["cellphone"];
    //$cellphone = int() $cellphone;
    $username= $_GET["username"];

$link = mysql_connect('myhost', 'myuser', 'mypass') or die("could not connect to database");
    mysql_select_db ('hunter',$link) or die ("could not find database");
    echo "fetced database";
    //injecting user info into database
    mysql_query("INSERT INTO player values ('','$firstname','$lastname','$location','$cellphone','$username','$email','$password')")or die("could not inject into database.");

但由于某些原因,我无法获取单元号码进入我的数据库。 请帮助我:D


第一:
你应该清理所有传入的变量!

那么,要转换为整数,您可以使用:

$cellphone = (int) $_GET["cellphone"];

更好的解决方案是使用filter_var();

$cellphone = filter_var( $_GET["cellphone"], FILTER_VALIDATE_INT);

在编写任何进一步的代码之前,你应该阅读关于输入验证/ sanitazion和filter_var。


现在,在人们开始建议mysql_real_escape_string() (做这项工作,但不是最好的解决方案)之前,请通过PDO或MySQLi


  • 使您的表单POST方法,而不是GET。 GET用于请求数据和POST进行存储。
  • 考虑为电话号码使用varchar类型字段。
  • 尽管在插入之前规范一个电话号码是一个非常好的主意,通过从中删除所有非数字字符。

  • 用die(mysql_error())替换die(“msg”)以调试失败的原因
  • 不要直接将用户提供的数据插入到数据库中,请使用mysql_real_escape_string()或类似方法来清理数据并防止SQL注入
  • 如果问题在于phone字段在数据库中声明为int,那么在执行插入之前应确保它是整数。 您可以尝试转换为int,但我认为您应该对数据执行一些更准确的清理,检查每个字段的预期“允许”格式和类型,并在错误插入的情况下向用户返回每个字段的错误
  • 顺便说一下,如果您将电话号码存储为整数,则无法很好地处理国际前缀(例如意大利语为+39或0039),因为“+”不是数字,“00”将在转换为整数....

    链接地址: http://www.djcxy.com/p/21881.html

    上一篇: converting text to int from a form

    下一篇: Are there any security vulnerabilities in this PHP code?