关于html:MySQL数据库/ PHP-从脚本生成100个联系人

MySQL Database/PHP - Generate 100 contacts from a script

好吧,我现在大部分代码都在工作。 该应用程序的重点是将信息从联系表存储到文本文件中。 因此,基本上,该应用程序的重点是接受用户输入的信息,将信息存储在文本文件中,并允许用户返回首页。

它不一定是生成联系人的脚本,它可以是PHP,Bash,Script,HTML等。我只是不知道该怎么做!

这是我到目前为止的代码,如果需要一些输入,我只需要帮助即可随机生成100个联系人,而无需手动输入:)

HTML代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<form action="Registered.php" method="post">
     <p>

        <label>First Name:</label>
        <input name="fName" type="text">
   
</p>
    <p>

        <label>Last Name:</label>
        <input name="lName" type="text">
   
</p>
    <p><center>[wp_ad_camp_2]</center></p><p>

        <label>Address:</label>
        <input name="address" type="text">        
   
</p>
    <p>

        <label>State:</label>
        <select name="statedropdown">
<option value="Al"> Al </option>
<option value="AK"> AK </option>
<option value="AS">AS</option>
<option value="AR">AR</option>
<option value="CA">CA</option>
<option value="CO">CO</option>
<option value="CT">CT</option>
<option value="DE">DE</option>
<option value="DC">DC</option>
<option value="FL">FL</option>
<option value="GA">GA</option>
<option value="HI">HI</option>
<option value="ID">ID</option>
<option value="IL">IL</option>
<option value="IN">IN</option>
<option value="IA">IA</option>
<option value="KS">KS</option>
<option value="KY">KY</option>
<option value="LA">LA</option>
<option value="ME">ME</option>
<option value="MD">MD</option>
<option value="MA">MA</option>
<option value="MI">MI</option>
<option value="MN">MN</option>
<option value="MS">MS</option>
<option value="MO">MO</option>
<option value="MT">MT</option>
<option value="NE">NE</option>
<option value="NV">NV</option>
<option value="NH">NH</option>
<option value="NJ">NJ</option>
<option value="NM">NM</option>
<option value="NY">NY</option>
<option value="NC">NC</option>
<option value="ND">ND</option>
<option value="OH">OH</option>
<option value="OK">OK</option>
<option value="OR">OR</option>
<option value="PA">PA</option>
<option value="RI">RI</option>
<option value="SC">SC</option>
<option value="SD">SD</option>
<option value="TN">TN</option>
<option value="UT">UT</option>
<option value="VT">VT</option>
<option value="VA">VA</option>
<option value="WA">WA</option>
<option value="WV">WV</option>
<option value="WI">WI</option>
<option value="WY">WY</option>
</select>      
   
</p>
    <p>

        <label>ZIP Code:</label>
        <input name="zip" required="required" placeholder="12345" type="text">        
   
</p>
    <p>

        <label>Email:</label>
        <input name="email" required="required" placeholder="[email protected]" type="email">
   
</p>
    <p>

        <label>Phone Number:</label>
        <input name="phone" required="required" placeholder="912-555-1234" type="text">
   
</p>
    <p><center>[wp_ad_camp_3]</center></p><p>

        <input value="Submit" type="submit">
        <input type="reset" value="Reset">
 
</p>
    <p>

        <td align="center"> View contacts in database </td>
   
</p>
    <p>

        <td align="center"> View contacts in file </td>
   
</p>
</body>
</html>

PHP代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
 <html>    
   <head>
       Thank You
   </head>
   <body>
   <?php
            $username="tp2283";
            $password="tootandnut";
            $database="tp2283";

                #declare variables
               $fName = $_POST['fName'];
                $lName = $_POST['lName'];
                $address = $_POST['address'];
                $statedropdown = $_POST['statedropdown'];
                $zip = $_POST['zip'];
                $phone = $_POST['phone'];
                $email = $_POST['email'];
                $DOCUMENT_ROOT = $SERVER['DOCUMENT_ROOT'];


                mysql_connect(localhost,$username,$password);
                mysql_select_db($database) or die("Unable to select database");
                //$query ="SELECT * FROM contacts";
                //$result = mysql_query($query);
                //$num = mysql_num_rows($result);

$sql = mysql_query("SELECT * FROM contacts");
$file ="FormData.txt";
$fh = fopen($file, 'a') or die("can't open file");

while($row = mysql_fetch_array($sql)){
  $username = $row['user'];
  $password = $row['pass'];

  $accounts ="$username:$password\
"
;

  fwrite($fh, $accounts);
}  
                mysql_close();
    fclose($fh);

?>
      <h1 align ="center"> Thanks for Registering!  <br /><br />
         <p align ="center"> Your information is:
</p>
            <table align ="center">
               <tr>
                  <td> First Name: </td>
                  <td> &nbsp </td>
                  <td> <?php echo $fName ?> </td>
               </tr>
               <tr>
                  <td> Last Name: </td>
                  <td> &nbsp </td>
                  <td> <?php echo $lName ?> </td>
               </tr>
               <tr>
                  <td> Address: </td>
                  <td> &nbsp </td>
                  <td> <?php echo $address ?> </td>
               </tr>
               <tr>
                  <td> State: </td>
                  <td> &nbsp </td>
                  <td> <?php echo $statedropdown ?> </td>
               </tr>
               <tr>
                  <td> Zip: </td>
                  <td> &nbsp </td>
                  <td> <?php echo $zip ?> </td>
               </tr>
               <tr>
                  <td> Telephone: </td>
                  <td> &nbsp </td>
                  <td> <?php echo $phone ?> </td>
               </tr>
               <tr>
                  <td> E-mail: </td>
                  <td> &nbsp </td>
                  <td> <?php echo $email ?> </td>
               </tr>
            </table>

<?php
    $outputstring =
    "First Name: $fName \

     Last Name: $lName \

     Address: $address \

     State: $statedropdown \

     Zip: $zip \

     Telephone: $phone \

     Email: $email \

     -----------------------\
"
;

    file_put_contents("FormData.txt", $outputstring, FILE_APPEND | LOCK_EX);

?>
      <p align="center"> Return to Main Page  
</p>
      <p align="center"> View Contacts in Database  
</p>
   </body>
</html>


太...我知道已经有答案了,但是我决定对此做一点乐趣。

我的方法使用cURL和PHP并通过HTTP发布到表单。这样,您不仅可以测试SQL模式,还可以测试您的PHP代码是否也正常工作。我还想获得某种真实世界的数据。每次都会打开和关闭curl会话(不会重复使用同一会话)。无论如何,就像我说的那样,只是为了好玩:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php

$numPosts = 100;
$sleep = 0.1; // seconds
$postUrl = 'http://web-students.armstrong.edu/~tp2283/Registered.php';

$firstNames = array(
    'Bill','William','Joe','Bob','David','Jerome','Shane','Matt','Michael','Andrew',
    'Sally','Sue','Courtney','Olya','Kristin','Theresa','Cheri','Melony','Alex','Cindy'
);

$lastNames = array(
    'Smith','Dobson','Johnson','Zammit','Brown','Jones','Miller','Garcia','Wilson','Martinez',
    'Anderson','Taylor','Thomas','Moore','Martin','Jackson','Lopez','Lee','Harris','Clark'
);

$streets = array(
    'Central Ave','Broadway','1st St','2nd St','3rd St','Washington St',
    'Jefferson Ave','Woodcreek Blvd','Pines Dr','Big Cr','Tennis Ct'
);

$stateList = array(
    'AL','AK','AZ','AR','CA','CO','CT','DE','DC','FL','GA','HI','ID','IL','IN','IA','KS','KY',
    'LA','ME','MD','MA','MI','MN','MS','MO','MT','NE','NV','NH','NJ','NM','NY','NC','ND','OH',
    'OK','OR','PA','RI','SC','SD','TN','TX','UT','VT','VA','WA','WV','WI','WY'
);

$domains = array(
    'yahoo.com','mail.com','gmail.com','example.net','host.org',
    'stuff.im','aol.com','hostmail.com','msn.com'
);

for ( $i = 0; $i < $numPosts; $i++ ) {
    $data = array(
        'fName' => generateFirst(),
        'lName' => generateLast(),
        'address' => generateStreet(),
        'statedropdown' => generateState(),
        'zip' => generateZip(),
        'email' => generateEmail(),
        'phone' => generatePhone()
    );
    $result = postData($postUrl,$data);
    var_dump($result);
    usleep($sleep/1000000);
}

function postData($url,$data) {
    $ch = curl_init();
    $opts = array(
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => false,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => $data,
        CURLOPT_URL => $url
    );
    foreach ( $opts as $key => $value ) {
        curl_setopt($ch,$key,$value);
    }
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

function generateFirst() {
    global $firstNames;
    return $firstNames[array_rand($firstNames)];
}

function generateLast() {
    global $lastNames;
    return $lastNames[array_rand($lastNames)];
}

function generateStreet() {
    global $streets;
    $houseNumber = mt_rand(1,3000);
    $street = $streets[array_rand($streets)];
    return $houseNumber.' '.$street;
}

function generateState() {
    global $stateList;
    return $stateList[array_rand($stateList)];
}

function generateZip() {
    return str_pad(mt_rand(0,99999),5,'0',STR_PAD_LEFT);
}

function generateEmail() {
    global $domains;
    $randomCharacters = md5(mt_rand());
    $firstIndex = mt_rand(3,7); // length
    $user = substr($randomCharacters,0,$firstIndex);
    $domain = $domains[array_rand($domains)];
    return $user.'@'.$domain;
}

function generatePhone() {
    $areacode = mt_rand(100,999);
    $first3 = mt_rand(100,999);
    $last4 = mt_rand(1000,9999);
    return $areacode.'-'.$first3.'-'.$last4;
}

?>

它分为功能,因此,如果您还想考虑服务器端表单验证,则应该很容易就输入格式添加随机方差。

我还添加了一个睡眠时间(以秒为单位,但使用usleep则以微秒为单位),以免使服务器超载...。我想,如果您分发了它,则还可以进行性能测试。

用法(针对OP):

  • 创建一个名为populate.php的新文件/空白文件
  • 复制本文中的代码内容(包括?>标记)并粘贴到populate.php文件中
  • 为了测试,将$numPosts(当前为100)的值更改为2$numPosts = 2;
  • 如果您远程访问服务器web-students.armstrong.edu(通过FTP,SCP,浏览器中的文件管理系统等),则将populate.php文件上传到目录(?tp2283)。根据软件和配置的不同,此目录可以隐藏,在这种情况下,只需上载到最顶层的目录即可。
  • 在浏览器中,导航到http://web-students.armstrong.edu/~tp2283/populate.php
  • 等待脚本完成...
  • 请注意输出:它应该是Registered.php页面中的HTML标记两次(对于每个$numPosts
  • 成功后,将$numPosts更新为100(在本地编辑,然后根据需要重新上传并覆盖)
  • 在浏览器中刷新http://web-students.armstrong.edu/~tp2283/populate.php页面。现在,您应该具有Registered.php x100中的HTML。
  • 检查您的数据库,应该有102(2 + 100)个新条目。
  • 如果未启用/安装cURL,这可能无法正常工作:如何检查curl是启用还是禁用。在这种情况下,将需要使用file_get_contents的其他方法,在这种情况下,只有在启用allow_url_fopen的情况下,该方法才有效。

    如果您在本地运行PHP,则始终可以更改/更新这些功能以启用该功能。这些细节不在此问题的范围内。


    请使用PHP Faker为您生成假数据。您可以在@ https://github.com/fzaninotto/Faker找到此PHP库。该链接指导您如何根据需要安装和使用更高级,更广泛的功能。

    借助该库,您可以立即生成尽可能多的数据。

    以下是其用法的摘要-

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php

    require_once 'vendor/autoload.php';

    $faker = Faker\\Factory::create();
    $person = new Faker\\Provider\\en_US\\Person($faker);
    $address = new Faker\\Provider\\en_US\\Address($faker);
    /* You can loop as many times the data you want to generate */
    foreach(range(1,10) as $i){
        echo $person->titleMale(),'.',$person->name('male'),'<br/>';
    }

    假设您要提供100个虚假联系人进行测试...

    一个基本的循环就可以做到

    1
    2
    3
    4
    5
    6
    <?php
    for($i = 0; $i < 100; $i ++)
    {
        mysql_query("INSERT INTO `contacts` (`first_name`, `email`, `etc`) VALUES ('someone".rand(0,999)."','someone".rand(0,999)."@test.com','etc')");
    }
    ?>

    显然,这依赖于打开的连接,并且插入了您的实际字段。无需麻烦转义任何内容,因为这只是脚本生成的测试数据,对吗?

    强制性声明:mysql_函数已弃用。切换到mysqli或PDO。仅通过简单的Google搜索(例如" mysqli_connect"等)即可获得大量资源。

    如果这不是您所需要的,请更新您的问题。