jquery – ¿Cómo recuperar la sesiones de PHP al enviar datos por ajax?

Estoy usando ajax, para el login, cuando envió la información al archivo access.php desde el login.php en este archivo access.php se almacena varias cosas en sesiones, por ejemplo:

$_SESSION('logueado') = TRUE;
$_SESSION("id_usuario") = $id_usuario;
$_SESSION("captcha") = $intentos_fallidos;

Y, la única forma de yo obtener esos datos de esas sesiones en mi archivo login.php es recargando la página, pero eso no tiene sentido, pues si estoy usando ajax, es para evitar eso, entonces me encontré con lo siguiente:

$("#logIn").load("#logIn"); //$("body").load("body");

Pero lo que hace esto es insertar contenido a otro contenedor, es decir al momento de emplearlo, me aparece dos login insertados en la misma página, como puedo evitar que eso suceda o existe alguna otra manera de actualizar la página sin tener que pasar información de un contenedor a otro como lo hace .load

.done(function(data) {
    $("#logIn").load("#logIn");
}

mysql – como enviar el valor de varias variables onchange varios selects por ajax a un archivo php para hacer un consulta y mostrar los datos en un select

es decir que varie y que cambie dependiendo de la seleccion de los selects si cambia uno que filtre la condicion que si cambia a otro que lo filtre y asi etc.. he intentado enviando las variables del valor onchange de los selects por ajax a un archivo php hacer la consulta y mostrar pero solo se cumple con una variable
este el codigo de la conexion

mysql = new mysqli(Constantes::HOST, Constantes::USER, Constantes::PASSWORD, $bd);
mysqli_set_charset($this->mysql, “utf8”);
return $this->mysql;

}

public function consulta($query)
{
$i = 0;
$contenedor = array();
$result = mysqli_query($this->mysql, $query) or die(“Error en la consulta: $query “.mysqli_error());

while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))
{
$contenedor($i) = $row;
$i++;
}

return $contenedor;
}

public function actualizacion($query)
{
mysqli_query($this->mysql, $query) or die(“Error en la consulta: $query “.mysqli_error());
}

public function desconectarDB()
{
mysqli_close($this->mysql);
}

}

asi muestro los selects principales

Departamento

Seleccione
conectarBD();
$consulta = “SELECT id_departamento,departamento FROM departamentos”;
$rst1 = $conf->consulta($consulta);
for($i = 0; $i ‘.$rst1($i)(“departamento”).”;
}
$conf->desconectarDB();
?>

                </select>
                <br>

asi hago el siguiente select junto la funcion ajax para que carguen los municipios acorde al departamento
Municipio

                <select id="id_municipio" name="municipio" class="select-css" style="width:190px;">
                    <option value="0">Seleccione</option>
                </select>
                <!--funcion ajax para traer el municipio acorde al departamento-->
                <script>
                     $(document).ready(function() {
                    var municipio = $('#id_municipio');
                         $('#id_departamento').change(function() {
                             var id_departamento = $(this).val();
                            $.ajax({
                                   data: {
                                      id_departamento: id_departamento
                                },
                                    dataType: 'html',
                                   type: 'POST',
                                   url: '../../getmunicipio.php',
                               }).done(function(data) {
                                   municipio.html(data);
                               });
                          });
                       });
                </script>



 

android – Enviar una variable de un Activity a una Clase

tengo una app que estoy desarrollando y necesito enviar una variable desde mi activity al Repo de mi RecyclerView de tipo class, para usarlo en un whereEqualTo de Firebase. Necesito ayuda porque no consigo como lograrlo.

Este es el codigo de mi Repo de tipo class

package com.ezdev.chepesdelivery.ui.RecyMenu

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.google.firebase.firestore.FirebaseFirestore

class RepoMenu {

    fun getTiendaData(): LiveData<MutableList<Plato>> {
        val mutableData = MutableLiveData<MutableList<Plato>>()
        FirebaseFirestore.getInstance().collection("Platos").whereEqualTo("tienda", "AquiVaMiVariable").get()
            .addOnSuccessListener { result ->
                mutableData.value = result.documents.map { snap ->
                    snap.run {
                        Plato(
                            getString("plato") ?: "default",
                            getString("descripcion") ?: "default",
                            getBoolean("stock") ?: false,
                            getString("precio") ?: "default",
                        )
                    }
                }.toMutableList()
            }


        return mutableData
    }


}

La variable la usare para filtrar los elementos que necesito con el whereEqualTo.

Y este es mi activity

package com.ezdev.chepesdelivery

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import com.ezdev.chepesdelivery.ui.RecyMenu.MyAdapterMenu
import com.ezdev.chepesdelivery.ui.RecyMenu.MyViewModelMenu
import com.google.firebase.firestore.FirebaseFirestore
import kotlinx.android.synthetic.main.activity_pedir.*


class PedirActivity : AppCompatActivity(), MyAdapterMenu.OnTiendaListener {

    private lateinit var adapter: MyAdapterMenu
    private val viewModel by lazy { ViewModelProvider(this).get(MyViewModelMenu::class.java)}


    private val db = FirebaseFirestore.getInstance()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_pedir)

        var nombreTienda = intent.getStringExtra("nombreTienda") //Este es la variable que necesito enviar
        var tiendaEmail = intent.getStringExtra("emailTienda")


        title = "Menu de $nombreTienda"

        adapter = MyAdapterMenu(this, this)

        recyclerViewMenu.layoutManager = LinearLayoutManager(this)
        recyclerViewMenu.addItemDecoration(DividerItemDecoration(this,DividerItemDecoration.VERTICAL))
        recyclerViewMenu.adapter = adapter
        observeData()


    }

    fun observeData(){
        viewModel.fetchTiendaData().observe(this, Observer {

            adapter.setListData(it)
            adapter.notifyDataSetChanged()

        })
    }

    override fun onItemClick(nombre: String) {



    }

}

La variable que necesito enviar es la que dice nombreTienda.

Bueno es seria todo, no se si tenga que compartir los demas codigos que estan en mi RecyclerView como mi Adapter o mi ViewModel, si es necesario para que me ayuden me dicen y los agrego.

html5 – É possível enviar um seletor HTML pelo Typescript no Angular?

Olá gostaria de saber se é possível enviar um seletor HTML pelo Typescript?

Ex:
Um componente conteúdo

No Typescript*

create = ''<app-home></app-home>''

No HTML*

<div [innerHTML]="create"></div>

Meu objetivo é que o componente conteúdo receba outro componente através de uma variável declarada no TS. É possível?

Obrigado desde já 🙂

Enviar correo por office 365 de empresa con autenticación OAUTH

He realizado un código python y neceso enviar un correo pero al usar SMTP no me lo permite ya que la empresa tiene usuario office 365 con autenticacion OAUTH.

php – Editar información en formulario y enviar una solicitud al admin

estoy desarrollando una página web que almacena información en una BD, quisiera implementar una funcionalidad en la cual si el usuario que se loguea es un administrador puede editar, crear, eliminar, cualquier dato sin restricción alguna. Pero si el usuario logueado es un invitado, podrá editar, y crear información pero al momento de hacerlo, se deberá enviar una notificación al administrador para que acepte esos cambios que el usuario quiere realizar en la BD. Mientras el administrador no acepte esa petición, no se realiza la inserción o modificación de datos.

Quisiera saber como puedo realizar la parte de la petición al administrador y que la información no se inserte hasta que el administrador acepte.

Alguna recomendación? Estoy trabajando sobre Php y MySQL en una página web

Agradezco su ayuda!!

javascript – Se muestra el codigo HTML al enviar correo con phpMailer

Tengo un formulario en el que se capturan los datos en js con AJAX, los envio a una funcion de php para enviar un correo electronico con phpMiler, el script me trabaja sin problemas y envia el correo. El problema se da cuando me retorna la resupuesta desde el php, deberia de enviar un JSON con un estado para validar, pero me retorna todo el codigo HTML que compone el mensaje junto con el JSON, haciendo que en la funcion AJAX no pueda leer el JSON para validar la respuesta y mostrando todo el codigo HTML en la consola, asi no haya ningun console.log o algo que le indique que lo muestre.

Funcion AJAX:

    $('body').on('submit', '#recover', function(event) {

    event.preventDefault();

    var dataJSON = {
        modulo: "login",
        accion: "recover_form",
        form:   $('#recover').serializeJSON();
    }    

    $.ajax({

        url: "scripts.php",
        data: dataJSON,
        type: 'post',
        dataType: 'json',
        beforeSend: function(data) {

            //console.log('loading...');
            var resp = respuestaBox('loading');

            if (resp.estado != 0) {

                $('.msj-responde').html(resp.html);

            }else{

                $('.msj-responde').html(resp.msj);

            }

        },
        success: function(data) {

            $('.msj-responde').html('');
            //console.table(data);
           
            if (data.estado == 1) {

                var resp = respuestaBox('success',data.msj);
                $('.msj-responde').html(resp.html);
                document.getElementById('recover').reset();

            }else{

                var resp = respuestaBox('error',data.msj);
                $('.msj-responde').html(resp.html);

            }

        },
        error: function(data) {

        }

    });


});

parte de la funcion PHP:

    if ($this->o_mail->envioCorreo($correo,$consult('nombre'),$asunto,$mail)) {

    $responde = array('estado'  => 1, 
        'msj'   => 'Se ha enviado un mensaje para la recuperación de la contraseña al correo '.$correo, 
        'type'  => 'success');

}else{

    $responde = array('estado'  => -1, 
        'msj'   => 'Error al enviar el correo de recuperación de la contraseña.', 
        'type'  => 'error');

}

return json_encode($responde, true);

La funcion envioCorreo(); es envio los datos del destinatario y el codigo HTML del mensaje a enviar por correo.

include("phpmail/class.phpmailer.php");

class Mail{

    function envioCorreo($correo_destino, $nombre_remitente, $asunto, $mensaje, $nombre_destino = '', $nombre_archivo = '', $ruta = '',$idcliente = '',$accion = 0)
    {

        $email = new PHPMailer();
        $email->IsSMTP();
        $email->SMTPAuth = true;    
        $email->SMTPSecure = "ssl"; // protocolo de seguridad
        $email->Host = "*****.com";// host de gmail
        $email->Port = 465; // puertos seguros ssl/tls (465,587) 
        $email->Username = "*****@*****.com"; //correo del remitente
        $email->Password = "*****";  // contraseña remitente
        $email->FromName = $nombre_remitente; //nombre del remitente
        $email->From = "*****@*****.com"; // correo y nombre del remitente
        $email->Subject = $asunto; // asunto del correo
        $email->Body = $mensaje;    // mensaje del correo
        $email->MsgHTML($mensaje);  // mensaje del correo
            
        for ($i=0; $i < count($correo_destino) ; $i++) { 
            
            $email->AddAddress($correo_destino($i)); // correo y nombre del destinatario    

        }

        $email->IsHTML(true); // Establece el cuerpo del mensaje

        if($email->Send()){
            return true;
        }else{
            //die($email->ErrorInfo);
            return false;
        }

    }

};

Respuesta en la consola del navegador

al no poder leer el JSON no puedo mostrarle el mensaje al usuario que el correo fue enviado exitosamente, ademas que al mostrar el mensaje HTMl en la consola, es muy inseguro ya que ahi se ve el enlace de reestablecimiento de la contgraseña, que es el objetivo del script.

Les agradezco mucho su ayuda, no se por donde mas solucionar este problema, he quitado todos los console.log() del JS y los die() del PHP.

Error al enviar token con HttpInterceptor en Angular Versión 11.2.12

Estoy intentando consumir un Servicio enviando un token en Angular usando HttpInterceptor pero recibo un error en mi class de AuthInterceptor:

Hago las pruebas en Postman y sirve perfecto.

Obtener la información de un usuario y demás métodos enviando el token.

Lógica y error por método:

export class AuthInterceptor implements HttpInterceptor {

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

        req = req.clone({
            setHeaders: {
                'Content-Type': 'application/json; charset=utf-8',
                'Accept': 'application/json',
                'Access-Control-Allow-Origin': '*',
                'Authorization': 'Bearer MI-AUTH-TOKEN',
            },
        });

        return next.handle(req).pipe(
            map((event: HttpEvent<any>) => {
                if (event instanceof HttpResponse) {
                    console.log('Evento: ', event);
                }
                return event;
            }),
            catchError((error: HttpErrorResponse) => {

                console.log('Error de HttpInterceptor: ', error);
                return throwError(error);
            }));
    }
}


//==========>>>>> ERROR DE ESTE METODO

>> Mensaje del método:

Error de HttpInterceptor:  
HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: "http://localhost:8080/auth/realms/tutorial/protocol/openid-connect/userinfo", ok: false, …}
> error: ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: "error", …}
> headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}
message: "Http failure response for http://localhost:8080/auth/realms/tutorial/protocol/openid-connect/userinfo: 0 Unknown Error"
name: "HttpErrorResponse"
ok: false
status: 0
statusText: "Unknown Error"
url: "http://localhost:8080/auth/realms/tutorial/protocol/openid-connect/userinfo"
> __proto__: HttpResponseBase

>>>> ERROR DE CORS EN LA CONSOLA DEL NAVEGADOR

Access to XMLHttpRequest at 'http://localhost:8080/auth/realms/tutorial/protocol/openid-connect/userinfo' from origin 'http://localhost:4200' has been blocked by CORS policy: Request header field access-control-allow-origin is not allowed by Access-Control-Allow-Headers in preflight response.


Método que consume el api:
El error que me arroja este es el mismo de arriba Error de HttpInterceptor: en el mensaje del método del Intercept

getInformatioUser() {
    this.http.get<any>('http://localhost:8080/auth/realms/tutorial/protocol/openid-connect/userinfo').subscribe({
      next: (response: any) => {
        console.log('Response: ', response);
      }, error(response: any) {
        console.log('Error al obtener info de usuario: ', response);
      }
    });
  }

Mi app.module.ts:
Este esta bien.

providers: ({
    provide: APP_INITIALIZER,
    useFactory: initializeKeycloak,
    multi: true,
    deps: (KeycloakService),
  }, {
    provide: HTTP_INTERCEPTORS,
    useClass: AuthInterceptor,
    multi: true,
  },
    UsuarioServiceService,
    RolServiceService,
    AreaServiceService),
  bootstrap: (AppComponent)

javascript – Como enviar socket id para pessoa que recebe mensagem de chat

Objetivo

Bom galera, vocês já devem ter usado Whatsapp ou Facebook e não sei se já perceberam este detalhe, mais pelo menos no whatsapp, quando você envia uma mensagem se ela for sua ela fica a direta, se não, a esquerda, queria saber como faz isso, é simples mais não entra na minha cabeça, quero que o meu site seja capaz de saber se a mensagem for minha e coloque a mensagem a direita, se não a esquerda. Como estou desenvolvendo meu chat com socket io, pensei em transmitir o socket id sempre que eu receber ou enviar uma mensagem e comparar com o socket id atual, aí quero uma lógica mais ou menos assim “Se o socket id for igual ao socket id (ou seja igual o meu) então faça algo, senão faça algo” porém não quero deixar esse socket id em forma de texto na mensagem para o javascript fazer esse if quero que quando eu enviar a mensagem e alguém receber, essa pessoa também receba meu socket id só que não de forma visível, alguém pode me dar uma luz do que fazer?

Como meu chat está:

inserir a descrição da imagem aqui

Está assim para dispositivos mobile eu dei um scroll para poderem visualizar o campo de input e botão, não que precisassem mais enfim …

Está assim galera, o problema é que quando recebo uma mensagem continua embaixo da outra, não postei meu códico aqui pois acho que não tem nessecidade, tudo o que preciso é conseguir transmitir o socket id do usuário que está enviando a mensagem sem a nessecidade de inserir no corpo da mensagem.

Erro ao enviar formulário – anexo na nuvem – phpmailer

Olá, tenho um formulário para cadastro com envio de anexo. Esta funcionando, porém quando o anexo está somente na nuvem (googe drive ou onedrive) e não no dispositivo ele não anexa e apresenta erro.

Utilizo o PHPMailer.