两件小事:
我使用这个PHP控制脚本将可选字段更新到数据库中:
if(strlen($nome) == ""){$_POST['nome'] = $nome_vecchio; }
elseif(strlen($nome) < 2 || strlen($nome) > 20 )
{echo('Se vuoi modificare il campo nome, assicurati che lo
stesso sia superiore ai 2 caratteri ed inferiore ai 20!</br>'); exit();}如果我删除脚本"Se vuoi modificare il campo nome.“在同一页中打印,但数据库填充错误信息。好像控制脚本只用于打印它,而不阻塞用户。这就好像控制脚本只会打印回显中包含的短语,我如何才能修复它呢?
如果(strlen($nome) ==“”){$_POST‘’nome‘= $nome_vecchio;}
不起作用:我希望如果用户想要更新的是名称,他必须插入一个包含2个字母和20个字母的单词,但是如果他不想更新该字段,他也不能填充它,而且数据库不应该覆盖任何内容,保留以前输入的名称(例如,在注册阶段),我如何做到这一点?
编辑:
谢谢您的回答,我尝试做@Michael方法和@Valkyrurr方法,但什么也没有做。
不管用!在errore.php页面中,我指出:
<?php
// Includo la connessione al database
require('config.php');
if(!isset($_SESSION['login']))
{ header('Location: login.php'); exit; }
echo('Se vuoi modificare il campo nome, assicurati che lo
stesso sia superiore ai 2 caratteri ed inferiore ai 20!<br>');
?>但它的比较:访问拒绝!错误403..。
和2.这个脚本:
$nome = trim($nome);
if (strlen($nome) == 0) {
$_POST['nome'] = $nome_vecchio;}用"“覆盖数据库中的字段。
为了更好地解释我在代码上的工作方式,我把我写的所有东西都发出去了,也许这是我从未见过的另一个错误,或者我从来没有像一个错误一样考虑过!我希望你能听懂我的意面英语!:)
if(isset($_POST['modifica_dati']))
{
$nome = $_POST['nome'];
$query_nome = mysql_query("SELECT nome FROM utenti WHERE id = '" . $_SESSION['login'] . "' LIMIT 1");
$row_nome = mysql_fetch_array($query_nome);
$nome_vecchio = $row_nome['nome'];
$nome = trim($nome); // Make sure there are no extra spaces at beginning or end
if(strlen($nome) == 0){$_POST['nome'] = $nome_vecchio; }
if(strlen($nome) < 2 || strlen($nome) > 20 )
{
header('Location: "errore.php"')
echo('Se vuoi modificare il campo nome, assicurati che lo
stesso sia superiore ai 2 caratteri ed inferiore ai 20!</br>'); exit();}
if (is_numeric($nome))
{echo('Se vuoi modificare il campo nome, assicurati che lo
stesso non cntenga numeri al suo interno!<br>'); exit();}
// verifico che il nome non contenga caratteri nocivi
elseif (!preg_match('/^[A-Za-z \'-]+$/i',$nome)) {
echo 'Il nome contiene caratteri non ammessi!<br>'; exit();}
}哪里不对?
发布于 2016-09-12 01:06:22
试试看:
if()语句,在echo exit()之前,发出一个重定向调用。就像这样,header('Location: "script_name_here.php"')strlen()返回一个int,因此将其与0而不是""进行比较。就像这样,if(strlen($nome) == 0){ }发布于 2016-09-12 05:20:29
在表单页面上显示消息可以通过几种方式完成。如果使用处理表单的脚本显示表单,则可以将消息放入变量中并在稍后显示。当然,您需要额外的代码来防止数据库被更改(比如添加一个$_POST['nome'] = $nome_vecchio;而不是退出)。
如果脚本是单独的,也可以按照@Valkyrurr的建议进行重定向。您需要提供一种方法来指示错误。
正如其他地方所提到的,strlen()没有被正确地使用。我建议你
$nome = trim($nome); // Make sure there are no extra spaces at beginning or end
if (strlen($nome) == 0) {
$_POST['nome'] = $nome_vecchio;
}https://stackoverflow.com/questions/39441898
复制相似问题