这里的PHP初学者。 我有以下表单脚本:
<?php
if (isset($_POST['name']) && isset($_POST['email']) && isset($_FILES['uploaded_file']['name'])) {
$db_name = "xx";
$server = "localhost";
$DBuser = "xxx";
$DBpass = "xxxx";
$name = $_POST['name'];
$email = $_POST['email'];
$file = "Imagini_lume/" . $email . ".jpg";
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Adresa de e-mail este incompleta!";
} else {
$name = trim($name);
if ($name != '') {
$temp_file = trim($_FILES['uploaded_file']['name']);
if ($temp_file != '') {
// here
mysql_connect($server, $DBuser, $DBpass) or die(mysql_error());
mysql_select_db($db_name) or die(mysql_error());
// check for existing
//$result = mysql_query("select email from Emails where email='$email'") or die(mysql_error());
$data = mysql_fetch_array($result);
if ($data == null) {
mysql_query("insert into Emails (Email,Full_Name,Image) values('$email','$name','$file');") or die(mysql_error());
if (move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file)) {
//sucess
} else {
echo "Eroare incarcare imagine!";
}
// email sending
sendEmail("xx@gmail.com", getContent($name, $email, $file));
echo "Sucessfull!";
//} else {
//echo "Adresa de e-mail este folosita de cineva.";
}
} else {
echo "Trebuie sa selectati desenul dvs.!";
}
} else {
echo "Introduceti numele complet!";
}
}} else {
echo "Va rugam sa completati spatiile de mai sus!";
}
注意:if (isset($_POST['name']) && isset($_POST['email']) && isset($_FILES['uploaded_file']['name'])) {
和} else {
echo "Va rugam sa completati spatiile de mai sus!";}
与上述不同的行。我只是添加了这种方式,所以我可以在“代码示例”中包含所有脚本。
问题是:
如果用户使用相同的名称和电子邮件地址上传多个文件,文件将覆盖,我想区分文件(例如“name@email.com1.jpg”,“name @ email” .com2.jpg“和”。 我已经找到了脚本但是作为初学者,我不知道在哪里插入以下代码(另一个注释 - 我不知道它是完整代码还是缺少某些脚本):
while(file_exists($name . $extension)) {
$name .= '1';
}
我想“强迫”用户输入它的全名。由于设计原因,我只有一个“全名”文本框,我想强制用户键入至少2个单词(名字和姓氏) - 基本上是一个单词最小nr,而不是字符nr。我再次找到了一个代码,但是,我仍然不知道如何将它应用到我的代码中,在哪里插入它:
if ($("#et_newpost_content").text().split(/\s+/).length < 250) {
alert('Message must be at least 250 words.')
}
请告知。
答案 0 :(得分:0)
好的,这很简单。增加图像名称计数器的第一个脚本实现起来非常简单:
1)
$db_name = "xx";
$server = "localhost";
$DBuser = "xxx";
$DBpass = "xxxx";
$name = $_POST['name'];
$email = $_POST['email'];
// Now checking the name existence
// Defining the initial state: the format is: my@email.com + counter + extension
// i.e. my@mail.com1.jpg
$ext = ".jpg";
$count = 1;
$base_file_name = "Imagini_lume/" . $mail;
// while already exists a file name like that, increment count
while (file_exists($base_file_name.$count.$ext))
$count++;
// finally define the official name of the file!
$file = $base_file_name.$count.$ext;
2)你写的代码是javascript(jquery),而不是php ...如果你想检查参数服务器端你可以使用filter_var:
if (filter_var($name, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[A-Z][a-z]* [A-Z][a-z]*/"))) === FALSE)
die("Error: You should enter your complete name. i.e. John Black");
(看一下关于php指南的正则表达式章节)
最后,请不要在真实的Web应用程序中使用该代码。正如它所写的,它在SQL注入攻击上并不安全:
此外,您没有检查每个用户输入参数的正确性。花点时间做一些经验;)