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>   </td> <td> <?php echo $fName ?> </td> </tr> <tr> <td> Last Name: </td> <td>   </td> <td> <?php echo $lName ?> </td> </tr> <tr> <td> Address: </td> <td>   </td> <td> <?php echo $address ?> </td> </tr> <tr> <td> State: </td> <td>   </td> <td> <?php echo $statedropdown ?> </td> </tr> <tr> <td> Zip: </td> <td>   </td> <td> <?php echo $zip ?> </td> </tr> <tr> <td> Telephone: </td> <td>   </td> <td> <?php echo $phone ?> </td> </tr> <tr> <td> E-mail: </td> <td>   </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):
如果未启用/安装cURL,这可能无法正常工作:如何检查curl是启用还是禁用。在这种情况下,将需要使用
如果您在本地运行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"等)即可获得大量资源。
如果这不是您所需要的,请更新您的问题。