Viewed   58 times
<body>
  <div> <?= $_POST['msg'] ?> </div>
  <form id="frm" method="post">
    <input type="hidden" name='msg' value='{"field0": "Im a string", "field1": 84, "field3": "so am I"}' />
    <input type="submit" value="test" />
  </form>
</body>

When the form is posted, the following string is displayed between the div tags.

{"field0": "Im a string", "field1": 84, "field3": "so am I"}

Why are the escape characters being added? Are they being added by the PHP server or the web client? Can I do anything to prevent this?

Someone already mentioned the PHP function stripslashes. I'm using it for now but I want to get rid of the slashes all together.

 Answers

4

Check whether your PHP configuration has magic_quotes_gpc activated, in such case the PHP server automatically adds slashes to GET/POST/cookie values...

Saturday, November 26, 2022
 
4

Ok first thing to do when getting data from an external source is to understand what is being returned.

So do

<?php
$json=file_get_contents("http://west.basketball.nl/db/json/stand.pl?szn_Naam=2014-2015&cmp_ID=373");
$data =  json_decode($json);

print_r($data);

Result:

stdClass Object
(
    [stand] => Array
        (
            [0] => stdClass Object
                (
                    [afko] => Risne Stars HS 1
                    [ID] => 2091
                    [status] => Actief
                    [gespeeld] => 3
                    [percentage] => 100.0
                    [punten] => 6
                    [tegenscore] => 149
                    [eigenscore] => 191
                    [datum] => 2014-10-05
                    [saldo] => 42
                    [team] => Risne Stars Heren 1
                    [positie] => 1
                )

            [1] => stdClass Object
                (
                    [afko] => D.B.V. Arriba HS 2
                    [ID] => 1813
                    [status] => Actief
                    [gespeeld] => 2
                    [percentage] => 0.0
                    [punten] => 0
                    [tegenscore] => 116
                    [eigenscore] => 102
                    [datum] => 2014-10-05
                    [saldo] => -14
                    [team] => D.B.V. Arriba Heren 2
                    [positie] => 10
                )

            [2] => stdClass Object
                (
                    [afko] => The Valley Bucketeers HS 2
                    [ID] => 2430
                    [status] => Actief
                    [gespeeld] => 2
                    [percentage] => 0.0
                    [punten] => 0
                    [tegenscore] => 177
                    [eigenscore] => 70
                    [datum] => 2014-10-05
                    [saldo] => -107
                    [team] => The Valley Bucketeers Heren 2
                    [positie] => 11
                )

            [3] => stdClass Object
                (
                    [afko] => Uitsmijters HS 2
                    [ID] => 2143
                    [status] => Actief
                    [gespeeld] => 2
                    [percentage] => 100.0
                    [punten] => 4
                    [tegenscore] => 79
                    [eigenscore] => 161
                    [datum] => 2014-10-05
                    [saldo] => 82
                    [team] => Uitsmijters Heren 2
                    [positie] => 2
                )

            [4] => stdClass Object
                (
                    [afko] => Picker Reds HS 1
                    [ID] => 2056
                    [status] => Actief
                    [gespeeld] => 3
                    [percentage] => 66.7
                    [punten] => 4
                    [tegenscore] => 193
                    [eigenscore] => 184
                    [datum] => 2014-10-05
                    [saldo] => -9
                    [team] => Picker Reds Heren 1
                    [positie] => 3
                )

            [5] => stdClass Object
                (
                    [afko] => Peatminers HS 2
                    [ID] => 6247
                    [status] => Actief
                    [gespeeld] => 1
                    [percentage] => 100.0
                    [punten] => 2
                    [tegenscore] => 36
                    [eigenscore] => 64
                    [datum] => 2014-10-05
                    [saldo] => 28
                    [team] => Peatminers Heren 2
                    [positie] => 4
                )

            [6] => stdClass Object
                (
                    [afko] => Jolly Jumpers HS 1
                    [ID] => 1994
                    [status] => Actief
                    [gespeeld] => 2
                    [percentage] => 50.0
                    [punten] => 2
                    [tegenscore] => 103
                    [eigenscore] => 119
                    [datum] => 2014-10-05
                    [saldo] => 16
                    [team] => Jolly Jumpers Heren 1
                    [positie] => 5
                )

            [7] => stdClass Object
                (
                    [afko] => TONEGO '65 HS 2
                    [ID] => 2120
                    [status] => Actief
                    [gespeeld] => 2
                    [percentage] => 50.0
                    [punten] => 2
                    [tegenscore] => 107
                    [eigenscore] => 122
                    [datum] => 2014-10-05
                    [saldo] => 15
                    [team] => TONEGO '65 Heren 2
                    [positie] => 6
                )

            [8] => stdClass Object
                (
                    [afko] => Amical HS 2
                    [ID] => 1791
                    [status] => Actief
                    [gespeeld] => 3
                    [percentage] => 33.3
                    [punten] => 2
                    [tegenscore] => 180
                    [eigenscore] => 195
                    [datum] => 2014-10-05
                    [saldo] => 15
                    [team] => Amical Heren 2
                    [positie] => 7
                )

            [9] => stdClass Object
                (
                    [afko] => S.V.Z.W. HS 2
                    [ID] => 5526
                    [status] => Actief
                    [gespeeld] => 3
                    [percentage] => 33.3
                    [punten] => 2
                    [tegenscore] => 174
                    [eigenscore] => 151
                    [datum] => 2014-10-05
                    [saldo] => -23
                    [team] => S.V.Z.W. Heren 2
                    [positie] => 8
                )

            [10] => stdClass Object
                (
                    [afko] => Twente Buzzards HS 3
                    [ID] => 2294
                    [status] => Actief
                    [gespeeld] => 3
                    [percentage] => 33.3
                    [punten] => 2
                    [tegenscore] => 196
                    [eigenscore] => 151
                    [datum] => 2014-10-05
                    [saldo] => -45
                    [team] => Twente Buzzards Heren 3
                    [positie] => 9
                )

        )

    [nummer] => OHS2C
    [version] => 1.0
    [aantal_teams] => 11
    [id] => 373
    [seizoen] => 2014-2015
    [naam] => Oost Afdeling Heren Senioren 2e klasse C
    [gewijzigd] => 2014-10-05 18:34:25
)

So now you know you are dealing with an OBJECT and not scalar values or an array.

So try this code:-

<?php
    $json=file_get_contents("http://west.basketball.nl/db/json/stand.pl?szn_Naam=2014-2015&cmp_ID=373");
    $data =  json_decode($json);

    if (count($data->stand)) {
        // Open the table
        echo "<table>";

        // Cycle through the array
        foreach ($data->stand as $idx => $stand) {

            // Output a row
            echo "<tr>";
            echo "<td>$stand->afko</td>";
            echo "<td>$stand->positie</td>";
            echo "</tr>";
        }

        // Close the table
        echo "</table>";
    }
?>
Wednesday, August 10, 2022
3

Just saw you message and realised I hadn't gotten back to you about this. Maybe this will lead you in the right direction:

<?php

$opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0rn"));
$context = stream_context_create($opts);
$html = file_get_contents('http://www.studentenwerk-karlsruhe.de/de/essen/?view=ok&STYLE=popup_plain&c=erzberger&p=1&kw=3',false,$context);

libxml_use_internal_errors(true);
$dom = new DomDocument;
$dom->loadHTML($html);
$xpath = new DomXPath($dom);
$nodes = $xpath->query("//table[@class='easy-tab-dot']");
//header("Content-type: text/plain");

foreach ($nodes as $i => $node) {
    $arr = array();

    $children = $node->childNodes;
    foreach ($children as $child) {
        $tmp_doc = new DOMDocument();
        $tmp_doc->appendChild($tmp_doc->importNode($child,true));       
        #echo $tmp_doc->saveHTML();
        print_r( $child );
    }
    echo "#######################################################################################";
}
Sunday, December 25, 2022
 
2

It depends on the method you send the form with.

With GET, there is a commonly agreed on limit of about 1-2 kilobytes, depending on browser and server limitations.

With POST, there is no technical limit in the browser, but usually one on the server side - see e.g. Apache's LimitRequestBody, PHP's post_max_size and so on.

Monday, November 21, 2022
 
3

The code creates an array of objects referring to the days of the week as well as a Date object oDate used to retrieve the current date information. If the day of the week is not Friday, then user is advised to wait till Friday.

The hidden input "due_date" has its value set to two days from the current date unless that day is Friday in which case the due date becomes 4 days later, to skip the weekend and add the usual 2 days to the waiting period. If the hidden input were part of a form, once it is submitted, and the data validated, assuming submission by POST, one could use variable $_POST["due_date"] in an INSERT query to store that value in a database, making sure to use either mysqli_real_escape_string() or PDO and bound parameters.

Note: I altered the HTML so that both the NAME and ID attributes of the hidden input are both set to "due_date".

var d = document;
d.g = d.getElementById;

var arrDaysOfWeek = {"Sunday":0,"Monday":1,"Tuesday":2,"Wednesday":3,"Thursday":4,"Friday":5,"Saturday":6};

var arrWkDayNames = Object.keys( arrDaysOfWeek );

var oDate = new Date();
var currDay = oDate.getDay();

var md = oDate.getDate();
var mm = oDate.getMonth() + 1;
var y =  oDate.getFullYear();


var waitPeriod = 2;  // default

var daysTillFriday = (currDay == 0)? arrDaysOfWeek["Friday"]
: arrDaysOfWeek["Friday"] - currDay;

if (currDay == arrDaysOfWeek["Saturday"]) {
   daysTillFriday = arrWeekDayNames.length + arrDaysOfWeek["Friday"] - currDay;
}

var mess = "";

if (currDay != arrDaysOfWeek["Friday"] ) {
    mess = "nYou should wait to borrow on Friday, i.e. " + daysTillFriday + " days from today.";
}

if( currDay + 2 != arrDaysOfWeek["Friday"] ) {
 daysTillFriday = arrDaysOfWeek["Friday"] - currDay - 2;
 
  mess += "nSo, best not even in two days. Just wait till Friday which will be in " + daysTillFriday  + " days from two days from now.";
  
}

waitPeriod = (currDay == arrDaysOfWeek["Friday"] )
? 4 //skip sat. & sun. plus 2
: 2; // usual wait period


oDate.setDate(md + waitPeriod);


mess += "nTo proceed know that the happening date is " + oDate;

//USA date style ...
var date_parts = [ mm, md, y ];

mess += "nToday is " + arrWkDayNames[ currDay ] + ", " + date_parts.join("/");

d.g("display").textContent = mess;

d.g("due_date").value = oDate;
console.log( "Hidden input due date value: " +  d.g("due_date").value );
<div id="display"></div>

<input type="hidden" name="due_date" id="due_date" maxlength="10" style="border: 3px double #CCCCCC;" required/>
Friday, October 7, 2022
Only authorized users can answer the search term. Please sign in first, or register a free account.
Not the answer you're looking for? Browse other questions tagged :