2013-09-13 3 views
0
$name = trim(&$_POST['name']); 

Почему обрезка этого способа не сработает? Я следовал учебнику, он положил & знак до $_POST['name'], который я не был уверен, что это за .. У меня ошибка, когда она равна $ name = $_POST['name'];

это следующие строки кода

if($name && $email && $password && $cpassword){ 
     mysql_connect("127.0.0.1","root","") or die("Fail to connect to database"); 
     mysql_select_db("reglog"); 

     mysql_query("INSERT INTO users(username,email,password) VALUES('$name','$email','$cpassword')"); 
     echo 1; 
}else{ 
    echo "not allowed"; 
} 

с помощью $name = trim(&$_POST['name']);

Я не получаю 1 значение возврата к моему АЯКСУ данным

здесь мой JS

$("#send").click(function(){ 
    var all = $("form").serialize(); 
    if(validateName() & validateEmail() & validatePass1() & validatePass2() == true){ 
     $.ajax({ 
      type: "post", 
      url: "insert.php", 
      data: all, 
      success: function(data){ 
       if(data==1){ 
        alert("success, you have registered"); 
       }else{ 
        alert('Validate your form with correct informations to proceed!'); 
       } 
      } 
     }); 
    } 
}); 
+1

какая ошибка вы получили за $ _POST ['name']; –

+0

Возможно, это потому, что я не использую форму submit для отправки данных, я использовал только кнопку, а затем связываюсь с ajax для отправки –

+0

Поскольку '$ _POST ['name']' пуст. – davidkonrad

ответ

0

при использовании $("form").serialize(), вы создаете строку в формате, как это:

a=1&b=2&c=3&d=4&e=5&name=some_name 

Так, чтобы получить name в PHP стороне вам нужно сделать domething как:

$data = array(); 
parse_str($_POST, $data) 
//do 
print_r($data);// to see how you get the `POST` data 

или использовать $('form').serializeArray() , такие как

var all = $("form").serializeArray(); 

и в PHP

$name = $_POST['name']; 
+0

поэтому в заключение никогда не используйте .serialize() lol –

+0

thx so much !!!! –

+0

добро пожаловать ..) –

0

Какая ошибка вы получили, когда вы использовали $ name = trim ($ _ POST ['name']);

Синтаксис совершенен.

+0

это комментарий не ответ –

+0

он просто не работает .. если ($ имя && $ && $ электронная почта пароль && $ cpassword) { \t \t mysql_connect ("127.0.0.1",» root "," ") или die (" Fail to connect to database "); \t \t mysql_select_db ("reglog"); \t \t mysql_query («INSERT INTO users (username, email, password)» VALUES ('$ name', '$ email', '$ cpassword') "); \t \t echo 1; } else { \t echo "not allowed"; } Функция обратного вызова ajax не получает значение 1 .. –

+0

Добавьте эту проверку .... if (isset ($ _ POST ['name']) && $ _POST ['name']! = "") { } –

0

Это хорошая идея, чтобы попробовать и всегда использовать isset() первые, чтобы избежать ошибок:

$name = isset($_POST['name']) ? trim($_POST['name']) : 'Some other value'; 

Лично я думаю, что это своего рода хромой, когда вы получите ошибку, особенно если $_POST['name']является множество. Но что угодно. ;)

0

&, в PHP, для аргументов, передаваемых по ссылке в функцию, так что значение, передаваемое изменения вне функции, как:

$whatever = 0; 
function referWhat(&$arg){ 
    $arg = 10; 
} 
referWhat($whatever); 

Теперь $whatever === 10.

+0

Что делать, если на улице есть более одной переменной, которая соответствует знаку & спереди? –

+0

Вы должны удалить '&' перед '$', если это не нужно. – PHPglue

0

попробуйте проверить набор переменных или не с пустыми()

$ имя = пусто ($ _ POST [ 'имя'])? 'some value': trim (& $ _POST ['name']);

Смежные вопросы