403Webshell
Server IP : 109.234.162.214  /  Your IP : 216.73.216.222
Web Server : Apache
System : Linux servd162214.srv.odns.fr 4.18.0-372.26.1.lve.1.el8.x86_64 #1 SMP Fri Sep 16 14:08:19 EDT 2022 x86_64
User : carpe ( 1178)
PHP Version : 8.0.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/carpe/www/Metro_Porto/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/carpe/www/Metro_Porto/index.php
<?php

include 'database.php';

$database = new Database();
$connexion = $database->getConnection();

$table = "";
?>

<head>
    <link href="https://fonts.googleapis.com/css2?family=Jaro&family=Jersey+25&display=swap" rel="stylesheet">
    <title>Porto Metro</title>
</head>
<style>

    body{
        margin:0;
        padding:0;
        width:100%;
        height:100vh;
        display:flex;
        justify-content:center;
        align-items:center;
        background:#D3B332;
        background-image: radial-gradient(#25252560 1.4px, transparent 0);
        background-size: 20px 20px; /* Espace entre les points */
    }
    
    #contain{
        background:#E6DBD5;
        width:600px;
        padding:20px;
        border:1.4px #252525 solid;
        border-radius:30px;
        margin:15px;
        display:flex;
        flex-wrap:wrap;
        justify-content:center;
    }

    
    #metro{
        display:flex;
        border:1.4px #252525 solid;
        border-radius:5px;
        padding:15px;
        gap:10px;
        align-items:center;
        
    }
    

    
    .title{
        font-family: 'Jaro', sans-serif;
        text-decoration:underline;
        font-weight:400;
        font-size:1.6rem;
        width:100%;
        margin:0;
        padding:0;
    }
    
    #metro div p{
        font-family: 'Jersey 25', cursive;
        font-size:1rem;
        margin:0;
        padding:0;
    }
    
    #metro img{
        width:100px;
    }
    
    form{
        display:flex;
        flex-wrap:wrap;
        justify-content:space-between;
        width:100%;
        margin-top:20px;
    }
    
    #space{
        width:100%;
        display:flex;
        gap:20px;
    }
    
    #un{
        border:1.4px #252525 solid;
        border-radius:5px;
        width:48%;
        padding:15px;
        gap:5px;
        display:flex;
        flex-wrap:wrap;
    }
    
    .selection select{
        all:initial;
        font-family: 'Jersey 25', cursive;
        font-size:1rem;
        width:100%;
        cursor:pointer;
        
    }
    
    .selection{
        width:100%;
        display:flex;
        align-items:center;
        justify-content:space-between;
        border-radius:5px;
        padding-left:5px;
        border:1.4px #252525 solid;
        position:relative;
        cursor:pointer;
    }
    
    .selection p{
        margin:0;
        padding:0;
        position:absolute;
        right:0;
    }
    
    #deux{
        border:1.4px #252525 solid;
        border-radius:5px;
        width:48%;
        padding:15px;
        gap:5px;
        display:flex;
        flex-wrap:wrap;
    }
    
    #quatre{
        width:100%;
        display:flex;
        justify-content:center;
        flex-wrap:wrap;
    }
    
    #quatre p{
        font-family: 'Jersey 25', cursive;
        font-size:1rem;
        width:100%;
        cursor:pointer;
        
    }
    
    #spans{
        width:80%;
        display:flex;
        justify-content:space-around;
        align-items:center;
        font-family: 'Jersey 25', cursive;
        font-size:2rem;
    }
    
    .spans{
        padding:20px 30px 20px 30px;
        border:1.4px #252525 solid;
        border-radius:5px;
    }
    
    #cinq{
        width:100%;
        margin-top:20px;
        display:flex;
        gap:20px;
        
    }
    
    #general{
        width:70%;
        border:1.4px #252525 solid;
        border-radius:5px;
        padding:15px;
        overflow:auto;
        height:200px;
        
    }
    
    #general img{
        width:100%;
    }
    
    #just{
        width:30%;
        border:1.4px #252525 solid;
        border-radius:5px;
        padding:15px;
        height:200px;
        overflow:auto;
    }
    
    #third p {
        font-family: 'Jersey 25', cursive;
        font-size:1rem;
        text-align:center;
    }
    
    #quatro table th, td {
        border: 1px solid #252525;
        padding: 12px;
        text-align: center;
        font-family: 'Jersey 25', cursive;
        font-size:1rem;
        text-align:left;
    }
    
    #quatro{
        margin-top:10px;

    }

    #fin{
       font-family: 'Jersey 25', cursive;
        font-size:1rem; 
        text-align:left;
        width:100%;
        margin:0;
        padding:0;
    }
    
    
    
    
    #lightbox {
      position: fixed;
      top: 0; left: 0;
      width: 100%; height: 100%;
      background: rgba(0, 0, 0, 0.2);
      display: none;
      justify-content: center;
      align-items: center;
    }

    #lightbox img {
      max-width: 90%;
      max-height: 90%;
      border: 5px solid white;
    }

    #lightbox:active {
      display: none;
    }
    
    img{
        cursor:pointer;
    }
    
    #uno{
        display:flex;
        flex-wrap:nowrap;
        align-items:center;
        gap:5px;
    }
    
    #dos{
    
        height:100%;
        display:flex;
        flex-direction:column;
        justify-content:space-between;
        width:30%;
    }
    #dos select{
        all:initial;
        font-family: 'Jersey 25', cursive;
        font-size:1rem; 
    }
    
    #prems{
        border:1.4px #252525 solid;
        border-radius:5px;
        padding:10px;
        display:flex;
        justify-content:space-between;
        align-items:center;
    }
    
    #again{
        border:1.4px #252525 solid;
        border-radius:5px;
        padding:10px;
        display:flex;
        justify-content:space-between;
        align-items:center;
    }
    
    @media only screen and (max-width: 1024px) {

      body{
          justify-content:center;
          align-items:start;
      }
        
    #contain{
        width:100%;
        margin:40px;
        border:4px #252525 solid;
        margin-top:100px;
        margin-bottom:100px;
    }
    
    .title{
        font-size:4rem;
    }
    
    h3{
        font-size:3rem;
    }
    
    #uno div p{
        font-size:2.6rem;
    }
    
    #uno img{
        width:200Px;
    }
    
    #uno{
        gap:20px;
    }
    
    #metro{
        all:initial;
        display:flex;
        flex-wrap:wrap;
        height:auto;
        gap:20px;
        align-items:start;
        border:4px #252525 solid;
        border-radius:5px;
        padding:10px;
    }
    
    #dos{
        
        flex-direction:row;
        align-items:center;
        justify-content:space-between;
        width:100%;
        position:relative;
        height:auto;
        gap:20px;
    }
    
    #dos div{
        border:4px #252525 solid;
        width:50%;
    }
    
    #dos div select{
        font-size:3rem;
        width:100%;
    }
    
    #dos div p{
        font-size:3rem;
    }
    
    #un{
        border:4px #252525 solid;
        font-size:3rem;
    }
    
    .selection{
        border:4px #252525 solid;
    }
    
    #un select{
        font-size:3rem;
    }
    
    #deux{
        border:4px #252525 solid;
        font-size:3rem;
    }
    
    #deux select{
        font-size:3rem;
    }
    
    #quatre p{
        font-size:3rem;
    }
    
    #quatre span{
        font-size:5rem;
    }
    
    #cinq{
        margin-top:40px;
    }
    
    #fin{
        font-size:3rem;
    }
    #general{
        height:400px;
    }
    
    #just{
        height:400px;
    }
    
    #just p{
        font-size:3rem;
    }

    }
    
</style>
<body>
    <div id='contain'>
        <div id="metro">
            <div id='uno'>
                <img src="Sans titre-1.png">
                <div>
                    <h3 class="title">Metro Do Porto</h3>
                    <p>Un système intéractif qui donne des informations sur les horraires du métro de Porto.</p>
                </div>
            </div>
            <div id='dos'>
                <div id='prems'>
                    <select>

                        <option>Metro B</option>

                    </select>
                    <p>▼</p>
                </div>
                <div id='again'>
                    <select id='type'>
                        <option value="normal" selected>Normal</option>
                        <option value="sabados">Week ends</option>
                    </select>
                    <p>▼</p>
                </div>
            </div>
        </div>
    
        <form method="POST" action='index.php' autocomplete="off">
            <div id='space'>
            <div id='un'>
            <h3 class="title">Destination :</h3>
            <div class='selection'>
                <select name="destination" id='dest'>
                    <option value="estadio">Estadio</option>
                    <option value="povoa">Povoa</option>
                </select>
                <p>▼</p>
            </div>
            </div>
            <div id='deux'>
            <h3 class="title">Arrêt :</h3>
            <div class='selection'>
                <select name='arret' id='stop'>
                    <?php
                    
                    $sql = "SELECT * from `metro_b_1`";
                    $statement = $connexion->prepare($sql);
                    $statement->execute();
                                
                    $results = $statement->fetchAll(PDO::FETCH_ASSOC);
                    foreach ($results as $row) {
                        foreach ($row as $arret => $horaire) {
                            echo "<option>" . $arret . "</option>";

                        }
                        break;
                    }
                    
                    ?>
                </select>
                <p>▼</p>
            </div>
            </div>
            </div>
            <div id='quatre'>
                <p>Le prochain métro en direction de <a id='go1'>Estadio</a>, depuis l’arrêt <a id='go2'>Povoa</a> arrive à...</p>
                <div id='spans'>
                    <span class="spans">0</span>
                    <span class="spans">0</span>
                    <span id='o'>:</span>
                    <span class="spans">0</span>
                    <span class="spans">0</span>
                </div>
            </div>
            <div id='cinq'>
                <div id="general">
                    <h3 class="title">Horaires :</h3>
                    <div id='quatro'>
                        <img id='image' src="Estadio Expr.png" onclick="openLightbox(this.src)">
                    </div>
                </div>
                <div id='just'>
                    <h3 class="title" id='second'>Povoa :</h3>
                    <div id='third'>
                        <?php
                        
            
                            $sql = "SELECT `Estadio do Dragao` from `metro_b_1`";
                            $statement = $connexion->prepare($sql);
                            $statement->execute();
                            
                            $results = $statement->fetchAll(PDO::FETCH_ASSOC);
                            foreach ($results as $row) {
                                    foreach ($row as $arret => $horaire) {
                                                echo "<p>" . $horaire . "</p>";
                                    }
                        
                            }
       
                        
                        ?>
                    </div>
                </div>
                
            </div>
        </form>
        <p id='fin'>Toutes les données sont issues de ce site : https://en.metrodoporto.pt/pages/396</p>
    </div>
    
    <div id="lightbox" onclick="this.style.display='none'">
    <img id="lightbox-img" src="">
  </div>

<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script>

window.addEventListener('load', () => {
    document.getElementById('type').selectedIndex = 0;
  });

var choix2 = "normal";

var type = document.getElementById('type');
type.addEventListener('change',function(){
    var third2 = document.getElementById('third');
    third2.innerHTML ="";
    choix2 = this.value;
    
    const spans = document.getElementById('spans');
    const childs = spans.querySelectorAll('span');

    childs.forEach((item, index) => {
        if(index != 2){
            item.textContent = "0";
        }else{
            item.textContent = ":";
        }
    });
    
            if(choix2 == "normal"){
                image.src = "Estadio Expr.png";
            }else{
                image.src = "Estadio week.png";
            }

})



function openLightbox(src) {
      document.getElementById('lightbox-img').src = src;
      document.getElementById('lightbox').style.display = 'flex';
    }

var indexo = 0;


    const select = document.getElementById('dest');
    const select2 = document.getElementById('stop');
    var table = "";

select.addEventListener('change', function () {
    
    const spans = document.getElementById('spans');
    const childs = spans.querySelectorAll('span');

    childs.forEach((item, index) => {
        if(index != 2){
            item.textContent = "0";
        }else{
            item.textContent = ":";
        }
    });
                
        



// Créer une nouvelle option
const nouvelleOption = document.createElement('option');
nouvelleOption.textContent = 'Heure';

// Ajouter l'option au select



        select2.style.display="block";
      const valeurChoisie = this.value;
      table = valeurChoisie;
      
      var go1 = document.getElementById('go1');
    go1.innerHTML = valeurChoisie;
      
      var image = document.getElementById('image');
      
        if(valeurChoisie == "estadio"){
            if(choix2 == "normal"){
                image.src = "Estadio Expr.png";
            }else{
                image.src = "Estadio week.png";
            }
            
        }
        if(valeurChoisie == "povoa"){
            if(choix2 == "normal"){
                image.src = "Povoa Expr.png";
            }else{
                image.src = "Povoa week.png";
            }
        }
     
      
      $.ajax({
        url:'ajax_table.php',
        data:{valeurChoisie:valeurChoisie},
        type:'POST',
        success: function(res){
            let arrets = res.split(',');
            
            select2.innerHTML = '';
          // Ajouter les nouvelles options
              arrets.forEach(arret => {
                const option = document.createElement('option');
                option.value = arret;
                option.textContent = arret;
                select2.appendChild(option);
              });
            }
        });
        
    })

    
select2.addEventListener('change', function () {
    const maintenant = new Date();
    const heureActuelle = maintenant.getHours() * 60 + maintenant.getMinutes();  // minutes totales
    
    const valeurChoisie = this.value;
    
    var go2 = document.getElementById('go2');
    go2.innerHTML = valeurChoisie;

    
    
    var second = document.getElementById('second');
    second.innerHTML = valeurChoisie;
    $.ajax({
        url:'ajax_time.php',
        data:{valeurChoisie:valeurChoisie, table:table,choix2:choix2},
        type:'POST',
        success: function(res){
            let arrets2 = res.split(',');
            
            const totalTirets = arrets2.reduce((count, arret) => {
                
                return count + (arret.split('-').length - 1);
            }, 0);
            

            
            // Étape 2 : indices où ajouter "Exp - " si 1 seul tiret est présent
            var lignesExp = [];
            if(choix2 == "normal"){
                if(table == "povoa"){
                    lignesExp = [3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55];
                }else{
                    lignesExp = [3, 5, 7, 10, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57];
                }
                
            }
            
            
            
            var third = document.getElementById('third');
            third.innerHTML = "";
            arrets2.forEach((arret, index) => {
                const option = document.createElement('option');
                option.value = arret;
            
                // Si 1 seul tiret et l'index correspond à l'une des lignes ciblées
                //console.log(totalTirets);
                if (totalTirets <= 1 && lignesExp.includes(index + 1)) {

                    
                    var p = document.createElement('p');
                    p.textContent = "Exp : " + arret;
                    third.appendChild(p);
                } else {

                    
                    var p = document.createElement('p');
                    p.textContent = arret;
                    third.appendChild(p);
                }
            

            });
            
            


            // Trouver la prochaine heure (la plus proche mais > heure actuelle)
            let prochaineHeure = null;
            for(let h of arrets2) {
                // Convertir h "HH:MM" en minutes totales
                const [hh, mm] = h.split(':').map(Number);
                const totalMinutes = hh * 60 + mm;
                
                if (totalMinutes > heureActuelle) {
                    prochaineHeure = h;
                    break;
                }
            }

            // Si on a trouvé une prochaine heure, on la met en option "placeholder" disabled et selected
            if (prochaineHeure) {
  
                const chars = prochaineHeure.split(''); // ["1", "4"]
                const spans = document.getElementById('spans');
                const childs = spans.querySelectorAll('span');

                childs.forEach((item, index) => {
                    item.textContent = chars[index] || ''; // Sécurité au cas où il y a moins de chiffres
                });
                
            }


        }
    });
});


    
    
    

</script>
</body>

Youez - 2016 - github.com/yon3zu
LinuXploit