Web-sovellus

Viestiketju alueella 'Ohjelmointi' , aloittaja Erikoisjääkäri, 14.05.2019.

NOSTOJA MUROPAKETIN SISÄLLÖSTÄ
  1. Erikoisjääkäri

    Rekisteröitynyt:
    01.07.2018
    Viestejä:
    4
    Tarvitsisin apua web-ohjelmassa, jota ohjelmoin HTML, JavaScript (myös jQuery) ja PHP -ohjelmointikielillä. En kuitenkaan saa lähetettyä jQueryn avulla post-metodilla PHP:lle käyttäjänimeä.

    Ohessa pätkä koodia (sijaitsevat samalla sivulla):


    <script>
    var url = document.URL;

    do{
    username = prompt("How would you like to be called");
    }while(input == null || input == "" );

    alert("username");

    $.post(url, {user: username});

    </script>

    <?php
    $message = $_POST['text'];
    $username = $_POST['user'];

    $message = stripslashes(htmlspecialchars($message));
    $nmessage = stripslashes(htmlspecialchars($username));
    $kp = ": ";
    $bold = "<b>";
    $boldc = "</b>";
    $br = "<br>";
    $newuser = "<i>User ";
    $newuserend = " joined</i><br>";
    $myfile = fopen("publicroom_log.html", "a") or die("Unable to open log file!");
    if ($message === "") {
    echo "";
    //Estaa tyhjat viestit
    }
    else {
    $txt = $bold;
    fwrite($myfile, $txt);
    $txt = $nmessage;
    fwrite($myfile, $txt);
    $txt = $kp;
    fwrite($myfile, $txt);
    $txt = $boldc;
    fwrite($myfile, $txt);
    $txt = $message;
    fwrite($myfile, $txt);
    $txt = $br;
    fwrite($myfile, $txt);
    }
    ?>

    Kiitos jo etukäteen
     
  2. Grez

    Rekisteröitynyt:
    30.04.2001
    Viestejä:
    5 837
    Tee yksi asia kerrallaan ja sohella vähemmän, niin kyllä se siitä lähtee.

    Tuossa koodissasi ensinnäkin tätä
    Koodi:
    do{
    username = prompt("How would you like to be called");
    }while(input == null || input == "" );
    ei saada koskaan suoritettua, koska input on aina "undefined". (Huomaa että sijoitat vastauksen username-muuttujaan, luultavasti haluaisit että input tilalla lukisi username.)

    Sitten jos koodin suoritus pääsee tuohon $.post( .. riville asti niin se kyllä toimii ihan hyvin, mutta PHP-puolen koodi ei tee mitään koska $_POST['text'] on aina tyhjä. Eli vaikka ajax-kutsulla lähettämäsi $_POST['user'] välittyykin hienosti perille niin se ei tee muuta kuin:
    Koodi:
    if ($message === "") {
    echo "";
    //Estaa tyhjat viestit
    }
    else {
      //Else-lohkoa ei käytännössä suoriteta
    }
    
     
    Viimeksi muokattu: 14.05.2019
  3. Erikoisjääkäri

    Rekisteröitynyt:
    01.07.2018
    Viestejä:
    4
    Kiitos kovasti vastauksestasi. Sain usernamen jopa määriteltyä.

    En kuitenkaan saanut ohjelmaa lisäämään käyttäjänimeä viestiin. Ohessa koko sivun koodi.

    Koodi:
     <html lang="en" dir="ltr">
       <head>
         <meta charset="utf-8">
         <title>Mutemail</title>
         <style>
         body {
             font: helvetica;
            background-image: url("https://mutemail.tk/photos/newsecuremail.png");
             background-repeat: no-repeat;
             background-size: 100% 45px;
             padding:35px;
          }
    
          #chatbox {
            color: white;
            display: block;
            /*background-color: lightblue;*/
            background-image: url("https://mutemail.tk/photos/mutemail-background.jpg");
            background-size: 100% 100%;
          }
    
          input.field{width:auto; float:left;}
    
          .fieldwrapper { position: relative; }
    
          a {
            color: blue;
          }
    
          .subbutton { position: absolute; top: 0px; left: 720px; }
    
          input[type=text]{
            padding: 7px;
          }
    
          form {
            text-align: left;
          }
    
    
         @media only screen and (max-width:920px) {
           /* For mobile phones: */
           #chatbox {
             width:100%;
             float: none;
           }
           input[type=text] {
            padding: 1%;
            width: 100%;
            height: 3%;
          }
         }
         </style>
         <!-- Needed for monile responsivity -->
         <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <!-- Logo -->
        <link rel="icon" type="image/png" href="https://mutemail.tk/photos/mutmeila77.png">
        <script>
          //Script detects connection protocol
          if (location.protocol !== "https:") {
            location.protocol = "https:";
          }
        </script>
        <script type="text/javascript" src="https://kaikkitietokoneista.fi/jquery-3.4.1.min.js"></script>
        <script>
        var url = document.URL;
    
        do{
          username = prompt("How would you like to be called");
        }while(username == null || username == "" );
    
         alert(username);
    
        </script>
       </head>
       <body>
    
    
          <div id="hideable">
           <br>
           <center><p><a>Exit chat</a> | <a href="https://kaikkitietokoneista.fi">Home</a> | <a>Help (coming soon)</a></p></center>
           <div class="chatbox" id="chatbox">Loading messages...</div>
           <script>
             var url = document.URL;
    
             function chat() {
    
            //Save position
             var tempScrollTop = $(window).scrollTop();
    
             //Some code
             $("#chatbox")
                  .html('<object data="https://mutemail.tk/publicroom_log.html" width="100%" height="80%"/>'), function() {
                    $(this).trigger("pagecreate");
                }
    
             //And sets the old position
             $(window).scrollTop(tempScrollTop);
    
              }
    
              chat();
              // OLD VERSION -->
              //setInterval (chat, 2500);
           </script>
    
           <br>
           <div class="fieldwrapper">
            <form name="message" action="">
              <input type="text" id="usermsg" size="100%" placeholder="Message...">
              <input name="submitmsg" class="subbutton" src="https://mutemail.tk/photos/sendmail.png" width="45px" height="35px" alt="Send" type="image" id="submitmsg">
            </form>
           </div>
    
            <script>
            //javascript incoming messages handling
            var url = document.URL;
            //alert(url);
            $("#submitmsg").click(function(){
                  var clientmsg = $("#usermsg").val();
                  $.post(url, {text: clientmsg});
                  $("#usermsg").val('');//.attr("value", "");
              $.post(url, {user: username});
                  return false;
              });
    
            </script>
    
            <?php
            $message = $_POST['text'];
            $username = $_POST['user'];
    
            $message = stripslashes(htmlspecialchars($message));
            $nmessage = stripslashes(htmlspecialchars($username));
            $kp = ": ";
            $bold = "<b>";
            $boldc = "</b>";
            $br = "<br>";
            $myfile = fopen("publicroom_log.html", "a") or die("Unable to open log file!");
            if ($message === "") {
              echo "";
              //Estaa tyhjat viestit
            }
            else {
              $txt = $bold;
              fwrite($myfile, $txt);
              $txt = $username;
              fwrite($myfile, $txt);
              $txt = $kp;
              fwrite($myfile, $txt);
              $txt = $boldc;
              fwrite($myfile, $txt);
              $txt = $message;
              fwrite($myfile, $txt);
              $txt = $br;
              fwrite($myfile, $txt);
            }
             ?>
    
        </div>
       </body>
     </html>
    
     
  4. Erikoisjääkäri

    Rekisteröitynyt:
    01.07.2018
    Viestejä:
    4
    Vastaan tässä itselleni, kun sain koodin toimimaan kunnolla.
    POST korjattu:

    Koodi:
    $.post(url, {text: clientmsg, user: username});
    
    Ja php:tä muutettu luettavammaksi:

    PHP:
            $message $_POST['text'];
            
    $username $_POST['user'];

            
    $message stripslashes(htmlspecialchars($message));
            
    $username stripslashes(htmlspecialchars($username));

            
    $wtext "<b>".$username.":</b> ".$message."<br>";
            
    $myfile fopen("publicroom_log.html""a") or die("Unable to open log file!");
            if (
    $message === "") {
              echo 
    "";
              
    //Estaa tyhjat viestit
            
    }
            else {
              
    $txt $wtext;
              
    fwrite($myfile$txt);
            }
     
  5. embedded

    Rekisteröitynyt:
    01.11.2000
    Viestejä:
    856
    Asiasta kolmanteen, tuo koodi
    Koodi:
    $txt = $bold;
    fwrite($myfile, $txt);
    $txt = $nmessage;
    fwrite($myfile, $txt);
    $txt = $kp;
    fwrite($myfile, $txt);
    $txt = $boldc;
    fwrite($myfile, $txt);
    $txt = $message;
    fwrite($myfile, $txt);
    $txt = $br;
    fwrite($myfile, $txt);
    Kannattaisi kirjoitaa ihan muodossa

    $stringToWrite = '<b>'.$nmessage.': </b><br>'.$message.'<br>';
    fwrite($myfile, $stringToWrite);

    ja errorikin ottaa haltuun hos frite palauttaa falsen
     

Jaa tämä sivu

Alibi
Anna
Deko
Dome
Erä
Hymy
Kaksplus
Kippari
Kotilääkäri
Kotiliesi
Koululainen
Ruoka.fi
Parnasso
Seura
Suomen Kuvalehti
TM Rakennusmaailma
Tekniikan Maailma
Vauhdin Maailma
Golfpiste
Vene
Nettiauto
Ampparit
Plaza
Muropaketti