I made a custom code to keep the section, I soon on a page and I'm returned to the same page, with session saved and returning login as success.
But at the time I'm going to save the information from a form on this page I check if I'm logged in and it's returned as I fail.
I also noticed that when I log in and go through the navigation menu to another page that checks the login, the session tbm does not keep.
Does anyone know what it can be, or do you find something that I am missing from these functions?
Method to save form information after login
<? php
include_once 'functions.php';
sec_session_start ();
$ error_msg = "";
$ page = "postar.php";
if (isset ($ _ POST [post]) && $ _POST [post] == "Upload") {
$ Image = "";
if (isset ($ _ FILES [btcapa]) &&! empty ($ _ FILES [btcapa] [name])) {
$ btimage = $ _FILES [btcapa];
switch ($ _ POST [sacervo]) {
case '1':
$ update = "img / comic";
break;
case '2':
$ update = "img / books";
break;
case '3':
$ updir = "img / files";
break;
}
$ Image = valida_upload ($ btimage, $ update);
if ($ Image [0] == '<') {
$ error_msg. = "<li> Document: not loaded." $ btimage [name]. "</ li>";
$ error_msg. = $ Image;
$ Image = '';
}
}
if (login_check ($ mysqli) == true) {
switch ($ _ POST [sacervo]) {
case '1':
$ error_msg. = valida_gibis ($ mysqli, $ Image);
break;
case '2':
$ error_msg. = validate_book ($ mysqli, $ Image);
break;
case '3':
$ error_msg. = validate_files ($ mysqli, $ Image);
break;
}
if ($ error_msg == '') {
if (! empty ($ Image)) {$ upload = move_uploaded_file ($ _ FILES [btcapa] [tmp_name], $ Image); }
$ msg_sucesso = "<li> Successfully inserted. </ li>";
header ('Location: ../'.$page.'?retorno='.$msg_sucesso);
} else {
header ('Location: ../'.$page.'?retorno='.$error_msg);
}
} else {
$ error_msg. = "<li> Could not insert, please log back in. </ li>";
header ('Location: ../postar.php?retorno='.$error_msg);
}
}
?>
Personal logon feature
function sec_session_start() {
$session_name = 'SESSION'; // Estabeleça um nome personalizado para a sessão
$secure = SECURE;
// Isso impede que o JavaScript possa acessar a identificação da sessão.
$httponly = true;
// Assim você força a sessão a usar apenas cookies.
if (ini_set('session.use_only_cookies', 1) == FALSE) {
header("Location: ../error.php?err=Could not initiate a safe session (ini_set)");
exit();
}
// Obtém params de cookies atualizados.
$cookieParams = session_get_cookie_params();
session_set_cookie_params(time()+3600,
$cookieParams[path],
$cookieParams[domain],
$secure,
$httponly);
// Estabelece o nome fornecido acima como o nome da sessão.
session_name($session_name);
ob_start();
session_start(); // Inicia a sessão PHP
session_regenerate_id(); // Recupera a sessão e deleta a anterior.
setcookie(session_name(), '', time() + 3600, $params[path], $params[domain], $secure, $httponly);
}
Function that checks if this is logged in
function login_check($mysqli) {
// Verifica se todas as variáveis das sessões foram definidas
if (isset($_SESSION[user_id], $_SESSION[username], $_SESSION[login_string])) {
$user_id = $_SESSION[user_id];
$login_string = $_SESSION[login_string];
$username = $_SESSION[username];
// Pega a string do usuário.
//$user_browser = $_SERVER[HTTP_USER_AGENT];
if ($stmt = $mysqli->prepare("SELECT usuarioSenha FROM usuario WHERE usuarioCod = ? LIMIT 1")) {
// Atribui "$user_id" ao parâmetro.
$stmt->bind_param('i', $user_id);
$stmt->execute(); // Execute the prepared query.
$stmt->store_result();
if ($stmt->num_rows == 1) {
// Caso o usuário exista, pega variáveis a partir do resultado.
$stmt->bind_result($password);
$stmt->fetch();
$login_check = $password;//hash('sha512', $password.$user_browser);
if ($login_check == $login_string) {
return true;
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
}
Login function
function login($email, $password, $mysqli) {
// Usando definições pré-estabelecidas significa que a injeção de SQL (um tipo de ataque) não é possível.
if ($stmt = $mysqli->prepare("SELECT usuarioCod, usuarioNome, usuarioSenha
FROM usuario
WHERE usuarioEmail = ?
LIMIT 1")) {
$stmt->bind_param('s', $email); // Relaciona "$nusp" ao parâmetro.
$stmt->execute(); // Executa a tarefa estabelecida.
$stmt->store_result();
// obtém variáveis a partir dos resultados.
$stmt->bind_result($user_id, $user_name, $user_senha);
$stmt->fetch();
// faz o hash da senha com um salt excusivo.
//$password = hash('sha512', $password);
if ($stmt->num_rows == 1) {
if ($user_senha == $password) {
$_SESSION[user_id] = $user_id;
$_SESSION[username] = $user_name;
$_SESSION[login_string] = $user_senha;//hash('sha512', $password.$user_browser);
return '';
}
} else {
// Tal usuário não existe.
return '<p class="error"> Não existe esse usuario </p>';
}
}else {
return '<p class="error"> contate o adiministrador </p>';
}
}
I removed these 3 functions from my session_start() customized to sec_session_start() resoveu but I do not know why.
ob_start();
session_regenerate_id();
setcookie(session_name(), '', time() + 3600, $params[path], $params[domain], $secure, $httponly);
Related
I don't understand why I have implemented control instructions in my form that don't work, every time they record in the database all the behaviors that I don't want.
/*ERRORI*/
$nome_obbligatorio = "";
$errore_nome = "";
$cognome_obbligatorio = "";
$errore_cognome = "";
$password_obbligatoria = "";
$due_psw_non_coincidono = "";
$password_err_min_8_caratteri = "";
$password_err_min_8_max_20_caratteri = "";
$errore_password = "";
$citta_obbligatorio = "";
$errore_citta = "";
$cap_obbligatorio = "";
$errore_cap = "";
$errore_cap_caratteri_speciali = "";
$telefono_obbligatorio = "";
$errore_telefono = "";
$iban_obbligatorio = "";
$iban_err_min_27_caratteri = "";
/*FINE ERRORI*/
if(isset($_POST['submit'])) {
/*CAMPI FORM*/
$nome = $connessione->real_escape_string($_POST['nome']);
$cognome = $connessione->real_escape_string($_POST['cognome']);
$password = $connessione->real_escape_string($_POST['password']);
$citta = $connessione->real_escape_string($_POST['citta']);
$cap = $connessione->real_escape_string($_POST['cap']);
$telefono = $connessione->real_escape_string($_POST['telefono']);
$iban = $connessione->real_escape_string($_POST['iban']);
$email = $connessione->real_escape_string($_POST['email']);
$confermaPassword = $connessione->real_escape_string($_POST['confermaPassword']);
$indirizzo = $connessione->real_escape_string($_POST['indirizzo']);
$indirizzo_txt = $connessione->real_escape_string($_POST['indirizzo_txt']);
$civico = $connessione->real_escape_string($_POST['civico']);
$codice_fiscale = $connessione->real_escape_string($_POST['codice_fiscale']);
$categoria_richiesta = $connessione->real_escape_string($_POST['categoria_richiesta']);
/*FINE CAMPI FORM*/
/*----------------------------------------------------*/
if (empty($_POST["nome"])) {
$nome_obbligatorio = "Nome è un campo obbligatorio";
} else {
if (!preg_match("~[0-9]+~", $nome)) {
$errore_nome = "Il nome non può contenere numeri";
}
}
if (empty($_POST["cognome"])) {
$cognome_obbligatorio = "Cognome è un campo obbligatorio";
} else {
if (!preg_match("~[0-9]+~", $cognome)) {
$errore_cognome = "Il cognome non può contenere numeri";
}
}
if (empty($_POST["password"])) {
$password_obbligatoria = "Password è un campo obbligatorio";
} else {
if( strlen($password ) < 8 )
{
$password_err_min_8_caratteri .= "La Password deve contenere almeno 8 caratteri";
}
if( strlen($password ) > 20 )
{
$password_err_min_8_max_20_caratteri .= "La Password può essere composta da 8 fino a 20 caratteri";
}
if( !preg_match("A(?=[-_a-zA-Z0-9]*?[A-Z])(?=[-_a-zA-Z0-9]*?[a-z])(?=[-_a-zA-Z0-9]*?[0-9])[-_a-zA-Z0-9]{6,}z", $password ) )
{
$errore_password .= "La Password deve contenere almeno una lettera maiuscola una minuscola e un numero";
}
}
if (empty($_POST["citta"])) {
$citta_obbligatorio = "Città è un campo obbligatorio";
} else {
if (!preg_match("#\W+#", $citta)) {
$errore_citta = "Città non può contenere caratteri speciali";
}
}
if (empty($_POST["cap"])) {
$citta_obbligatorio = "CAP è un campo obbligatorio";
} else {
if(!preg_match("#[a-z]+#", $cap ))
{
$errore_cap .= "Il CAP non può contenere lettere";
}
if( !preg_match("#\W+#", $cap ) )
{
$errore_cap_caratteri_speciali .= "Il CAP non può contenere caratteri speciali";
}
}
if (empty($_POST["telefono"])) {
$telefono_obbligatorio = "Telefono è un campo obbligatorio";
} else {
if( !preg_match("#[a-z]+#", $telefono ) )
{
$errore_telefono .= "Il telefono non può contenere lettere";
}
}
if (empty($_POST["iban"])) {
$iban_obbligatorio = "IBAN è un campo obbligatorio";
} else {
if( strlen($password ) < 27 )
{
$iban_err_min_27_caratteri .= "L' IBAN deve contenere almeno 27 caratteri";
}
}
if ($password != $confermaPassword)
$due_psw_non_coincidono = "Le due password non coincidono!";
$CONTROLLA = mysqli_query($connessione,"SELECT email FROM collaboratori WHERE email='$email'");
$SE_IL_RISULTATO_IMMESSO=mysqli_num_rows($CONTROLLA);
if($SE_IL_RISULTATO_IMMESSO==0)
{
$hash = password_hash($password, PASSWORD_BCRYPT);
$connessione->query("INSERT INTO collaboratori
(
nome,
cognome,
email,
password,
citta,
indirizzo,
indirizzo_txt,
civico,
cap,
telefono,
codice_fiscale,
iban,
categoria_richiesta
)
VALUES
(
'$nome',
'$cognome',
'$email',
'$hash',
'$citta',
'$indirizzo',
'$indirizzo_txt',
'$civico',
'$cap',
'$telefono',
'$codice_fiscale',
'$iban'
)");
header("location: index.php?col_reg=Y");
}
else
{
$indirizzo_email_gia_registrato = 'Indirizzo email, già registrato' ;
}
}
for example the field 'nome' and 'cognome', the controls seem non-existent
I can't understand why they fail every time,thanks in advance for your support.
The problem is that you set your error variables, but do not check them before you send the query. You have to write some if() statement before sending the SQL query checking if there were any errors before. One way to do this is to use an array and fill it with error messages:
$errors = array();
if (/*name is invalid */) {
$errors[] = 'Your name is invalid.';
}
if (/*city is invalid */) {
$errors[] = 'Your city is invalid.';
}
if (/*email already used */) {
$errors[] = 'The email address is already being used.';
}
//...
// check if there were any validation errors above.
if (count($errors) > 0) {
// deal with error messages like showing them with 'echo' and `foreach`
} else {
// all fine, send the query.
}
Currently I have a project that authenticates via ldap to modify contact attribute, but only in a single domain, I'm trying to add an implementation so I can identify which domain the user wants to authenticate after informing on a form, example:
domain\user.
Here's how my code treats only one domain.
index.php
<?php
set_time_limit(30);
error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
/*
* Function Find user: Procura o usuario no LDAP
*/
$ldap_server = "iphost";
$ldap_binddn = "CN=LDAP Change Info,CN=Users,DC=DOMAIN,DC=com,DC=br";
$ldap_bindpw = "passwordhere";
$ldap_search_dn = "DC=domain,DC=com,DC=br";
function erro($mensagem, $goto_page = "") {
if ($mensagem == "") {
$_SESSION['last_error'] = "";
return;
}else{
$_SESSION['last_error'] = $mensagem;
}
if ($goto_page == "") {
$goto_page = "error.php";
}
include("_include/$goto_page");
die();
}
function modify_user_attribute($userdn, $attributes) {
global $ldap_server;
global $ldap_binddn;
global $ldap_bindpw;
global $ldap_search_dn;
/*
*
* Conexão no servidor LDAP.
*/
#TODO: Fazer conectar em outro servidor caso o primeiro de erro.
$ldap = ldap_connect($ldap_server) or die("LDAP Server connect error.");
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
$ret = false;
if ($ldap) {
$ldapbind = ldap_bind($ldap, $ldap_binddn, $ldap_bindpw);
if ($ldapbind) {
$ret = ldap_modify($ldap, $userdn, $attributes);
ldap_close($ldap);
}
}
return $ret;
}
function check_value($value, $name) {
if ($value == null) {
erro("Atributo $name não pode ser nulo", "modify.php");
}
if ($value == "") {
erro("Atributo $name não pode ser vazio", "modify.php");
}
if (strlen($value) > 20) {
erro("Atributo $name não pode conter mais do que 20 caracteres.", "modify.php");
}
}
function find_and_auth_user($login, $senha) {
global $ldap_server;
global $ldap_binddn;
global $ldap_bindpw;
global $ldap_search_dn;
$ldap_user_to_find = "";
$ldap_user_pass = "";
$ldap_user_dn = "";
/*
*
* Conexão no servidor LDAP.
*/
#TODO: Fazer conectar em outro servidor caso o primeiro de erro.
$ldap = ldap_connect($ldap_server) or die("LDAP Server connect error.");
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
if (!$ldap) {
//Redirecionar o usuário para uma tela de erro de sistema.
}
# Find
$ldapbind = ldap_bind($ldap, $ldap_binddn, $ldap_bindpw);
if ($ldapbind) {
$ldap_search_filter = "(sAMAccountName=$login)";
$result = ldap_search($ldap, $ldap_search_dn, $ldap_search_filter) or erro("Erro de sistema");
$data = ldap_get_entries($ldap, $result);
if ($data["count"] == 1) {
$ldap_user_dn = $data[0]["dn"];
# print "Encontrado usuário: " . $ldap_user_dn . "\n";
$ldapbind2 = ldap_bind($ldap, $ldap_user_dn, $senha);
if ($ldapbind2) {
$result = ldap_search($ldap, $ldap_user_dn, $ldap_search_filter) or erro("Erro de sistema");
$data = ldap_get_entries($ldap, $result);
/*
* Salva na sessão os dados encontrados.
*/
$_SESSION['dn'] = $ldap_user_dn;
$_SESSION['telephonenumber'] = $data[0]["telephonenumber"][0];
$_SESSION['ipphone'] = $data[0]["ipphone"][0];
$_SESSION['last_error'] = "";
return true;
}else{
#Redireciona o usuário para página de erro de login e senha.
erro("Usuário ou senha incorreta.", "login.php");
}
}else{
erro("Usuário ou senha incorreta.", "login.php");
}
}
ldap_close($ldap);
}
#
#
# SINGLE PAGE APP
#
#
#
if (session_id() == "") {
session_start();
//GET = Formulario de LOGIN
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$_SESSION['last_error'] = "";
include("_include/login.php");
return;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//POST do formulario de LOGIN
if (isset($_POST['username']) && isset($_POST['password'])) {
if (find_and_auth_user($_POST['username'], $_POST['password'])){
include("_include/modify.php");
}
return;
}
//POST do formulario de CHANGE
if (isset($_GET['change']) && $_GET['change'] == "true") {
$values["telephonenumber"][0] = $_POST['telephonenumber'];
$values["ipphone"][0] = $_POST['ipphone'];
check_value($values["telephonenumber"][0], "Telefone");
check_value($values["ipphone"][0], "Ramal");
if ($_SESSION['dn'] == null) {
erro("Erro de sistema. DN nula.", "login.php");
}
if ($_SESSION['dn'] == "") {
erro("Erro de sistema. DN nula.", "login.php");
}
if (modify_user_attribute($_SESSION['dn'], $values)) {
include("_include/success.php");
return;
}else{
erro("Erro alterando atributos.", "modify.php");
}
}
}
}else{
include("_include/modify.php");
return;
}
?>
Here's how I'm thinking of using it to authenticate to more than one domain:
teste.php
<?php
$username = $_POST['username'];
$arr = explode("\\", $login);
echo "Dominio = " .strtoupper($arr[0]) ."\n";
echo "Login = $arr[1]\n";
$conf = array();
$conf["DOMAIN1"]["LDAP_SERVER"] = "iphost";
$conf["DOMAIN1"]["BIND_DN"] = "CN=LDAP Change Info,CN=Users,DC=domain1,DC=com,DC=br";
$conf["DOMAIN1"]["BIND_PWD"] = "passwordhere";
$conf["DOMAIN1"]["SEARCH_DN"] = "DC=domain1,DC=com,DC=br";
$conf["DOMAIN2"]["LDAP_SERVER"] = "iphost";
$conf["DOMAIN2"]["BIND_DN"] = "CN=LDAP Change Info,CN=Users,DC=domain2,DC=com,DC=br";
$conf["DOMAIN2"]["BIND_PWD"] = "passwordhere";
$conf["DOMAIN2"]["SEARCH_DN"] = "DC=domain2,DC=com,DC=br";
$conf["DOMAIN3"]["LDAP_SERVER"] = "iphost";
$conf["DOMAIN3"]["BIND_DN"] = "CN=LDAP Change Info,CN=Users,DC=domain3,DC=com,DC=br";
$conf["DOMAIN3"]["BIND_PWD"] = "passwordhere";
$conf["DOMAIN3"]["SEARCH_DN"] = "DC=domain3,DC=com,DC=br";
#var_dump($conf);
$dominio = strtoupper($arr[0]);
if ( empty($conf[$dominio]["LDAP_SERVER"])) {
die("Domain $dominio not found\n");
}
//echo "auth domain " .$conf[$dominio]["LDAP_SERVER"] ."\n";
I would like to know how it would be possible to join the raciocio line to be able to log in to other domains.
I want to openly publish this code, it can help a lot of people.
When I submit the form of register new user or new client, this message error appears.
I'm using PHP 7.1.5 with IIS Server in a Windows 10 OS. The same code was working correctly and stop work from nothing.
Somebody can help me?
Here is the code:
enter code here
<?php
if (!isset($_SESSION)) {
session_start();
}
// Verifica se não há a variável da sessão que identifica o usuário
if (!isset($_SESSION['UsuarioID'])) {
// Destrói a sessão por segurança
session_destroy();
// Redireciona o visitante de volta pro login
header("Location: login.php"); exit;
}
if(isset($_POST['submit'])) {
$nome = $_POST['txt_nome'];
$email = $_POST['txt_email'];
$password = $_POST['txt_password'];
$cpassword = $_POST['txt_cpassword'];
$nivel = $_POST['txt_nivel'];
$pass=strcmp($password,$cpassword);
if($pass == 0){
$senha = md5($password);
}else{
echo 'As Senhas Não Conferem. Verifique!';
}
if ($nivel == '1 - Diretoria') {
$nivel = 1;
}else if ($nivel == '2 - Gerência'){
$nivel = 2;
}else if ($nivel == '3 - Usuários'){
$nivel = 3;
}
$cad_usur = "INSERT INTO C_USUR
(C_USUR_USUR,C_USUR_STUS,C_USUR_NOME,C_USUR_LGIN,C_USUR_PSWD,C_USUR_NIVL)
VALUES ((SELECT S_CONT_CONT FROM
SP_PROX_NRMO('0001','C_USUR')),'1','$nome','$email','$senha','$nivel')";
$insert_usur = ibase_query($cad_usur);
if($cad_usur == true){
echo 'Cadastro Realizado Com Sucesso';
}else{
echo 'Não foi possível cadastrar o usuário. Verifique!';
}
}
?>
I have two tables where I need to display text in a table corresponding to the users of the users table.
So I did this:
$email = $_SESSION['email'];
$select = mysql_query("SELECT t.id, t.id_textos, t.userTitleSite, t.userTextSobre, t.userTextContatos, t.userTextMaisInfos FROM vms_textos t INNER JOIN vms_users u ON (t.id = u.id) LIMIT 1") or print (mysql_error());
while($res_select = mysql_fetch_array($select)){
$userTitleSite = $res_select["userTitleSite"];
$userTextSobre = $res_select["userTextSobre"];
$userTextContatos = $res_select["userTextContatos"];
$userTextMaisInfos = $res_select["userTextMaisInfos"];
$id = $res_select["id"];
and working.
Now i need to update this information straight from the INPUTS..
but I can not do because my field UPDATE must be wrong because it always resets everything after that grip on SUBMIT.
This is the code I'm using. Please see what is wrong:
$query=mysql_query("UPDATE vms_textos SET userTitleSite='$userTitleSite', userTextSobre='$userTextSobre', userTextContatos='$userTextContatos', userTextMaisInfos='$userTextMaisInfos' WHERE t.id=u.id");
Thanks!
[EDIT]
ALL IMPORTANT CODE:
// INCLUDES.PHP
// Starts
ob_start();
session_start();
// Globais
$startaction="";
// Ação
if(isset($_GET["acao"])){
$acao=$_GET["acao"];
$startaction=1;
}
// Conexão com o banco de dados
$conectar=new DB;
$conectar=$conectar->conectar();
// Metodos de Cadastro
if($startaction == 1){
if($acao == "cadastrar"){
$usuario=$_POST["usuario"];
$nome=$_POST["nome"];
$sobrenome=$_POST["sobrenome"];
$telefone=$_POST["telefone"];
$email=$_POST["email"];
$senha=$_POST["senha"];
if(empty($usuario) || empty($nome) || empty($sobrenome) || empty($telefone) || empty($email) || empty($senha)){
$msg="Preencha todos os campos!";
}
// Todos os campos preenchidos
else {
// Email válido
if(filter_var($email,FILTER_VALIDATE_EMAIL)){
// Senha inválida
if(strlen($senha) < 8){
$msg="As senhas devem conter no mínimo oito caracteres!";
}
// Senha válida
else {
// Executa a classe de cadastro
$conectar=new Cadastro;
echo "<div class=\"flash\">";
$conectar=$conectar->cadastrar($usuario, $nome, $sobrenome, $telefone, $email, $senha);
echo "</div>";
}
}
// Email invalido
else{
$msg="Digite seu e-mail corretamente!";
}
}
}
}
// Método de Login
if($startaction == 1){
if($acao == "logar"){
// Dados
$email=addslashes($_POST["email"]);
$senha=addslashes(sha1($_POST["senha"].""));
if(empty($email) || empty($senha)){
$msg="Preencha todos os campos!";
} else{
if(!filter_var($email,FILTER_VALIDATE_EMAIL)){
$msg="Digite seu e-mail corretamente!";
} else {
// Executa a busca pelo usuário
$login=new Login;
echo "<div class=\"flash\">";
$login=$login->logar($email, $senha);
echo "</div>";
}
}
}
}
// Método de Checar usuário
if(isset($_SESSION["email"]) && isset($_SESSION["senha"])){
$logado=1;
$nivel=$_SESSION["nivel"];
}
// LOGIN.PHP -- CLASSE DE LOGIN
class Login {
public function logar($email, $senha){
$buscar=mysql_query("SELECT * FROM vms_users WHERE email='$email' AND senha='$senha' LIMIT 1");
if(mysql_num_rows($buscar) == 1){
$dados=mysql_fetch_array($buscar);
if($dados["status"] == 1){
$_SESSION["email"]=$dados["email"];
$_SESSION["senha"]=$dados["senha"];
$_SESSION["nivel"]=$dados["nivel"];
setcookie("logado",1);
$log=1;
} else{
$flash="Usuário bloqueado! Entre em contato conosco!";
}
}
if(isset($log)){
$flash="Você foi logado com sucesso!";
} else{
if(empty($flash)){
$flash="Ops, digite seu e-mail e sua senha corretamente!";
}
}
echo $flash;
}
}
// CADASTRO.PHP -- CLASSE DE CADASTRO
class Cadastro{
public function cadastrar($usuario, $nome, $sobrenome, $telefone, $email, $senha){
// Tratamento das variaveis
$usuario=ucwords(strtolower($usuario));
$nome=ucwords(strtolower($nome));
$sobrenome=ucwords(strtolower($sobrenome));
$telefone=ucwords(strtolower($telefone));
$email=ucwords(strtolower($email));
$senha=sha1($senha."");
// Inserção no banco de dados
$validaremail=mysql_query("SELECT * FROM vms_users WHERE email='$email' OR usuario='$usuario'");
$contar=mysql_num_rows($validaremail);
if($contar == 0){
$insert=mysql_query("INSERT INTO vms_users(usuario, nome, sobrenome, telefone, email, senha, nivel, status) VALUES('$usuario','$nome','$sobrenome','$telefone','$email','$senha','1','0')");
} else{
$flash="Desculpe, mas já existe um usuário cadastrado com este e-mail em nosso sistema!";
}
if(isset($insert)){
// Cadatro ok
$flash="Cadastro realizado com sucesso, aguarde nossa aprovação!";
} else{
if(empty($flash)){
$flash="Ops, houve um erro em nosso sistema!";
}
}
// Retorno para o usuário
echo $flash;
}
}
$query=mysql_query("UPDATE vms_textos SET t.userTitleSite='$userTitleSite' WHERE t.id='u.id'");
$query=mysql_query("UPDATE vms_textos SET userTitleSite='$userTitleSite' WHERE t.id=u.id");
what field do u want to update in db? SET that particular field in mysql_query(). i mentioned here.. try like this if u set all fields then all fields are updated..
I'm building an admin panel in PHP. I'm new to PHP and I can't get my edit page to work as I need it to. I can edit the name, but 2 values which represent "Active User" and "Access Level" are set to 0 and I can't change it from 0 on my edit page, only from PhpmyAdmin..
<?php
// Inserir o registo na BD
include_once ('config1.php');
// Estabelecer a ligação à BD
$connection = new mysqli('localhost', 'root', '123456', 'admin1');
//Verificar se a ligação foi estabelecida com sucesso
if (mysqli_connect_errno() ) {
echo "</h2>Erro no acesso a BD</h2>" . mysqli_connect_error();
exit();
}
// Validar se os campos do formulário foram preenchidos pelo utilizador
// Verificar se "username" foi enviado
if (isset($_POST['iusername']) == FALSE) {
echo ("Erro de submissão");
exit();
} else {
$username = trim($_POST['iusername']);
}
if (isset($_POST['inome']) == FALSE) {
echo ("Erro de submissão");
exit();
} else {
$nome = trim($_POST['inome']);
}
if (isset($_POST['inivel']) == FALSE) {
echo ("Erro de submissão");
exit();
} else {
$apelido = trim($_POST['inivel']);
}
if (isset($_POST['iativo']) == FALSE) {
echo ("Erro de submissão");
exit();
} else {
$telefone = trim($_POST['iativo']);
}
if (isset($_POST['iemail']) == FALSE) {
echo ("Erro de submissão");
exit();
} else {
$email = trim($_POST['iemail']);
}
if (isset($_POST['ipass']) == FALSE) {
echo ("Erro de submissão");
exit();
} else {
$pass = trim($_POST['ipass']);
}
if (isset($_POST['irpass']) == FALSE) {
echo ("Erro de submissão");
exit();
} else {
$repass = trim($_POST['irpass']);
}
// Função de validação do email (chamada mais abaixo no código)
function isValidEmail($email){
return #eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*#[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z] {2,3})", $email);
// Validar se o nº de caracteres do "username" está entre 4 e 12
if (strlen($username) < 4 || strlen($username) > 12) {
$erro = true;
$msgerro .= "<p>erro: \"username\" deve conter entre 4 e 12 caracteres</p>";
}
// Validar se o nome tem entre 3 e 40 caracteres
if (strlen($nome) < 3 || strlen($nome) > 40) {
//echo (strlen($nome));
$erro = true;
$msgerro .= "<p>erro: \"nome\" deve conter entre 3 a 40 caracteres</p>";
}
// Validação das passwords
$mudapass = false;
if (strlen($password) == 0 && strlen($rpassword) == 0) {
$mudapass = false;
} else {
$mudapass = true;
}
// 2.2. Validar o tamanho da password
if (strlen($password) < 4 || strlen($password)> 16) {
$erro = true;
$msgerro .= "<p>erro: \"password\" deve conter entre 4 a 16 caracteres</p>";
}
}
// 3. Validar se as duas passwords correspondem
if ($password != $rpassword) {
$erro = true;
$msgerro .= "<p>\"passwords\" não correspondem</p>";
}
// validação de email
// Chama a nova função "isValidEmail"
if (isValidEmail($email) == false) {
$erro = true;
$msgerro .= "<p>email inválido</p>";
}
// Final das validações (avisa caso algum erro seja detectado)
if ($erro) {
echo "<p>Formulário submetido com erros</p>";
echo $msgerro;
echo "<br>";
// Desenha 2 botões "Corrigir" e "Listar"
echo "<a class='ains' href='javascript:history.go(-1)' title='Volta à página anterior'>Corrigir </a>";
echo "<br/>";
echo "<a class='ains' href='lista.php'>Listar</a>";
exit();
}
if($password != $rpassword){
echo "ERRO: PASSWORDS SAO DIFERENTES";
}
$sql= "UPDATE usuarios SET
nome = '$nome';
email = '$email';
nivel = '$nivel';
ativo = '$ativo';
WHERE
usuario = '$username'";
if ($mudapass == TRUE) {
$sql = "UPDATE usuarios SET nome = '$nome',
password = '$password',
email = '$email',
nivel = '$nivel',
ativo = '$ativo', WHERE usuario = '$username'";
}
if ($mudapass == FALSE) {
$sql = "UPDATE usuarios SET
nome = '$nome',
email = '$email',
nivel = '$nivel',
ativo = '$ativo'
WHERE
usuario = '$username'";
}
$connection->query($sql);
// Lista users depois de actualizar
header("location:lista.php");
?>
It looks like a naming problem. Two of your variables don't seem to follow the same convention as the rest of them, and unless I'm missing some extra processing before the query, then you should change these two lines:
$apelido = trim($_POST['inivel']);
// ...several lines later
$telefone = trim($_POST['iativo']);
to this:
$nivel = trim($_POST['inivel']);
// ...several lines later
$ativo = trim($_POST['iativo']);