2011-05-23 3 views
0

Я создаю регистрационную форму для списка рассылки. После отправки формы я хотел бы зарегистрировать все данные в базе данных и затем «повторно отправить» данные на другую страницу, чтобы зарегистрировать пользователя в списке рассылки.Как отправить форму на две разные страницы

Я знаю, как зарегистрировать все данные в базе данных, однако я не знаю, как «повторно отправить» данные на другую страницу.

Для чего это необходимо? Это необходимо, потому что я использую GNU Mailman как систему списков рассылки. Это программное обеспечение сохраняет только имя, адрес электронной почты и пароль, поэтому я не могу создать регистрационную форму с настраиваемыми полями, такими как «Страна», «Город» и «Пол».

ответ

4

Вы можете написать скрипт, который использует CURL, чтобы обработать запрос HTTP и отправить его на 2-й сценарий

/* 
     get your data from db and put it into an associated array: 

     $post_array['name] = $row['name']; 
     $post_array['country] = $row['country']; 

     ..and so on 

    */ 

    //serialize the post array into a string 
    foreach($post_array as $key=>$value) { $fields .= $key.'='.$value.'&'; }   
    rtrim($fields,'&'); 

    $ch = curl_init(); 

    curl_setopt($ch,CURLOPT_URL, 'http://domain.com/script.php'); 
    curl_setopt($ch,CURLOPT_POST,count($post_array); 
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); 


    $response= curl_exec($ch); //submit it.. 
    $httpCode= curl_getinfo($ch, CURLINFO_HTTP_CODE); //use $httpCode to figure out if it was successful (200) or not. 
+0

Curl - приятное решение, как правило, я бы это сделал. Однако для более низкотехнологичного решения используйте запрос Ajax для отправки mailman, а при его обратном вызове - отправьте основную форму. –

+0

Но как это сделать? Можете ли вы привести мне пример? –

+0

Майкл, ты фрилансер? Не могли бы вы поделиться фрагментом кода, объясняющим это? Я был бы рад заплатить вам за предоставление этого кода. –

0

мой простой попробовать. первой страницы, где форма представить

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<form action="" method="post"> 
<input type="text" name="email"/> 
<input type="text" name="name"/> 
<input type="submit" value="registration" name="register" /> 
</form> 

<?php 

//connection with database. 
$conn=mysql_connect("localhost","root",""); 

mysql_select_db("test"); 

//check if form submitted 
    if(isset($_POST['register'])) 
    { 
    $result=mysql_query("INSERT INTO testdata(name,email) values('".$_POST['name']."','".$_POST['email']."')") or die(mysql_error()); 

if(mysql_affected_rows($conn)>0) 
{ 
    echo "Done"; 

$url = 'http://localhost/TESTCODE/get-post.php'; 

$fields = array(
     'name'=>urlencode($_POST['name']), 
     'email'=>urlencode($_POST['email'])   
     ); 


    /* on my install of PHP 5.3, http_build_query() seems to use &amp; as the default separator. */ 



    $fields_string=http_build_query($fields); 



    //open connection 
    $ch = curl_init(); 


    //set the url, number of POST vars, POST data 
    curl_setopt($ch,CURLOPT_URL,$url); 

curl_setopt($ch,CURLOPT_POST,count($fields)); 

    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); 

//execute post 

$result = curl_exec($ch); 

//close connection 

curl_close($ch); 

} 
} 
?> 

</body> 
</html> 

и вторая страница получить-post.php, где снова я представил форму через завиток

<?php 
$conn=mysql_connect("localhost","root",""); 
mysql_select_db("test"); 
$result=mysql_query("INSERT INTO testdata(name,email)  values('".$_POST['name']."','".$_POST['email']."')") or die(mysql_error()); 
    ?> 

я просто сделал это для простой checking.you следует изменить, как вам нужно , здесь я вставил данные два раза на две разные страницы

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

  • Нет связанных вопросов^_^