<?xml version="1.0"?>
<rss version="2.0"><channel><title>PHP Coding Help Latest Topics</title><link>https://forums.phpfreaks.com/forum/13-php-coding-help/</link><description>PHP Coding Help Latest Topics</description><language>en</language><item><title>Going insane. Ajax call sets session as expected but does not persist.</title><link>https://forums.phpfreaks.com/topic/326692-going-insane-ajax-call-sets-session-as-expected-but-does-not-persist/</link><description><![CDATA[<p>
	Don't know if I should post this here or in the jquery forum.
</p>

<p>
	 
</p>

<p>
	But here is the deal.
</p>

<p>
	 
</p>

<p>
	My index.php has the following ....
</p>

<p>
	 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pun">&lt;?</span><span class="pln">php
session_start</span><span class="pun">(</span><span class="pln"> </span><span class="pun">[</span><span class="pln"> </span><span class="str">'cookie_lifetime'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">86400</span><span class="pun">,</span><span class="pln"> </span><span class="pun">]);</span><span class="pln">
</span><span class="com">//session_start();</span><span class="pln">


</span><span class="com">//$SID = session_id();</span><span class="pln">


ini_set</span><span class="pun">(</span><span class="str">'display_errors'</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln"> ini_set</span><span class="pun">(</span><span class="str">'display_startup_errors'</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln"> error_reporting</span><span class="pun">(</span><span class="pln">E_ALL</span><span class="pun">);</span><span class="pln">

include_once</span><span class="pun">(</span><span class="pln"> </span><span class="str">'../gallerysoftconfig.php'</span><span class="pun">);</span><span class="pln">
include_once</span><span class="pun">(</span><span class="pln"> </span><span class="str">'functions.php'</span><span class="pun">);</span><span class="pln">
include_once</span><span class="pun">(</span><span class="pln"> </span><span class="str">'../iconfig.php'</span><span class="pun">);</span><span class="pln">

include_once</span><span class="pun">(</span><span class="pln"> </span><span class="str">'indexPreChecks.php'</span><span class="pun">);</span><span class="pln">
include_once</span><span class="pun">(</span><span class="pln"> </span><span class="str">'sessionChecks.php'</span><span class="pun">);</span><span class="pln">
include_once</span><span class="pun">(</span><span class="pln"> </span><span class="str">'screenDetect.php'</span><span class="pun">);</span><span class="pln">

</span><span class="com">//print_r($_SESSION);</span><span class="pln">

</span><span class="com">//$xyz = $_SESSION['gs_session_screen_width'];</span><span class="pln">
</span><span class="com">//echo "Width: $xyz &lt;br&gt;";</span></pre>

<p>
	<br /><br />
	As you can see lots commented out for testing
</p>

<p>
	 
</p>

<p>
	Then the issue is in screenDetect.php  
</p>

<p>
	 
</p>

<p>
	And here is screenDetect.php
</p>

<p>
	 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pun">&lt;?</span><span class="pln">php

</span><span class="kwd">if</span><span class="pun">(</span><span class="pln"> isset</span><span class="pun">(</span><span class="pln">$_REQUEST</span><span class="pun">[</span><span class="str">'sw'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
   $screenWidth </span><span class="pun">=</span><span class="pln"> $_REQUEST</span><span class="pun">[</span><span class="str">'sw'</span><span class="pun">];</span><span class="pln">
   $_SESSION</span><span class="pun">[</span><span class="str">'gs_session_screen_width'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> $screenWidth</span><span class="pun">;</span><span class="pln">
   </span><span class="com">//$s = $_SESSION['gs_session_screen_width'];</span><span class="pln">
   </span><span class="com">//echo "New session  processed: $s";</span><span class="pln">
   </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">


</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$_SESSION</span><span class="pun">[</span><span class="str">'gs_session_screen_width'</span><span class="pun">])</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  $screenWidth </span><span class="pun">=</span><span class="pln"> $_SESSION</span><span class="pun">[</span><span class="str">'gs_session_screen_width'</span><span class="pun">];</span><span class="pln">
  </span><span class="com">//echo "Session processed: $screenWidth";</span><span class="pln">
  </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">


</span><span class="kwd">if</span><span class="pun">(!</span><span class="pln"> isset</span><span class="pun">(</span><span class="pln">$_SESSION</span><span class="pun">[</span><span class="str">'gs_session_screen_width'</span><span class="pun">])</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

   echo </span><span class="str">'
      &lt;script src="https://apis.google.com/js/platform.js" async defer&gt;&lt;/script&gt;
      &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"&gt;&lt;/script&gt;
      &lt;script type="text/javascript"&gt;
         var screenWidth = screen.width;
         $.ajax({
           type: "POST",
           url: "/screenDetect.php",
           data: {sw: screenWidth},
           success: function() {
           }
         });
      &lt;/script&gt;
   '</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">?&gt;</span></pre>

<p>
	 
</p>

<p>
	There are some comments there that I use for validation But the story is, that the ajax call is simply getting the device screen size and calling it self with a POST.  That works just fine
</p>

<p>
	 
</p>

<p>
	The if( isse($_REQUEST['sw']) ) does get executed and sets the session.  I have validated this by assigning the session to a variable and it does print it. I even do a print_r($_SESSION) and I see it. However, when I pickup  the code in index.php, the session that was set there is no longer visible. Its like it never existed.
</p>

<p>
	 
</p>

<p>
	I have tried the session_start() at the begining of screenDetect but no luck.
</p>

<p>
	 
</p>

<p>
	Any idea what is going on ???
</p>

<p>
	 
</p>

<p>
	Thanks
</p>

<p>
	 
</p>

<p>
	JT
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">326692</guid><pubDate>Mon, 03 Feb 2025 02:18:44 +0000</pubDate></item><item><title>Difficulty with stripos</title><link>https://forums.phpfreaks.com/topic/326704-difficulty-with-stripos/</link><description><![CDATA[<p>
	Late night and lacking sleep is no time to mingle with stripos.
</p>

<p>
	I was playing with some sloppy code and I could use a hand to get it of my mind.
</p>

<p>
	Here are the essentials of what I have
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted"><span class="com">//a string of HTML to throw into a variable</span><span class="pln">
$page </span><span class="pun">=</span><span class="str">"&lt;h2&gt; item 1 &lt;/h2&gt;
&lt;p&gt; day &lt;/p&gt; &lt;p&gt; time &lt;/p&gt;
&lt;h2&gt; item 2 &lt;/h2&gt;
&lt;p&gt; day &lt;/p&gt; &lt;p&gt; time &lt;/p&gt;
&lt;h2&gt; item 3 &lt;/h2&gt;
&lt;p&gt; day &lt;/p&gt; &lt;p&gt; time &lt;/p&gt;"</span><span class="pun">;</span><span class="pln">

$start </span><span class="pun">=</span><span class="pln"> stripos</span><span class="pun">(</span><span class="pln">$page</span><span class="pun">,</span><span class="pln"> </span><span class="str">'h2'</span><span class="pun">);</span><span class="pln">
$end </span><span class="pun">=</span><span class="pln"> stripos</span><span class="pun">(</span><span class="pln">$page</span><span class="pun">,</span><span class="pln"> </span><span class="str">'/h2'</span><span class="pun">);</span><span class="pln">
$len </span><span class="pun">=</span><span class="pln"> $end </span><span class="pun">-</span><span class="pln"> $srart$html_section </span><span class="pun">=</span><span class="pln"> $find </span><span class="pun">=</span><span class="pln"> substr</span><span class="pun">(</span><span class="pln">$page</span><span class="pun">,</span><span class="pln"> $start</span><span class="pun">,</span><span class="pln"> $len</span><span class="pun">);</span></pre>

<p>
	This worked to get me item 1
</p>

<p>
	However, I'd like to loop through and get the other items too, and eventually the &lt;p&gt; elements also.
</p>

<p>
	I am trying to stay within the PHP structure. I was considering a while loop that would increase the pos of the next progressive $start by adding the $len of the previous effort, but I couldn't remember the correct methodology.
</p>

<p>
	Guidance and input please.
</p>
]]></description><guid isPermaLink="false">326704</guid><pubDate>Tue, 04 Feb 2025 16:26:58 +0000</pubDate></item><item><title><![CDATA[cannot cast to int when calling inline <script> from php returns string but shows something else.]]></title><link>https://forums.phpfreaks.com/topic/326705-cannot-cast-to-int-when-calling-inline-from-php-returns-string-but-shows-something-else/</link><description><![CDATA[<p>
	I have this simple line of code which  somewhat works. Until I try to do math against the $screenWidth
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">$screenWidth = '</span><span class="tag">&lt;script&gt;</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="pln">screen</span><span class="pun">.</span><span class="pln">width</span><span class="pun">);</span><span class="pln"> </span><span class="tag">&lt;/script&gt;</span><span class="pln">';</span></pre>

<p>
	<br /><br />
	If I echo $screenWidth I see 3072 which is what I expect.
</p>

<p>
	But if I do something like 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">$nw = $screenWidth - 20; </span></pre>

<p>
	I get a php error about an Unsupported operand type  string - int
</p>

<p>
	I tried casting $screenWidth = intval($screenWidth)  but I always get 0.
</p>

<p>
	So I do some more debugging with this little bit of code
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">echo "</span><span class="tag">&lt;pre&gt;</span><span class="pln">";
   print_r(str_split($screenWidth));
echo "</span><span class="tag">&lt;/pre&gt;</span><span class="pln">";

echo "</span><span class="tag">&lt;br&gt;</span><span class="pln">";
if( is_numeric($screenWidth) ) {
  echo "Numeric $screenWidth</span><span class="tag">&lt;/br&gt;</span><span class="pln">";
} else {
  echo "String $screenWidth</span><span class="tag">&lt;/br&gt;</span><span class="pln">";
}</span></pre>

<p>
	<br /><br />
	And here is what I get
</p>

<p>
	 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">Array
(
    [0] =&gt; &lt;
    [1] =&gt; s
    [2] =&gt; c
    [3] =&gt; r
    [4] =&gt; i
    [5] =&gt; p
    [6] =&gt; t
    [7] =&gt; &gt;
    [8] =&gt;  
    [9] =&gt; d
    [10] =&gt; o
    [11] =&gt; c
    [12] =&gt; u
    [13] =&gt; m
    [14] =&gt; e
    [15] =&gt; n
    [16] =&gt; t
    [17] =&gt; .
    [18] =&gt; w
    [19] =&gt; r
    [20] =&gt; i
    [21] =&gt; t
    [22] =&gt; e
    [23] =&gt; (
    [24] =&gt; s
    [25] =&gt; c
    [26] =&gt; r
    [27] =&gt; e
    [28] =&gt; e
    [29] =&gt; n
    [30] =&gt; .
    [31] =&gt; w
    [32] =&gt; i
    [33] =&gt; d
    [34] =&gt; t
    [35] =&gt; h
    [36] =&gt; )
    [37] =&gt; ;
    [38] =&gt;  
    [39] =&gt; &lt;
    [40] =&gt; /
    [41] =&gt; s
    [42] =&gt; c
    [43] =&gt; r
    [44] =&gt; i
    [45] =&gt; p
    [46] =&gt; t
    [47] =&gt; &gt;
)

String 3072</span></pre>

<p>
	 
</p>

<p>
	And var_dump($screenWidth) shows
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">string(48) "3072"
</span></pre>

<p>
	 
</p>

<p>
	I cant tried the ajax method but setting a session is not working as expected. In reality the one line of code is really simple if only I can get the actual numeric value to manipulate in my code.
</p>

<p>
	 
</p>

<p>
	Any thoughts?
</p>

<p>
	 
</p>

<p>
	Thanks
</p>
]]></description><guid isPermaLink="false">326705</guid><pubDate>Tue, 04 Feb 2025 16:28:20 +0000</pubDate></item><item><title>Array key question</title><link>https://forums.phpfreaks.com/topic/326665-array-key-question/</link><description><![CDATA[<p>
	While solving my issue from yesterday, I discovered that I can use an associative array with key names that have space.
</p>

<p>
	ie: $arr['i never knew'][0]
</p>

<p>
	Normally, I would have used underscores to fill spaces OR removed them completely.
</p>

<p>
	Is this a new feature that I stumbled upon? Is it safe to use? Are there drawbacks?
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">326665</guid><pubDate>Tue, 28 Jan 2025 10:24:53 +0000</pubDate></item><item><title>Best way to log last logged in IP address and registered IP address</title><link>https://forums.phpfreaks.com/topic/326686-best-way-to-log-last-logged-in-ip-address-and-registered-ip-address/</link><description><![CDATA[<p>
	Hello,
</p>

<p>
	I'm looking to log the last logged in IP address from my users' accounts and their IP address used on registration. I would prefer to store the IP addresses in my database (`last_ip`) and (`registered_ip`)
</p>

<p>
	As far as I'm aware, the best way to store an IP address in MySQL is VARBINARY(16) for IPV6 and VARBINARY(4) for IPV4.
</p>

<p>
	Login.php
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted"><span class="pun">&lt;?</span><span class="pln">php
</span><span class="com">// Initialize the session</span><span class="pln">
session_start</span><span class="pun">();</span><span class="pln">
 
</span><span class="com">// Check if the user is already logged in, if yes then redirect to dashboard</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$_SESSION</span><span class="pun">[</span><span class="str">"loggedin"</span><span class="pun">])</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> $_SESSION</span><span class="pun">[</span><span class="str">"loggedin"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">===</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">){</span><span class="pln">
    header</span><span class="pun">(</span><span class="str">"location: dashboard.php"</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">exit</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">// Include ShareX config file</span><span class="pln">
$config </span><span class="pun">=</span><span class="pln"> include</span><span class="pun">(</span><span class="str">'../i/cfg/config.php'</span><span class="pun">);</span><span class="pln">

</span><span class="com">// Include ASE config file</span><span class="pln">
include_once</span><span class="pun">(</span><span class="str">'../ase/cfg/config.php'</span><span class="pun">);</span><span class="pln">

</span><span class="com">// Define variables and initialize with empty values</span><span class="pln">
$username </span><span class="pun">=</span><span class="pln"> $password </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">
$username_err </span><span class="pun">=</span><span class="pln"> $password_err </span><span class="pun">=</span><span class="pln"> $login_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">

</span><span class="com">// Processing form data when form is submitted</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$_SERVER</span><span class="pun">[</span><span class="str">"REQUEST_METHOD"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">"POST"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">

    </span><span class="com">// Check if username is empty</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"username"</span><span class="pun">])))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        $username_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Please enter your username."</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">else</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        $username </span><span class="pun">=</span><span class="pln"> trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"username"</span><span class="pun">]);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// Check if password is empty</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"password"</span><span class="pun">])))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        $password_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Please enter your password."</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">else</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        $password </span><span class="pun">=</span><span class="pln"> trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"password"</span><span class="pun">]);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// Validate credentials</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">$username_err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> empty</span><span class="pun">(</span><span class="pln">$password_err</span><span class="pun">))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="com">// Prepare a select statement</span><span class="pln">
        $sql </span><span class="pun">=</span><span class="pln"> </span><span class="str">"SELECT userID, username, password FROM users WHERE username = ?"</span><span class="pun">;</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$stmt </span><span class="pun">=</span><span class="pln"> mysqli_prepare</span><span class="pun">(</span><span class="pln">$link</span><span class="pun">,</span><span class="pln"> $sql</span><span class="pun">))</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="com">// Bind variables to the prepared statement as parameters</span><span class="pln">
            mysqli_stmt_bind_param</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">,</span><span class="pln"> </span><span class="str">"s"</span><span class="pun">,</span><span class="pln"> $param_username</span><span class="pun">);</span><span class="pln">

            </span><span class="com">// Set parameters</span><span class="pln">
            $param_username </span><span class="pun">=</span><span class="pln"> $username</span><span class="pun">;</span><span class="pln">

            </span><span class="com">// Attempt to execute the prepared statement</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">mysqli_stmt_execute</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">))</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="com">// Store result</span><span class="pln">
                mysqli_stmt_store_result</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">);</span><span class="pln">

                </span><span class="com">// Check if username exists, if yes then verify password</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">mysqli_stmt_num_rows</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">)</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    </span><span class="com">// Bind result variables</span><span class="pln">
                    mysqli_stmt_bind_result</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">,</span><span class="pln"> $userID</span><span class="pun">,</span><span class="pln"> $username</span><span class="pun">,</span><span class="pln"> $hashed_password</span><span class="pun">);</span><span class="pln">
                    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">mysqli_stmt_fetch</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">))</span><span class="pln">
                    </span><span class="pun">{</span><span class="pln">
                        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">password_verify</span><span class="pun">(</span><span class="pln">$password</span><span class="pun">,</span><span class="pln"> $hashed_password</span><span class="pun">))</span><span class="pln">
                        </span><span class="pun">{</span><span class="pln">
                            </span><span class="com">// Password is correct, so start a new session</span><span class="pln">
                            session_start</span><span class="pun">();</span><span class="pln">

                            </span><span class="com">// Store data in session variables</span><span class="pln">
                            $_SESSION</span><span class="pun">[</span><span class="str">"loggedin"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
                            $_SESSION</span><span class="pun">[</span><span class="str">"userID"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> $userID</span><span class="pun">;</span><span class="pln">
                            $_SESSION</span><span class="pun">[</span><span class="str">"username"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> $username</span><span class="pun">;</span><span class="pln">

                            </span><span class="com">// Redirect user to welcome page</span><span class="pln">
                            header</span><span class="pun">(</span><span class="str">"location: dashboard.php"</span><span class="pun">);</span><span class="pln">
                        </span><span class="pun">}</span><span class="pln">
                        </span><span class="kwd">else</span><span class="pln">
                        </span><span class="pun">{</span><span class="pln">
                            </span><span class="com">// Password is not valid, display a generic error message</span><span class="pln">
                            $login_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Invalid username or password."</span><span class="pun">;</span><span class="pln">
                        </span><span class="pun">}</span><span class="pln">
                    </span><span class="pun">}</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
                </span><span class="kwd">else</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    </span><span class="com">// Username doesn't exist, display a generic error message</span><span class="pln">
                    $login_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Invalid username or password."</span><span class="pun">;</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
            </span><span class="kwd">else</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                echo </span><span class="str">"Oops! Something went wrong. Please try again later."</span><span class="pun">;</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">

            </span><span class="com">// Close statement</span><span class="pln">
            mysqli_stmt_close</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// Close connection</span><span class="pln">
    mysqli_close</span><span class="pun">(</span><span class="pln">$link</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">?&gt;</span><span class="pln">

</span><span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"en"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;head&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"utf-8"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">http-equiv</span><span class="pun">=</span><span class="atv">"X-UA-Compatible"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"IE=edge"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1, shrink-to-fit=no"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"description"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"Personal image hosting powered by ShareX"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"author"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">""</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;title&gt;</span><span class="pln">ASE - Login</span><span class="tag">&lt;/title&gt;</span><span class="pln">
        </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"icon"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"assets/img/favicon.ico"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"image/x-icon"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"css/styles.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://use.fontawesome.com/releases/v6.3.0/js/all.js"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
    </span><span class="tag">&lt;/head&gt;</span><span class="pln">
    </span><span class="tag">&lt;body</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bg-primary"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"layoutAuthentication"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"layoutAuthentication_content"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;main&gt;</span><span class="pln">
                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row justify-content-center"</span><span class="tag">&gt;</span><span class="pln">
                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-5"</span><span class="tag">&gt;</span><span class="pln">
                                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card shadow-lg border-0 rounded-lg mt-5"</span><span class="tag">&gt;</span><span class="pln">
                                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-header"</span><span class="tag">&gt;&lt;h3</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-center font-weight-light my-4"</span><span class="tag">&gt;</span><span class="pln">All Seeing Eye</span><span class="tag">&lt;/h3&gt;&lt;/div&gt;</span><span class="pln">
                                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
                                        &lt;form action="</span><span class="pun">&lt;?</span><span class="pln">php echo htmlspecialchars</span><span class="pun">(</span><span class="pln">$_SERVER</span><span class="pun">[</span><span class="str">"PHP_SELF"</span><span class="pun">]);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" method="POST" class="my-login-validation" novalidate=""&gt;
                                            </span><span class="com">&lt;!-- Username --&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-floating mb-3"</span><span class="tag">&gt;</span><span class="pln">
                                                &lt;input id="username" type="username" class="form-control </span><span class="pun">&lt;?</span><span class="pln">php echo </span><span class="pun">(!</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">$username_err</span><span class="pun">))</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="str">'is-invalid'</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">''</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" value="</span><span class="pun">&lt;?</span><span class="pln">php echo $username</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" name="username" required&gt;
                                                </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"username"</span><span class="tag">&gt;</span><span class="pln">Username</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"invalid-feedback"</span><span class="tag">&gt;</span><span class="pln">
                                                </span><span class="pun">&lt;?</span><span class="pln">php echo $username_err</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                            </span><span class="com">&lt;!-- Password --&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-floating mb-3"</span><span class="tag">&gt;</span><span class="pln">
                                                &lt;input id="password" type="password" class="form-control </span><span class="pun">&lt;?</span><span class="pln">php echo </span><span class="pun">(!</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">$password_err</span><span class="pun">))</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="str">'is-invalid'</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">''</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" name="password" required&gt;
                                                </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"password"</span><span class="tag">&gt;</span><span class="pln">Password</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"invalid-feedback"</span><span class="tag">&gt;</span><span class="pln">
                                                </span><span class="pun">&lt;?</span><span class="pln">php echo $password_err</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                            </span><span class="com">&lt;!-- Remember Me --&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check mb-3"</span><span class="tag">&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-input"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"rememberMe"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"checkbox"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"lsRememberMe"</span><span class="pln"> </span><span class="atn">required</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-label"</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"rememberMe"</span><span class="tag">&gt;</span><span class="pln">Remember Password</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                            </span><span class="com">&lt;!-- Forgot Password --&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"d-flex align-items-center justify-content-between mt-4 mb-0"</span><span class="tag">&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"small"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">Forgot Password?</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"submit"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"Login"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary btn-block"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">lsRememberMe</span><span class="pun">()</span><span class="atv">"</span><span class="tag">&gt;&lt;/input&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                        </span><span class="tag">&lt;/form&gt;</span><span class="pln">
                                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-footer text-center py-3"</span><span class="tag">&gt;</span><span class="pln">
                                        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"small"</span><span class="tag">&gt;</span><span class="pln">Need an account? </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"register.php"</span><span class="tag">&gt;</span><span class="pln">Create One</span><span class="tag">&lt;/a&gt;&lt;/div&gt;</span><span class="pln">
                                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                </span><span class="tag">&lt;/main&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="com">&lt;!-- Footer --&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"layoutAuthentication_footer"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;footer</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"py-4 bg-light mt-auto"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-fluid px-4"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"d-flex align-items-center justify-content-between small"</span><span class="tag">&gt;</span><span class="pln">
                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-muted"</span><span class="tag">&gt;</span><span class="pln">Copyright &amp;copy; 2025 &amp;mdash;</span><span class="tag">&lt;/div&gt;</span><span class="pln">
                            </span><span class="tag">&lt;div&gt;</span><span class="pln">
                                </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">Privacy Policy</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                                &amp;middot;
                                </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">Terms &amp;amp; Conditions</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                </span><span class="tag">&lt;/footer&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="com">&lt;!-- JavaScript --&gt;</span><span class="pln">
        </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
        </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"js/scripts.js"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
        </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"js/rememberme.js"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
    </span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	Register.php
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted"><span class="pun">&lt;?</span><span class="pln">php
</span><span class="com">// Include ShareX config file</span><span class="pln">
include</span><span class="pun">(</span><span class="str">'../i/cfg/config.php'</span><span class="pun">);</span><span class="pln">

</span><span class="com">// Include ASE config file</span><span class="pln">
require_once </span><span class="str">"../ase/cfg/config.php"</span><span class="pun">;</span><span class="pln">

</span><span class="com">// Define variables and initialize with empty values</span><span class="pln">
$username </span><span class="pun">=</span><span class="pln"> $email </span><span class="pun">=</span><span class="pln"> $password </span><span class="pun">=</span><span class="pln"> $confirm_password </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">
$username_err </span><span class="pun">=</span><span class="pln"> $email_err </span><span class="pun">=</span><span class="pln"> $password_err </span><span class="pun">=</span><span class="pln"> $confirm_password_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">

</span><span class="com">// Processing form data when form is submitted</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$_SERVER</span><span class="pun">[</span><span class="str">"REQUEST_METHOD"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">"POST"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="com">// Validate username</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"username"</span><span class="pun">])))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        $username_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Please enter a username."</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    elseif </span><span class="pun">(!</span><span class="pln">preg_match</span><span class="pun">(</span><span class="str">'/^[a-zA-Z0-9_]{3,}$/'</span><span class="pun">,</span><span class="pln"> trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"username"</span><span class="pun">])))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        $username_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Username must contain the following:&lt;br/&gt;&lt;li&gt;Minimum 3 characters long.&lt;/li&gt;&lt;li&gt;Only letters, numbers, and underscores."</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">else</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="com">// Prepare a select statement</span><span class="pln">
        $sql </span><span class="pun">=</span><span class="pln"> </span><span class="str">"SELECT userID FROM users WHERE username = ?"</span><span class="pun">;</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$stmt </span><span class="pun">=</span><span class="pln"> mysqli_prepare</span><span class="pun">(</span><span class="pln">$link</span><span class="pun">,</span><span class="pln"> $sql</span><span class="pun">))</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="com">// Bind variables to the prepared statement as parameters</span><span class="pln">
            mysqli_stmt_bind_param</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">,</span><span class="pln"> </span><span class="str">"s"</span><span class="pun">,</span><span class="pln"> $param_username</span><span class="pun">);</span><span class="pln">

            </span><span class="com">// Set parameters</span><span class="pln">
            $param_username </span><span class="pun">=</span><span class="pln"> trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"username"</span><span class="pun">]);</span><span class="pln">

            </span><span class="com">// Attempt to execute the prepared statement</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">mysqli_stmt_execute</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">))</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="com">/* Store result */</span><span class="pln">
                mysqli_stmt_store_result</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">);</span><span class="pln">

                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">mysqli_stmt_num_rows</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">)</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    $username_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">"This username is already taken."</span><span class="pun">;</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
                </span><span class="kwd">else</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    $username </span><span class="pun">=</span><span class="pln"> trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"username"</span><span class="pun">]);</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
            </span><span class="kwd">else</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                echo </span><span class="str">"Oops! Something went wrong. Please try again later."</span><span class="pun">;</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">

            </span><span class="com">// Close statement</span><span class="pln">
            mysqli_stmt_close</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"email"</span><span class="pun">])))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        $email_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Please enter your email address."</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    elseif </span><span class="pun">(!</span><span class="pln">filter_var</span><span class="pun">(</span><span class="pln">trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"email"</span><span class="pun">]),</span><span class="pln"> FILTER_VALIDATE_EMAIL</span><span class="pun">))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        $email_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Please enter a valid email address."</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">else</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="com">// Prepare a select statement</span><span class="pln">
        $sql </span><span class="pun">=</span><span class="pln"> </span><span class="str">"SELECT userID FROM users WHERE email = ?"</span><span class="pun">;</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$stmt </span><span class="pun">=</span><span class="pln"> mysqli_prepare</span><span class="pun">(</span><span class="pln">$link</span><span class="pun">,</span><span class="pln"> $sql</span><span class="pun">))</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="com">// Bind variables to the prepared statement as parameters</span><span class="pln">
            mysqli_stmt_bind_param</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">,</span><span class="pln"> </span><span class="str">"s"</span><span class="pun">,</span><span class="pln"> $param_email</span><span class="pun">);</span><span class="pln">

            </span><span class="com">// Set parameters</span><span class="pln">
            $param_email </span><span class="pun">=</span><span class="pln"> trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"email"</span><span class="pun">]);</span><span class="pln">

            </span><span class="com">// Attempt to execute the prepared statement</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">mysqli_stmt_execute</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">))</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                mysqli_stmt_store_result</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">);</span><span class="pln">

                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">mysqli_stmt_num_rows</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">)</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    $email_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">"This email address is already taken."</span><span class="pun">;</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
                </span><span class="kwd">else</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    $email </span><span class="pun">=</span><span class="pln"> trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"email"</span><span class="pun">]);</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
            </span><span class="kwd">else</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                echo </span><span class="str">"Oops! Something went wrong. Please try again later."</span><span class="pun">;</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">

            mysqli_stmt_close</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// Validate password</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"password"</span><span class="pun">])))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        $password_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Please enter a password."</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln"> elseif </span><span class="pun">(!</span><span class="pln">preg_match</span><span class="pun">(</span><span class="str">'/^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*?&amp;_-])[A-Za-z\d@$!%*?&amp;_-]{8,}$/'</span><span class="pun">,</span><span class="pln"> trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"password"</span><span class="pun">])))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        $password_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Password must contain the following sequence:"</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        $password </span><span class="pun">=</span><span class="pln"> trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"password"</span><span class="pun">]);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// Validate confirm password</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"confirm_password"</span><span class="pun">])))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        $confirm_password_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Please confirm your password."</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        $confirm_password </span><span class="pun">=</span><span class="pln"> trim</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">"confirm_password"</span><span class="pun">]);</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">$password_err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> $password </span><span class="pun">!=</span><span class="pln"> $confirm_password</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            $confirm_password_err </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Password did not match."</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// Check input errors before inserting in database</span><span class="pln">
     </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">$username_err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> empty</span><span class="pun">(</span><span class="pln">$email_err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> empty</span><span class="pun">(</span><span class="pln">$password_err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> empty</span><span class="pun">(</span><span class="pln">$confirm_password_err</span><span class="pun">))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="com">// Prepare an insert statement</span><span class="pln">
        $sql </span><span class="pun">=</span><span class="pln"> </span><span class="str">"INSERT INTO users (username, email, password) VALUES (?, ?, ?)"</span><span class="pun">;</span><span class="pln">


        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$stmt </span><span class="pun">=</span><span class="pln"> mysqli_prepare</span><span class="pun">(</span><span class="pln">$link</span><span class="pun">,</span><span class="pln"> $sql</span><span class="pun">))</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="com">// Bind variables to the prepared statement as parameters</span><span class="pln">
            mysqli_stmt_bind_param</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">,</span><span class="pln"> </span><span class="str">"sss"</span><span class="pun">,</span><span class="pln"> $param_username</span><span class="pun">,</span><span class="pln"> $param_email</span><span class="pun">,</span><span class="pln"> $param_password</span><span class="pun">);</span><span class="pln">
            </span><span class="com">// Set parameters</span><span class="pln">
            $param_username </span><span class="pun">=</span><span class="pln"> $username</span><span class="pun">;</span><span class="pln">
            $param_email </span><span class="pun">=</span><span class="pln"> $email</span><span class="pun">;</span><span class="pln">
            $param_password </span><span class="pun">=</span><span class="pln"> password_hash</span><span class="pun">(</span><span class="pln">$password</span><span class="pun">,</span><span class="pln"> PASSWORD_BCRYPT</span><span class="pun">);</span><span class="pln"> </span><span class="com">// BCRYPT hashing</span><span class="pln">
            </span><span class="com">// Attempt to execute the prepared statement</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">mysqli_stmt_execute</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">))</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="com">// Redirect to login page</span><span class="pln">
                header</span><span class="pun">(</span><span class="str">"location: index.php"</span><span class="pun">);</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
            </span><span class="kwd">else</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                echo </span><span class="str">"Oops! Something went wrong. Please try again later."</span><span class="pun">;</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">

            </span><span class="com">// Close statement</span><span class="pln">
            mysqli_stmt_close</span><span class="pun">(</span><span class="pln">$stmt</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// Close connection</span><span class="pln">
    mysqli_close</span><span class="pun">(</span><span class="pln">$link</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">?&gt;</span><span class="pln">

</span><span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"en"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;head&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"utf-8"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">http-equiv</span><span class="pun">=</span><span class="atv">"X-UA-Compatible"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"IE=edge"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1, shrink-to-fit=no"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"description"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"Personal image hosting powered by ShareX"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"author"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">""</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"icon"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"assets/img/favicon.ico"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"image/x-icon"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;title&gt;</span><span class="pln">ASE - Register</span><span class="tag">&lt;/title&gt;</span><span class="pln">
        </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"css/styles.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://use.fontawesome.com/releases/v6.3.0/js/all.js"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
    </span><span class="tag">&lt;/head&gt;</span><span class="pln"> 
    </span><span class="tag">&lt;body</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bg-primary"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"layoutAuthentication"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"layoutAuthentication_content"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;main&gt;</span><span class="pln">
                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row justify-content-center"</span><span class="tag">&gt;</span><span class="pln">
                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-7"</span><span class="tag">&gt;</span><span class="pln">
                                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card shadow-lg border-0 rounded-lg mt-5"</span><span class="tag">&gt;</span><span class="pln">
                                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-header"</span><span class="tag">&gt;&lt;h3</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-center font-weight-light my-4"</span><span class="tag">&gt;</span><span class="pln">Create Account</span><span class="tag">&lt;/h3&gt;&lt;/div&gt;</span><span class="pln">
                                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
                                        &lt;form action="</span><span class="pun">&lt;?</span><span class="pln">php echo htmlspecialchars</span><span class="pun">(</span><span class="pln">$_SERVER</span><span class="pun">[</span><span class="str">"PHP_SELF"</span><span class="pun">]);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" method="POST" class="my-login-validation" novalidate="" id="registration_form"&gt;
                                            </span><span class="com">&lt;!-- Username --&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-floating mb-3"</span><span class="tag">&gt;</span><span class="pln">
                                                &lt;input id="username" type="text" class="form-control </span><span class="pun">&lt;?</span><span class="pln">php echo </span><span class="pun">!</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">$username_err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="str">"is-invalid"</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" value="</span><span class="pun">&lt;?</span><span class="pln">php echo $username</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" name="username" required autofocus&gt;
                                                </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"username"</span><span class="tag">&gt;</span><span class="pln">Username</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"invalid-feedback"</span><span class="tag">&gt;</span><span class="pln">
                                                </span><span class="pun">&lt;?</span><span class="pln">php echo $username_err</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                            </span><span class="com">&lt;!-- Email --&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-floating mb-3"</span><span class="tag">&gt;</span><span class="pln">
                                                &lt;input id="email" type="text" class="form-control </span><span class="pun">&lt;?</span><span class="pln">php echo </span><span class="pun">!</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">$email_err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="str">"is-invalid"</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" value="</span><span class="pun">&lt;?</span><span class="pln">php echo $email</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" name="email" required autofocus&gt;
                                                </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"email"</span><span class="tag">&gt;</span><span class="pln">Email Address</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"invalid-feedback"</span><span class="tag">&gt;</span><span class="pln">
                                                </span><span class="pun">&lt;?</span><span class="pln">php echo $email_err</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                            </span><span class="com">&lt;!-- Password --&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row mb-3"</span><span class="tag">&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-md-6"</span><span class="tag">&gt;</span><span class="pln">
                                                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-floating mb-3 mb-md-0"</span><span class="tag">&gt;</span><span class="pln">
                                                        &lt;input id="password" type="password" class="form-control </span><span class="pun">&lt;?</span><span class="pln">php echo </span><span class="pun">!</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">$password_err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="str">"is-invalid"</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" value="</span><span class="pun">&lt;?</span><span class="pln">php echo $password</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" name="password" required data-eye oninput="validatePassword(this.value)" minlength="8"&gt;
                                                        </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"password"</span><span class="tag">&gt;</span><span class="pln">Password</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                                                        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"invalid-feedback"</span><span class="tag">&gt;</span><span class="pln">
                                                        </span><span class="pun">&lt;?</span><span class="pln">php echo $password_err</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
                                                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                                </span><span class="com">&lt;!-- Password Strength Meter --&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-group"</span><span class="tag">&gt;</span><span class="pln">
                                                    </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"errorMessage"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"font-weight-bold text-danger"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="kwd">font-style</span><span class="pun">:</span><span class="pln"> italic</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;ul&gt;</span><span class="pln">
                                                    </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"minLength"</span><span class="tag">&gt;&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"fas fa-times text-danger"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln"> Minimum 8 characters</span><span class="tag">&lt;/li&gt;</span><span class="pln">
                                                    </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"uppercase"</span><span class="tag">&gt;&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"fas fa-times text-danger"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln"> At least one uppercase letter</span><span class="tag">&lt;/li&gt;</span><span class="pln">
                                                    </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"lowercase"</span><span class="tag">&gt;&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"fas fa-times text-danger"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln"> At least one lowercase letter</span><span class="tag">&lt;/li&gt;</span><span class="pln">
                                                    </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"symbol"</span><span class="tag">&gt;&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"fas fa-times text-danger"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln"> At least one symbol (@$!%*?&amp;_-)</span><span class="tag">&lt;/li&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;/ul&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                                </span><span class="com">&lt;!-- Confirm Password --&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-md-6"</span><span class="tag">&gt;</span><span class="pln">
                                                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-floating mb-3 mb-md-0"</span><span class="tag">&gt;</span><span class="pln">
                                                        &lt;input id="confirm_password" type="password" class="form-control </span><span class="pun">&lt;?</span><span class="pln">php echo </span><span class="pun">!</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">$confirm_password_err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="str">"is-invalid"</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" value="</span><span class="pun">&lt;?</span><span class="pln">php echo $confirm_password</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">" name="confirm_password" required data-eye minlength="8"&gt;
                                                        </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"confirm_password"</span><span class="tag">&gt;</span><span class="pln">Confirm Password</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                                                        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"invalid-feedback"</span><span class="tag">&gt;</span><span class="pln">
                                                        </span><span class="pun">&lt;?</span><span class="pln">php echo $confirm_password_err</span><span class="pun">;</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
                                                        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                                </span><span class="com">&lt;!-- reCaptcha --&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-group"</span><span class="tag">&gt;</span><span class="pln">
                                                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"g-recaptcha"</span><span class="pln"> </span><span class="atn">data-sitekey</span><span class="pun">=</span><span class="atv">"6LdSlSAUAAAAAM3UIiPUhr9zSF8OgTT7uzQBSOcU"</span><span class="pln"> </span><span class="atn">data-callback</span><span class="pun">=</span><span class="atv">"verifyRecaptchaCallback"</span><span class="pln"> </span><span class="atn">data-expired-callback</span><span class="pun">=</span><span class="atv">"expiredRecaptchaCallback"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">
                                                        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control d-none"</span><span class="pln"> </span><span class="atn">data-recaptcha</span><span class="pun">=</span><span class="atv">"true"</span><span class="pln"> </span><span class="atn">required</span><span class="pln"> </span><span class="atn">data-error</span><span class="pun">=</span><span class="atv">"Please complete the Captcha"</span><span class="tag">&gt;</span><span class="pln">
                                                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"help-block with-errors"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                            </span><span class="com">&lt;!-- T&amp;C's --&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-group"</span><span class="tag">&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"custom-checkbox custom-control"</span><span class="tag">&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"checkbox"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"agree"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"agree"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"custom-control-input"</span><span class="pln"> </span><span class="atn">required</span><span class="pun">=</span><span class="atv">""</span><span class="tag">&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"agree"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"custom-control-label"</span><span class="tag">&gt;</span><span class="pln">I agree to the </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">Terms and Conditions</span><span class="tag">&lt;/a&gt;&lt;/label&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"invalid-feedback"</span><span class="tag">&gt;</span><span class="pln">
                                            You must agree with our Terms and Conditions.
                                        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                            </span><span class="com">&lt;!-- Submit Form --&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"mt-4 mb-0"</span><span class="tag">&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"d-grid"</span><span class="tag">&gt;</span><span class="pln">
                                                    </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"submit"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"register-btn"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"Login"</span><span class="tag">&gt;&lt;/input&gt;</span><span class="pln">
                                                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                                    </span><span class="com">&lt;!-- &lt;button type="button" class="btn btn-danger btn-block"&gt;Registration is Closed&lt;/button&gt;&lt;/div&gt; --&gt;</span><span class="pln">
                                            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                        </span><span class="tag">&lt;/form&gt;</span><span class="pln">
                                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-footer text-center py-3"</span><span class="tag">&gt;</span><span class="pln">
                                        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"small"</span><span class="tag">&gt;</span><span class="pln">Already have an account? </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"index.php"</span><span class="tag">&gt;</span><span class="pln"> Sign In</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                                        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                </span><span class="tag">&lt;/main&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="com">&lt;!-- Footer --&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"layoutAuthentication_footer"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;footer</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"py-4 bg-light mt-auto"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-fluid px-4"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"d-flex align-items-center justify-content-between small"</span><span class="tag">&gt;</span><span class="pln">
                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-muted"</span><span class="tag">&gt;</span><span class="pln">Copyright &amp;copy; 2025 &amp;mdash;</span><span class="tag">&lt;/div&gt;</span><span class="pln">
                            </span><span class="tag">&lt;div&gt;</span><span class="pln">
                                </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">Privacy Policy</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                                &amp;middot;
                                </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">Terms &amp;amp; Conditions</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                </span><span class="tag">&lt;/footer&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="com">&lt;!-- JavaScript --&gt;</span><span class="pln">
        </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
        </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"js/scripts.js"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
        </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"js/password-strength.js"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
        </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">'https://www.google.com/recaptcha/api.js'</span><span class="pln"> </span><span class="atn">async</span><span class="pln"> </span><span class="atn">defer</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
    </span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">326686</guid><pubDate>Sat, 01 Feb 2025 23:10:03 +0000</pubDate></item><item><title>Configure php.exe in VS Code</title><link>https://forums.phpfreaks.com/topic/326669-configure-phpexe-in-vs-code/</link><description><![CDATA[<p>
	I got this message, but I have no idea what to write where. I need a step-by-step guide to get this right.<br />
	Is it okay to use the php.exe that is in Laragon? In that case, php.exe is in the path and folder: C:\laragon\bin\php\php-7.4.33-Win32-vc15-x64\php.exe
</p>

<p>
	Thanks for all your help, below is the image file with the error message: 
</p>

<p><a href="https://forums.phpfreaks.com/uploads/monthly_2025_01/php_error_vs_code.png.3ff015a72baea91009cd4be5c818c8b2.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="8921" src="https://forums.phpfreaks.com/uploads/monthly_2025_01/php_error_vs_code.png.3ff015a72baea91009cd4be5c818c8b2.png" data-ratio="29.91" width="575" class="ipsImage ipsImage_thumbnailed" alt="php_error_vs_code.png"></a></p>]]></description><guid isPermaLink="false">326669</guid><pubDate>Wed, 29 Jan 2025 03:47:25 +0000</pubDate></item><item><title>xml files merging</title><link>https://forums.phpfreaks.com/topic/326644-xml-files-merging/</link><description><![CDATA[<p>
	Here's my scenario
</p>

<pre class="ipsCode">+ ls -1
main.php
x1.xml
x2.xml


+ cat x1.xml
&lt;aaa xxx1="aaa"&gt;
    &lt;bbb&gt;
        blabla1
    &lt;/bbb&gt;
&lt;/aaa&gt;



+ cat x2.xml
&lt;aaa xxx2="bbb"&gt;
&lt;/aaa&gt;



+ cat main.php
&lt;?php
$x1Doc = new DOMDocument();
$x1Doc-&gt;load('x1.xml');
$x2Doc = new DOMDocument();
$x2Doc-&gt;load('x2.xml');
$dom = new XMLDiff\DOM;
$diff = $dom-&gt;diff($x1Doc, $x2Doc);
echo $dom-&gt;merge($x1Doc, $diff)-&gt;saveXML();
</pre>

<p>
	Let's do some tests
</p>

<pre class="ipsCode">+ php main.php
&lt;?xml version="1.0"?&gt;
&lt;aaa xxx2="bbb"&gt;
&lt;/aaa&gt;
</pre>

<p>
	I was expecting something like this though
</p>

<pre class="ipsCode">&lt;aaa xxx1="aaa" xxx2="bbb"&gt;
    &lt;bbb&gt;
        blabla1
    &lt;/bbb&gt;
&lt;/aaa&gt;
</pre>

<p>
	Any suggestions?<br />
	 
</p>
]]></description><guid isPermaLink="false">326644</guid><pubDate>Sat, 25 Jan 2025 11:07:03 +0000</pubDate></item><item><title>Getting array data in variable</title><link>https://forums.phpfreaks.com/topic/326661-getting-array-data-in-variable/</link><description><![CDATA[<p>
	I'm trying to include an array inside of a different array, but having trouble reaching the data.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted"><span class="pln">$ingredients </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="str">"sugar"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"flour"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"water"</span><span class="pun">];</span><span class="pln">
$spec_recipe </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="str">"apple"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"cinnamon"</span><span class="pun">,</span><span class="pln"> $ingredients</span><span class="pun">];</span><span class="pln">

echo $spec_recipe</span><span class="pun">[</span><span class="lit">2</span><span class="pun">];</span><span class="pln">
RESULT</span><span class="pun">:</span><span class="pln">  </span><span class="typ">Array</span><span class="pln">
echo $spec_recipe</span><span class="pun">[</span><span class="lit">2</span><span class="pun">][</span><span class="lit">0</span><span class="pun">];</span><span class="pln">
RESULT</span><span class="pun">:</span><span class="pln">  A  </span><span class="pun">(</span><span class="pln">assuming first letter </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">Array</span><span class="pun">)</span></pre>

<p>
	How do I move this info correctly so that it's accessible?
</p>
]]></description><guid isPermaLink="false">326661</guid><pubDate>Mon, 27 Jan 2025 13:17:51 +0000</pubDate></item><item><title>php form coding works on Safari but not on Firefox</title><link>https://forums.phpfreaks.com/topic/326524-php-form-coding-works-on-safari-but-not-on-firefox/</link><description><![CDATA[<p>
	Validate function is within a &lt;script language=javascript&gt; and is -----
</p>

<p>
	function Validate() {
</p>

<p>
	  if (document.form1.password.value == "zxyzz")
</p>

<p>
	 {
</p>

<p>
	    window.location="&lt;?php echo 'disp.php'; ?&gt;";
</p>

<p>
	    return(false);
</p>

<p>
	  } else {
</p>

<p>
	    window.location="&lt;?php echo 'displess.php'; ?&gt;";
</p>

<p>
	    return(false);
</p>

<p>
	 }
</p>

<p>
	}
</p>

<p>
	Body is---
</p>

<p>
	&lt;body onload="self.focus();document.form1.password.focus()" &gt; 
</p>

<p>
	  &lt;form name= "form1" method="post" onsubmit="return Validate()"&gt;
</p>

<p>
	  &lt;table width="1000" border="0" cellspacing="1" cellpadding="0"&gt;
</p>

<p>
	    &lt;tr&gt;
</p>

<p>
	    &lt;td align= "right"&gt;Password: &lt;/td&gt;
</p>

<p>
	    &lt;td&gt;&lt;input size="20" maxlength="20" name="password" value'"  "&gt;&lt;/td&gt;
</p>

<p>
	    &lt;/tr&gt;
</p>

<p>
	  &lt;/table&gt;
</p>

<p>
	  &lt;/form&gt;
</p>

<p>
	&lt;/body&gt;
</p>

<p>
	 
</p>

<p>
	Problem is that under Firefox it always goes to displess.php
</p>

<p>
	but under Safari typing in zxyzz it goes to disp.php, anything else goes to displess.php
</p>

<p>
	Any suggestions or evidence of errors will be appreciated.
</p>
]]></description><guid isPermaLink="false">326524</guid><pubDate>Wed, 15 Jan 2025 00:17:06 +0000</pubDate></item><item><title>having issues getting specific data in a json.  im sure it's easy for those that use json more than i do</title><link>https://forums.phpfreaks.com/topic/326621-having-issues-getting-specific-data-in-a-json-im-sure-its-easy-for-those-that-use-json-more-than-i-do/</link><description><![CDATA[<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">[
    {
        "place_id": 329211526,
        "licence": "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright",
        "osm_type": "way",
        "osm_id": 19239538,
        "boundingbox": [
            "34.6786854",
            "34.6787122",
            "-77.5843465",
            "-77.5835107"
        ],
        "lat": "34.6787013",
        "lon": "-77.5840059",
        "display_name": "West Main Street, lex, Troy Township, BIGG County, Ohio, 44333, United States",
        "class": "highway",
        "type": "primary",
        "importance": 0.6000099999999999
    },
    {
        "place_id": 329211743,
        "licence": "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright",
        "osm_type": "way",
        "osm_id": 38610646,
        "boundingbox": [
            "34.6787122",
            "34.6871188",
            "-77.603118",
            "-77.5843465"
        ],
        "lat": "34.6827021",
        "lon": "-77.5937807",
        "display_name": "West Main Street, lex, Troy Township, BIGG County, Ohio, 44333, United States",
        "class": "highway",
        "type": "secondary",
        "importance": 0.6000099999999999
    },
    {
        "place_id": 329180475,
        "licence": "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright",
        "osm_type": "way",
        "osm_id": 823017968,
        "boundingbox": [
            "34.9201281",
            "34.9214493",
            "-81.1346294",
            "-81.1251686"
        ],
        "lat": "34.9208004",
        "lon": "-81.1297602",
        "display_name": "West Main Street, Alliance, lex Township, Stark County, Ohio, 44601, United States",
        "class": "highway",
        "type": "tertiary",
        "importance": 0.6000099999999999
    },
    {
        "place_id": 329179580,
        "licence": "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright",
        "osm_type": "way",
        "osm_id": 19258266,
        "boundingbox": [
            "34.9095347",
            "34.9189094",
            "-81.1539336",
            "-81.134635"
        ],
        "lat": "34.9146373",
        "lon": "-81.1445334",
        "display_name": "West Main Street, Alliance, lex Township, Stark County, Ohio, 44601, United States",
        "class": "highway",
        "type": "unclassified",
        "importance": 0.6000099999999999
    }
]</span></pre>

<p>
	all i want to do is get the values of "lat" and "lon" from the first section (inside the first "{ }" ).  so i can do:
</p>

<p>
	$lat=34.6787013;
</p>

<p>
	$lon=-77.5840059;
</p>

<p>
	 
</p>

<p>
	thanks for your help in advanced.  ive tried looking up objects ect..  im not even sure what they are.  is lat and lon objects ??
</p>
]]></description><guid isPermaLink="false">326621</guid><pubDate>Wed, 22 Jan 2025 21:08:27 +0000</pubDate></item><item><title>Extension errors after installation of PHP</title><link>https://forums.phpfreaks.com/topic/326607-extension-errors-after-installation-of-php/</link><description><![CDATA[<p>
	I have finished installing the PHP MSI (to C:\php) and receive this error when executing the standard hello world script. I have checked the PHP extensions folder configured in php.ini and it is indeed set to the correct folder and the files are present.
</p>

<p>
	PHP Warning/Error: <a href="https://pastebin.com/arWmEFT2" rel="external nofollow">https://pastebin.com/arWmEFT2</a>
</p>

<p>
	PHP.ini: <a href="https://pastebin.com/prqHBDNb" rel="external nofollow">https://pastebin.com/prqHBDNb</a>
</p>

<p>
	For context, I am using PHP 5.2.9-2, Windows Server 2008 R2 Enterprise and the IIS 7.0 webserver. I cannot update either of those for a variety of reasons, so please don’t recommend it.
</p>
]]></description><guid isPermaLink="false">326607</guid><pubDate>Tue, 21 Jan 2025 13:25:47 +0000</pubDate></item><item><title>previous and next buttons to increment/decrement date range by 1 week</title><link>https://forums.phpfreaks.com/topic/326581-previous-and-next-buttons-to-incrementdecrement-date-range-by-1-week/</link><description><![CDATA[<p>
	Hi All, I am having trouble trying to get the previous/ next buttons to change the date range by which items are retrieved from the database using PHP. The screen shot shows the 7 cells that I want to change when I click on either the next or previous button. The first date in the cells are determined using Datetime "Monday this week". I then use a +1 loop to get the following cells populated. I'd like to change this range by plus/minus 1 week at each push of the next/previous button.
</p>

<p>
	The code is below:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted"><span class="pln">  $dw </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="str">'monday this week'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTimeZone</span><span class="pun">(</span><span class="pln">$tz</span><span class="pun">));</span><span class="pln">
        $fdw </span><span class="pun">=</span><span class="pln"> $dw</span><span class="pun">-&gt;</span><span class="pln">format</span><span class="pun">(</span><span class="str">'l j M'</span><span class="pun">);</span></pre>

<p>
	The code below that I have been using currently is working but only once; ie: I can only either go back 1 week or ahead of this week 1 week. Another button push doesn't work.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted"><span class="kwd">if</span><span class="pun">(</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">'next'</span><span class="pun">]))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
$dw </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="pln">$fdw</span><span class="pun">);</span><span class="pln">
$nw </span><span class="pun">=</span><span class="pln"> $dw</span><span class="pun">-&gt;</span><span class="pln">modify</span><span class="pun">(</span><span class="str">'+1 week'</span><span class="pun">);</span><span class="pln">
$nfdw </span><span class="pun">=</span><span class="pln"> $nw</span><span class="pun">-&gt;</span><span class="pln">format</span><span class="pun">(</span><span class="str">'l j M'</span><span class="pun">);</span><span class="pln">
$fdw </span><span class="pun">=</span><span class="pln"> $nfdw</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">'prev'</span><span class="pun">]))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
$dw </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="pln">$fdw</span><span class="pun">);</span><span class="pln">    
$pw </span><span class="pun">=</span><span class="pln"> $dw</span><span class="pun">-&gt;</span><span class="pln">modify</span><span class="pun">(</span><span class="str">'-1 week'</span><span class="pun">);</span><span class="pln">
$pfdw </span><span class="pun">=</span><span class="pln"> $pw</span><span class="pun">-&gt;</span><span class="pln">format</span><span class="pun">(</span><span class="str">'l j M'</span><span class="pun">);</span><span class="pln">
$fdw </span><span class="pun">=</span><span class="pln"> $pfdw</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	What I can't seem to get it to do is reassign $fdw to the new value, so when the button is pressed again, it calculates from that value rather than this week.
</p>

<p>
	I hope that makes sense? If anyone could help with this that would be very much appreciated. 
</p>

<p><a href="https://forums.phpfreaks.com/uploads/monthly_2025_01/Screenshot2025-01-19214319.png.4d04b89b244b29d5e0250f7707eae6e6.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="8911" src="https://forums.phpfreaks.com/uploads/monthly_2025_01/Screenshot2025-01-19214319.thumb.png.e2ed06b6d8e5d7c091245c457a4f417c.png" data-ratio="10.2" width="1000" class="ipsImage ipsImage_thumbnailed" alt="Screenshot 2025-01-19 214319.png"></a></p>]]></description><guid isPermaLink="false">326581</guid><pubDate>Sun, 19 Jan 2025 09:02:35 +0000</pubDate></item><item><title>Help with a function dealing with holidays</title><link>https://forums.phpfreaks.com/topic/326563-help-with-a-function-dealing-with-holidays/</link><description><![CDATA[<p>
	I have a function here from <a href="https://toroguapo.com/gf-hero/articles/calculating-holidays-for-a-given-year-in-php" rel="external nofollow">https://toroguapo.com/gf-hero/articles/calculating-holidays-for-a-given-year-in-php</a>
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted"><span class="kwd">function</span><span class="pln"> get_holidays</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> $year</span><span class="pun">):</span><span class="pln"> array </span><span class="pun">{</span><span class="pln">
    $holidays </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">
        </span><span class="com">// Fixed holidays</span><span class="pln">

        </span><span class="str">'new_years_day'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="str">"$year-01-01"</span><span class="pun">),</span><span class="pln">
        </span><span class="str">'juneteenth'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="str">"$year-06-19"</span><span class="pun">),</span><span class="pln">
        </span><span class="str">'independence_day'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="str">"$year-07-04"</span><span class="pun">),</span><span class="pln">
        </span><span class="str">'veterans_day'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="str">"$year-11-11"</span><span class="pun">),</span><span class="pln">
        </span><span class="str">'christmas'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="str">"$year-12-25"</span><span class="pun">),</span><span class="pln">
         </span><span class="str">'Valentines Day'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="str">"$year-02-14"</span><span class="pun">),</span><span class="pln">

        </span><span class="com">// Variable holidays</span><span class="pln">

        </span><span class="str">'martin_luther_king_day'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="pln">
            </span><span class="str">"third Monday of January $year"</span><span class="pln">
        </span><span class="pun">),</span><span class="pln">
        </span><span class="str">'washington_day'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="pln">
            </span><span class="str">"third Monday of February $year"</span><span class="pln">
        </span><span class="pun">),</span><span class="pln">
        </span><span class="str">'memorial_day'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="pln">
            </span><span class="str">"last Monday of May $year"</span><span class="pln">
        </span><span class="pun">),</span><span class="pln">
        </span><span class="str">'labor_day'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="pln">
            </span><span class="str">"first Monday of September $year"</span><span class="pln">
        </span><span class="pun">),</span><span class="pln">
        </span><span class="str">'columbus_day'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="pln">
            </span><span class="str">"second Monday of October $year"</span><span class="pln">
        </span><span class="pun">),</span><span class="pln">
        </span><span class="str">'thanksgiving_day'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="pln">
            </span><span class="str">"fourth Thursday of November $year"</span><span class="pln">
        </span><span class="pun">),</span><span class="pln">
    </span><span class="pun">];</span><span class="pln">

    </span><span class="com">// Inauguration Day, every 4th year</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$year </span><span class="pun">%</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">===</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        $inauguration_day </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="str">"$year-01-20"</span><span class="pun">);</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$inauguration_day</span><span class="pun">-&gt;</span><span class="pln">format</span><span class="pun">(</span><span class="str">'l'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">===</span><span class="pln"> </span><span class="str">'Sunday'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            $inauguration_day</span><span class="pun">-&gt;</span><span class="pln">modify</span><span class="pun">(</span><span class="str">'+1 day'</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        $holidays</span><span class="pun">[</span><span class="str">'inauguration_day'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> $inauguration_day</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// Easter</span><span class="pln">

    $easter </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DateTime</span><span class="pun">(</span><span class="str">"$year-03-21"</span><span class="pun">);</span><span class="pln">
    $easter</span><span class="pun">-&gt;</span><span class="pln">modify</span><span class="pun">(</span><span class="str">'+'</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> easter_days</span><span class="pun">(</span><span class="pln">$year</span><span class="pun">)</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">' days'</span><span class="pun">);</span><span class="pln">
    $holidays</span><span class="pun">[</span><span class="str">'easter'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> $easter</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">return</span><span class="pln"> $holidays</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> list_holidays</span><span class="pun">(</span><span class="typ">DateTimeInterface</span><span class="pln"> $date</span><span class="pun">):</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    $year </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pun">)</span><span class="pln"> $date</span><span class="pun">-&gt;</span><span class="pln">format</span><span class="pun">(</span><span class="str">'Y'</span><span class="pun">);</span><span class="pln">

    $date_formatted </span><span class="pun">=</span><span class="pln"> $date</span><span class="pun">-&gt;</span><span class="pln">format</span><span class="pun">(</span><span class="str">'Y-m-d'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">foreach</span><span class="pln"> </span><span class="pun">(</span><span class="pln">get_holidays</span><span class="pun">(</span><span class="pln">$year</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">as</span><span class="pln"> $holiday</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        $holiday_formatted </span><span class="pun">=</span><span class="pln"> $holiday</span><span class="pun">-&gt;</span><span class="pln">format</span><span class="pun">(</span><span class="str">'Y-m-d'</span><span class="pun">);</span><span class="pln">
        echo $holiday_formatted</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span></pre>

<p>
	 
</p>

<p>
	Basically what im trying to do is run a foreach to loop and for every holiday echo out "Holiday Name is Date" I know im close but cant quite figure it out, anyone willing to help me get this working? Id be eternally grateful.
</p>
]]></description><guid isPermaLink="false">326563</guid><pubDate>Fri, 17 Jan 2025 15:46:38 +0000</pubDate></item><item><title>media error: format(s) not supported or source(s) not found</title><link>https://forums.phpfreaks.com/topic/326562-media-error-formats-not-supported-or-sources-not-found/</link><description><![CDATA[<p>
	hi
</p>

<p>
	I have a script playtube to display videos, I get this message media error: format(s) not supported or source(s) not found
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="8910" data-ratio="15.78" width="849" alt="image.png.e67ee7355a5d98e68e742068df982b9b.png" src="https://forums.phpfreaks.com/uploads/monthly_2025_01/image.png.e67ee7355a5d98e68e742068df982b9b.png" /></p>

<p>
	 
</p>

<p>
	Help me
</p>
]]></description><guid isPermaLink="false">326562</guid><pubDate>Fri, 17 Jan 2025 15:38:58 +0000</pubDate></item><item><title>Make delete button functional to delete image in said row and sort image name by date uploaded</title><link>https://forums.phpfreaks.com/topic/326549-make-delete-button-functional-to-delete-image-in-said-row-and-sort-image-name-by-date-uploaded/</link><description><![CDATA[<p>
	Hello,
</p>

<p>
	I am using a simple custom ShareX image uploader script that has a little dashboard included where I can see the image info that I just screenshotted and uploaded to my host. However, I am looking to make 2 changes to the script but I'm not sure how to approach them.
</p>

<p>
	1. In the screenshot, I would like to make those Delete buttons that I added functional. When I screenshot something, the image name is randomly generated so creating a button to delete a specific filename won't work. I just want to go to a row and hit Delete and it'll delete that image from my host (its designated directory). I've attached my codes below.
</p>

<p>
	2. In the screenshot, the images are being sorted by the first number chronologically making them be out of order under the Image Date column. I am wanting them to be displayed by Image Date based on the most recent one taken at the top. I've attached my codes below.
</p>

<p>
	config.php (config script)
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pun">&lt;?</span><span class="pln">php

date_default_timezone_set</span><span class="pun">(</span><span class="str">"America/Chicago"</span><span class="pun">);</span><span class="pln">

</span><span class="kwd">return</span><span class="pln"> array</span><span class="pun">(</span><span class="pln">
    </span><span class="str">'secure_key'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'my_key'</span><span class="pun">,</span><span class="pln">

    </span><span class="str">'output_url'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'http://my_url.com/i/'</span><span class="pun">,</span><span class="pln">

    </span><span class="str">'redirect_url'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'http://my_url.com/i/'</span><span class="pun">,</span><span class="pln">

    </span><span class="str">'allowed_ips'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> array</span><span class="pun">(),</span><span class="pln">

    </span><span class="str">'page_title'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'my_page_title'</span><span class="pun">,</span><span class="pln">

    </span><span class="str">'heading_text'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'my_header_text'</span><span class="pun">,</span><span class="pln">
</span><span class="pun">);</span></pre>

<p>
	upload.php (upload script)
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pun">&lt;?</span><span class="pln">php
$config </span><span class="pun">=</span><span class="pln"> include</span><span class="pun">(</span><span class="str">'i/config.php'</span><span class="pun">);</span><span class="pln">

$key </span><span class="pun">=</span><span class="pln"> $config</span><span class="pun">[</span><span class="str">'secure_key'</span><span class="pun">];</span><span class="pln">
$uploadhost </span><span class="pun">=</span><span class="pln"> $config</span><span class="pun">[</span><span class="str">'output_url'</span><span class="pun">];</span><span class="pln">
$redirect </span><span class="pun">=</span><span class="pln"> $config</span><span class="pun">[</span><span class="str">'redirect_url'</span><span class="pun">];</span><span class="pln">

</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$_SERVER</span><span class="pun">[</span><span class="str">"REQUEST_URI"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">"/robot.txt"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="kwd">die</span><span class="pun">(</span><span class="str">"User-agent: *\nDisallow: /"</span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
 
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">'key'</span><span class="pun">]))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="str">'key'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> $key</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        $parts </span><span class="pun">=</span><span class="pln"> explode</span><span class="pun">(</span><span class="str">"."</span><span class="pun">,</span><span class="pln"> $_FILES</span><span class="pun">[</span><span class="str">"d"</span><span class="pun">][</span><span class="str">"name"</span><span class="pun">]);</span><span class="pln">
        $target </span><span class="pun">=</span><span class="pln"> getcwd</span><span class="pun">()</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">"/i/"</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> $_POST</span><span class="pun">[</span><span class="str">'name'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">"."</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="kwd">end</span><span class="pun">(</span><span class="pln">$parts</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">move_uploaded_file</span><span class="pun">(</span><span class="pln">$_FILES</span><span class="pun">[</span><span class="str">'d'</span><span class="pun">][</span><span class="str">'tmp_name'</span><span class="pun">],</span><span class="pln"> $target</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            $target_parts </span><span class="pun">=</span><span class="pln"> explode</span><span class="pun">(</span><span class="str">"/i/"</span><span class="pun">,</span><span class="pln"> $target</span><span class="pun">);</span><span class="pln">
            echo $uploadhost </span><span class="pun">.</span><span class="pln"> </span><span class="kwd">end</span><span class="pun">(</span><span class="pln">$target_parts</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            echo </span><span class="str">"Sorry, there was a problem uploading your file. (Ensure your directory has 777 permissions)"</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        header</span><span class="pun">(</span><span class="str">'Location: '</span><span class="pun">.</span><span class="pln">$redirect</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    header</span><span class="pun">(</span><span class="str">'Location: '</span><span class="pun">.</span><span class="pln">$redirect</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">?&gt;</span></pre>

<p>
	index.php (dashboard page)
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pun">&lt;?</span><span class="pln">php $config </span><span class="pun">=</span><span class="pln"> include</span><span class="pun">(</span><span class="str">'config.php'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">
</span><span class="tag">&lt;html&gt;</span><span class="pln">
	</span><span class="tag">&lt;head&gt;</span><span class="pln">
		</span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"css/main.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text/css"</span><span class="tag">/&gt;</span><span class="pln">
		</span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text/css"</span><span class="tag">/&gt;</span><span class="pln">
		</span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.datatables.net/1.10.9/css/dataTables.bootstrap.min.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text/css"</span><span class="tag">/&gt;</span><span class="pln">
		</span><span class="tag">&lt;title&gt;</span><span class="pun">&lt;?</span><span class="pln">php echo $config</span><span class="pun">[</span><span class="str">'page_title'</span><span class="pun">];?&gt;</span><span class="tag">&lt;/title&gt;</span><span class="pln">
	</span><span class="tag">&lt;/head&gt;</span><span class="pln">
	</span><span class="tag">&lt;body</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="kwd">overflow</span><span class="pun">:</span><span class="pln">hidden</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
		</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container main_container"</span><span class="tag">&gt;</span><span class="pln">
			</span><span class="tag">&lt;h3&gt;&lt;b&gt;</span><span class="pun">&lt;?</span><span class="pln">php echo $config</span><span class="pun">[</span><span class="str">'heading_text'</span><span class="pun">];?&gt;</span><span class="tag">&lt;br&gt;&lt;/b&gt;&lt;/h3&gt;</span><span class="pln">

			</span><span class="pun">&lt;?</span><span class="pln">php 
			    $si_prefix </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">(</span><span class="pln"> </span><span class="str">'B'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'KB'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'MB'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'GB'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'TB'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'EB'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'ZB'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'YB'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
			    $base </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1024</span><span class="pun">;</span><span class="pln">

			    $bytes </span><span class="pun">=</span><span class="pln"> disk_free_space</span><span class="pun">(</span><span class="str">"/"</span><span class="pun">);</span><span class="pln"> 
			    $class </span><span class="pun">=</span><span class="pln"> min</span><span class="pun">((</span><span class="kwd">int</span><span class="pun">)</span><span class="pln">log</span><span class="pun">(</span><span class="pln">$bytes </span><span class="pun">,</span><span class="pln"> $base</span><span class="pun">)</span><span class="pln"> </span><span class="pun">,</span><span class="pln"> count</span><span class="pun">(</span><span class="pln">$si_prefix</span><span class="pun">)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
			    echo </span><span class="str">"Free Space: "</span><span class="pun">;</span><span class="pln">
			    echo sprintf</span><span class="pun">(</span><span class="str">'%1.2f'</span><span class="pln"> </span><span class="pun">,</span><span class="pln"> $bytes </span><span class="pun">/</span><span class="pln"> pow</span><span class="pun">(</span><span class="pln">$base</span><span class="pun">,</span><span class="pln">$class</span><span class="pun">))</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">' '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> $si_prefix</span><span class="pun">[</span><span class="pln">$class</span><span class="pun">]</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">' / '</span><span class="pun">;</span><span class="pln">

			    $bytes </span><span class="pun">=</span><span class="pln"> disk_total_space</span><span class="pun">(</span><span class="str">"/"</span><span class="pun">);</span><span class="pln">
			    $class </span><span class="pun">=</span><span class="pln"> min</span><span class="pun">((</span><span class="kwd">int</span><span class="pun">)</span><span class="pln">log</span><span class="pun">(</span><span class="pln">$bytes </span><span class="pun">,</span><span class="pln"> $base</span><span class="pun">)</span><span class="pln"> </span><span class="pun">,</span><span class="pln"> count</span><span class="pun">(</span><span class="pln">$si_prefix</span><span class="pun">)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
			    echo sprintf</span><span class="pun">(</span><span class="str">'%1.2f'</span><span class="pln"> </span><span class="pun">,</span><span class="pln"> $bytes </span><span class="pun">/</span><span class="pln"> pow</span><span class="pun">(</span><span class="pln">$base</span><span class="pun">,</span><span class="pln">$class</span><span class="pun">))</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">' '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> $si_prefix</span><span class="pun">[</span><span class="pln">$class</span><span class="pun">]</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">'&lt;br /&gt;'</span><span class="pun">;</span><span class="pln">
			</span><span class="pun">?&gt;</span><span class="pln">
			</span><span class="tag">&lt;br&gt;</span><span class="pln">
			</span><span class="pun">&lt;?</span><span class="pln">php </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">$config</span><span class="pun">[</span><span class="str">'allowed_ips'</span><span class="pun">])</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> in_array</span><span class="pun">(</span><span class="pln">$_SERVER</span><span class="pun">[</span><span class="str">'REMOTE_ADDR'</span><span class="pun">],</span><span class="pln"> $config</span><span class="pun">[</span><span class="str">'allowed_ips'</span><span class="pun">])){?&gt;</span><span class="pln">
					</span><span class="pun">&lt;?</span><span class="pln">php
					$ignore </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Array</span><span class="pun">(</span><span class="str">"index.php"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"js"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"css"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"."</span><span class="pun">,</span><span class="pln"> </span><span class="str">".."</span><span class="pun">,</span><span class="pln"> </span><span class="str">"gallery.php"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"img"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"upload.php"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"config.php"</span><span class="pun">);</span><span class="pln">
					$files1 </span><span class="pun">=</span><span class="pln"> scandir</span><span class="pun">(</span><span class="str">"."</span><span class="pun">);</span><span class="pln">
					</span><span class="pun">?&gt;</span><span class="pln">
				</span><span class="tag">&lt;br&gt;</span><span class="pln">
				</span><span class="tag">&lt;table</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"example"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"table table-striped table-bordered"</span><span class="pln"> </span><span class="atn">cellspacing</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"100%"</span><span class="tag">&gt;</span><span class="pln">
			        </span><span class="tag">&lt;thead&gt;</span><span class="pln">
			            </span><span class="tag">&lt;tr&gt;</span><span class="pln">
			                </span><span class="tag">&lt;th&gt;</span><span class="pln">Image Name</span><span class="tag">&lt;/th&gt;</span><span class="pln">
			                </span><span class="tag">&lt;th&gt;</span><span class="pln">Image Size</span><span class="tag">&lt;/th&gt;</span><span class="pln">
			                </span><span class="tag">&lt;th&gt;</span><span class="pln">Image Type</span><span class="tag">&lt;/th&gt;</span><span class="pln">
			                </span><span class="tag">&lt;th&gt;</span><span class="pln">Image Date</span><span class="tag">&lt;/th&gt;</span><span class="pln">
			                </span><span class="tag">&lt;th&gt;</span><span class="pln">Manage Image</span><span class="tag">&lt;/th&gt;</span><span class="pln">
			            </span><span class="tag">&lt;/tr&gt;</span><span class="pln">
			        </span><span class="tag">&lt;/thead&gt;</span><span class="pln">
			 
			        </span><span class="tag">&lt;tbody&gt;</span><span class="pln">
			        	</span><span class="pun">&lt;?</span><span class="pln">php </span><span class="kwd">foreach</span><span class="pun">(</span><span class="pln">$files1 </span><span class="kwd">as</span><span class="pln"> $file</span><span class="pun">){</span><span class="pln">
			        		</span><span class="kwd">if</span><span class="pun">(!</span><span class="pln">in_array</span><span class="pun">(</span><span class="pln">$file</span><span class="pun">,</span><span class="pln"> $ignore</span><span class="pun">)){?&gt;</span><span class="pln">
			            </span><span class="tag">&lt;tr&gt;</span><span class="pln">
			                </span><span class="tag">&lt;td&gt;</span><span class="pln">&lt;a target="_blank" href="</span><span class="pun">&lt;?</span><span class="pln">php echo $config</span><span class="pun">[</span><span class="str">'output_url'</span><span class="pun">];?&gt;&lt;?</span><span class="pln">php echo</span><span class="pun">(</span><span class="pln">$file</span><span class="pun">);?&gt;</span><span class="pln">"&gt;</span><span class="pun">&lt;?</span><span class="pln">php echo</span><span class="pun">(</span><span class="pln">$file</span><span class="pun">);?&gt;</span><span class="tag">&lt;/a&gt;&lt;/td&gt;</span><span class="pln">
			                </span><span class="tag">&lt;td&gt;</span><span class="pun">&lt;?</span><span class="pln">php echo filesize</span><span class="pun">(</span><span class="pln">$file</span><span class="pun">);?&gt;</span><span class="tag">&lt;/td&gt;</span><span class="pln">
			                </span><span class="tag">&lt;td&gt;</span><span class="pun">&lt;?</span><span class="pln">php echo pathinfo</span><span class="pun">(</span><span class="pln">$file</span><span class="pun">,</span><span class="pln"> PATHINFO_EXTENSION</span><span class="pun">);?&gt;</span><span class="tag">&lt;/td&gt;</span><span class="pln">
			                </span><span class="tag">&lt;td&gt;</span><span class="pun">&lt;?</span><span class="pln">php echo date </span><span class="pun">(</span><span class="str">"M d Y h:i A"</span><span class="pun">,</span><span class="pln"> filemtime</span><span class="pun">(</span><span class="pln">$file</span><span class="pun">))?&gt;</span><span class="tag">&lt;/td&gt;</span><span class="pln">
			                </span><span class="tag">&lt;td&gt;&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-danger"</span><span class="tag">&gt;</span><span class="pln">Delete</span><span class="tag">&lt;/button&gt;&lt;/td&gt;</span><span class="pln">
			            </span><span class="tag">&lt;/tr&gt;</span><span class="pln">
			            </span><span class="pun">&lt;?</span><span class="pln">php </span><span class="pun">}</span><span class="pln"> </span><span class="pun">}?&gt;</span><span class="pln">
			        </span><span class="tag">&lt;/tbody&gt;</span><span class="pln">
			    </span><span class="tag">&lt;/table&gt;</span><span class="pln">
			</span><span class="pun">&lt;?</span><span class="pln">php </span><span class="pun">}?&gt;</span><span class="pln">
		</span><span class="tag">&lt;/div&gt;</span><span class="pln">
		</span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"//code.jquery.com/jquery-1.11.3.min.js"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text/javascript"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
		</span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text/javascript"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
		</span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.datatables.net/1.10.9/js/jquery.dataTables.min.js"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text/javascript"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
		</span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.datatables.net/1.10.9/js/dataTables.bootstrap.min.js"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text/javascript"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
		</span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"js/main.js"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text/javascript"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
	</span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	 
</p>

<p><a href="https://forums.phpfreaks.com/uploads/monthly_2025_01/9k93Q9JQ.png.39bc83cb66d97e1820c94887d7fe0ae9.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="8907" src="https://forums.phpfreaks.com/uploads/monthly_2025_01/9k93Q9JQ.thumb.png.600144c982af0057f128284794215a16.png" data-ratio="32.6" width="1000" class="ipsImage ipsImage_thumbnailed" alt="9k93Q9JQ.png"></a></p>]]></description><guid isPermaLink="false">326549</guid><pubDate>Thu, 16 Jan 2025 20:37:54 +0000</pubDate></item><item><title>How to Optimize Large JSON Files for Use with ChatGPT API?</title><link>https://forums.phpfreaks.com/topic/326436-how-to-optimize-large-json-files-for-use-with-chatgpt-api/</link><description><![CDATA[<p>
	I am trying to use ChatGPT as the chatbot for my Magento 2 website, and I want to pass product data to it. To do this, I collected all the products and stored them in a JSON file, which I then read to embed the data in the `systemRoleContent` of the system role. However, the issue I am facing is that the JSON file is quite large.
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="pun">{</span><span class="pln">
</span><span class="str">"bot_response"</span><span class="pun">:</span><span class="pln"> </span><span class="str">"Error: ChatBot Error: Unexpected API response structure: {\n    \"error\": {\n        \"message\": \"Request too large for gpt-4o on tokens per min (TPM): Limit 30000, Requested 501140. The input or output tokens must be reduced in order to run successfully. Visit https://platform.openai.com/account/rate-limits to learn more.\",\n        \"type\": \"tokens\",\n        \"param\": null,\n        \"code\": \"rate_limit_exceeded\"\n    }\n}\n"</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	I noticed that there is a function that needs to be added to the API configuration, which allows you to run a query to select products based on keywords found in their names or descriptions that match keywords in the user’s message. The challenge is that users initially may not know the names of the products; they come to the chatbot to discover them. How can I address this issue?  
</p>

<p>
	This is the code that I am working with right now:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted"><span class="pun">&lt;?</span><span class="pln">php



</span><span class="kwd">namespace</span><span class="pln"> </span><span class="typ">MetaCares</span><span class="pln">\Chatbot\Model</span><span class="pun">;</span><span class="pln">



</span><span class="kwd">use</span><span class="pln"> </span><span class="typ">Magento</span><span class="pln">\Framework\App\ObjectManager</span><span class="pun">;</span><span class="pln">



</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">ChatBot</span><span class="pln">

</span><span class="pun">{</span><span class="pln">

    </span><span class="kwd">private</span><span class="pln"> $authorization</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">private</span><span class="pln"> $endpoint</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">private</span><span class="pln"> $conversationHistory </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[];</span><span class="pln">

    </span><span class="kwd">private</span><span class="pln"> $productsFile</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">private</span><span class="pln"> $fetchingDateFile</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">private</span><span class="pln"> $didFetchProducts </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">



    </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> __construct</span><span class="pun">()</span><span class="pln">

    </span><span class="pun">{</span><span class="pln">

        $this</span><span class="pun">-&gt;</span><span class="pln">authorization </span><span class="pun">=</span><span class="pln"> </span><span class="str">'sk-proj-'</span><span class="pun">;</span><span class="pln">

        $this</span><span class="pun">-&gt;</span><span class="pln">endpoint </span><span class="pun">=</span><span class="pln"> </span><span class="str">'https://api.openai.com/v1/chat/completions'</span><span class="pun">;</span><span class="pln">



        $this</span><span class="pun">-&gt;</span><span class="pln">productsFile </span><span class="pun">=</span><span class="pln"> __DIR__ </span><span class="pun">.</span><span class="pln"> </span><span class="str">'/products.json'</span><span class="pun">;</span><span class="pln">

        $this</span><span class="pun">-&gt;</span><span class="pln">fetchingDateFile </span><span class="pun">=</span><span class="pln"> __DIR__ </span><span class="pun">.</span><span class="pln"> </span><span class="str">'/fetching_date.json'</span><span class="pun">;</span><span class="pln">



        $currentTime </span><span class="pun">=</span><span class="pln"> time</span><span class="pun">();</span><span class="pln">

        $timeDifferenceSeconds </span><span class="pun">=</span><span class="pln"> </span><span class="lit">24</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> </span><span class="lit">3600</span><span class="pun">;</span><span class="pln">



        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">file_exists</span><span class="pun">(</span><span class="pln">$this</span><span class="pun">-&gt;</span><span class="pln">fetchingDateFile</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

            file_put_contents</span><span class="pun">(</span><span class="pln">$this</span><span class="pun">-&gt;</span><span class="pln">fetchingDateFile</span><span class="pun">,</span><span class="pln"> json_encode</span><span class="pun">([</span><span class="str">'last_fetch_time'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]));</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">



        $fetchingData </span><span class="pun">=</span><span class="pln"> json_decode</span><span class="pun">(</span><span class="pln">file_get_contents</span><span class="pun">(</span><span class="pln">$this</span><span class="pun">-&gt;</span><span class="pln">fetchingDateFile</span><span class="pun">),</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">

        $lastFetchTime </span><span class="pun">=</span><span class="pln"> $fetchingData</span><span class="pun">[</span><span class="str">'last_fetch_time'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">??</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">



        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$currentTime </span><span class="pun">-</span><span class="pln"> $lastFetchTime </span><span class="pun">&gt;</span><span class="pln"> $timeDifferenceSeconds</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

            $products </span><span class="pun">=</span><span class="pln"> $this</span><span class="pun">-&gt;</span><span class="pln">fetchProductsUsingModel</span><span class="pun">();</span><span class="pln">

            $productsJson </span><span class="pun">=</span><span class="pln"> json_encode</span><span class="pun">(</span><span class="pln">$products</span><span class="pun">);</span><span class="pln">

            file_put_contents</span><span class="pun">(</span><span class="pln">$this</span><span class="pun">-&gt;</span><span class="pln">productsFile</span><span class="pun">,</span><span class="pln"> $productsJson</span><span class="pun">);</span><span class="pln">

            $fetchingData</span><span class="pun">[</span><span class="str">'last_fetch_time'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> $currentTime</span><span class="pun">;</span><span class="pln">

            file_put_contents</span><span class="pun">(</span><span class="pln">$this</span><span class="pun">-&gt;</span><span class="pln">fetchingDateFile</span><span class="pun">,</span><span class="pln"> json_encode</span><span class="pun">(</span><span class="pln">$fetchingData</span><span class="pun">));</span><span class="pln">

            $this</span><span class="pun">-&gt;</span><span class="pln">didFetchProducts </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">



        $jsonSampleData </span><span class="pun">=</span><span class="pln"> file_get_contents</span><span class="pun">(</span><span class="pln">$this</span><span class="pun">-&gt;</span><span class="pln">productsFile</span><span class="pun">);</span><span class="pln">



        $systemRoleContent </span><span class="pun">=</span><span class="pln"> </span><span class="pun">&lt;&lt;&lt;</span><span class="pln">EOT

</span><span class="typ">Nom</span><span class="pun">:</span><span class="pln">

    </span><span class="typ">Meta</span><span class="pln"> </span><span class="typ">Cares</span><span class="pln"> </span><span class="typ">Bot</span><span class="pln">

</span><span class="typ">Description</span><span class="pln">

    BOT </span><span class="typ">Meta</span><span class="pln"> </span><span class="typ">Cares</span><span class="pln"> r</span><span class="pun">é</span><span class="pln">pond aux questions sur les produits du site et fournit des conseils sant</span><span class="pun">é</span><span class="pln"> fiables</span><span class="pun">.</span><span class="pln">

    </span><span class="typ">Tu</span><span class="pln"> aides les clients de </span><span class="typ">Meta</span><span class="pln"> </span><span class="typ">Cares</span><span class="pln"> </span><span class="pun">à</span><span class="pln"> faire des choix </span><span class="pun">é</span><span class="pln">clair</span><span class="pun">é</span><span class="pln">s tout en offrant un accompagnement personnalis</span><span class="pun">é,</span><span class="pln"> s</span><span class="pun">é</span><span class="pln">curis</span><span class="pun">é</span><span class="pln"> et adapt</span><span class="pun">é</span><span class="pln"> </span><span class="pun">à</span><span class="pln"> leurs besoins</span><span class="pun">.</span><span class="pln">



catalogue </span><span class="typ">Meta</span><span class="pln"> </span><span class="typ">Cares</span><span class="pln">

</span><span class="pun">{</span><span class="pln">$jsonSampleData</span><span class="pun">}</span><span class="pln">



</span><span class="typ">Liste</span><span class="pln"> des </span><span class="typ">Sites</span><span class="pln"> R</span><span class="pun">é</span><span class="pln">f</span><span class="pun">é</span><span class="pln">renc</span><span class="pun">é</span><span class="pln">s </span><span class="pun">:</span><span class="pln">

</span><span class="pun">-</span><span class="pln"> </span><span class="typ">PubMed</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="pln">https</span><span class="pun">:</span><span class="com">//pubmed.ncbi.nlm.nih.gov/](https://pubmed.ncbi.nlm.nih.gov/)</span><span class="pln">

</span><span class="pun">-</span><span class="pln"> </span><span class="typ">ScienceDirect</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="pln">https</span><span class="pun">:</span><span class="com">//www.sciencedirect.com/](https://www.sciencedirect.com/)</span><span class="pln">

</span><span class="pun">---</span><span class="pln">

</span><span class="pun">-</span><span class="pln"> G</span><span class="pun">é</span><span class="pln">n</span><span class="pun">é</span><span class="pln">ration d</span><span class="pun">’</span><span class="pln">images DALL</span><span class="pun">·</span><span class="pln">E </span><span class="pun">:</span><span class="pln"> D</span><span class="pun">é</span><span class="pln">sactiv</span><span class="pun">é</span><span class="pln">e



EOT</span><span class="pun">;</span><span class="pln">



        $this</span><span class="pun">-&gt;</span><span class="pln">conversationHistory</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">

            </span><span class="str">'role'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'system'</span><span class="pun">,</span><span class="pln">

            </span><span class="str">'content'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> $systemRoleContent

        </span><span class="pun">];</span><span class="pln">



        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">session_status</span><span class="pun">()</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> PHP_SESSION_NONE</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

            session_start</span><span class="pun">();</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$_SESSION</span><span class="pun">[</span><span class="str">'chat_history'</span><span class="pun">]))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

            $this</span><span class="pun">-&gt;</span><span class="pln">conversationHistory </span><span class="pun">=</span><span class="pln"> $_SESSION</span><span class="pun">[</span><span class="str">'chat_history'</span><span class="pun">];</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">

    </span><span class="pun">}</span><span class="pln">



    </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> fetchProductsUsingModel</span><span class="pun">():</span><span class="pln"> array

    </span><span class="pun">{</span><span class="pln">

        </span><span class="kwd">return</span><span class="pln"> $products</span><span class="pun">;</span><span class="pln">

    </span><span class="pun">}</span><span class="pln">



    </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> getCategoryNames</span><span class="pun">(</span><span class="pln">array $categoryIds</span><span class="pun">):</span><span class="pln"> array

    </span><span class="pun">{</span><span class="pln">

        </span><span class="kwd">return</span><span class="pln"> $categoryNames</span><span class="pun">;</span><span class="pln">

    </span><span class="pun">}</span><span class="pln">



    </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> sendMessage</span><span class="pun">(</span><span class="kwd">string</span><span class="pln"> $message</span><span class="pun">):</span><span class="pln"> array

    </span><span class="pun">{</span><span class="pln">

        </span><span class="kwd">try</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

            $this</span><span class="pun">-&gt;</span><span class="pln">conversationHistory</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">

                </span><span class="str">'role'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'user'</span><span class="pun">,</span><span class="pln">

                </span><span class="str">'content'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> $message

            </span><span class="pun">];</span><span class="pln">



            $data </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">

                </span><span class="str">'model'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'gpt-4o'</span><span class="pun">,</span><span class="pln">

                </span><span class="str">'messages'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> array_map</span><span class="pun">(</span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$msg</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

                    </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">[</span><span class="pln">

                        </span><span class="str">'role'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> $msg</span><span class="pun">[</span><span class="str">'role'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">===</span><span class="pln"> </span><span class="str">'bot'</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="str">'assistant'</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> $msg</span><span class="pun">[</span><span class="str">'role'</span><span class="pun">],</span><span class="pln">

                        </span><span class="str">'content'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> $msg</span><span class="pun">[</span><span class="str">'content'</span><span class="pun">]</span><span class="pln">

                    </span><span class="pun">];</span><span class="pln">

                </span><span class="pun">},</span><span class="pln"> $this</span><span class="pun">-&gt;</span><span class="pln">conversationHistory</span><span class="pun">)</span><span class="pln">

            </span><span class="pun">];</span><span class="pln">



            $response </span><span class="pun">=</span><span class="pln"> $this</span><span class="pun">-&gt;</span><span class="pln">makeApiRequest</span><span class="pun">(</span><span class="pln">$data</span><span class="pun">);</span><span class="pln">

            $arrResult </span><span class="pun">=</span><span class="pln"> json_decode</span><span class="pun">(</span><span class="pln">$response</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">



            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">json_last_error</span><span class="pun">()</span><span class="pln"> </span><span class="pun">!==</span><span class="pln"> JSON_ERROR_NONE</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

                </span><span class="kwd">throw</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> \Exception</span><span class="pun">(</span><span class="str">'Invalid API response format'</span><span class="pun">);</span><span class="pln">

            </span><span class="pun">}</span><span class="pln">



            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$arrResult</span><span class="pun">[</span><span class="str">'choices'</span><span class="pun">])</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> </span><span class="pun">!</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$arrResult</span><span class="pun">[</span><span class="str">'choices'</span><span class="pun">][</span><span class="lit">0</span><span class="pun">][</span><span class="str">'message'</span><span class="pun">][</span><span class="str">'content'</span><span class="pun">]))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

                </span><span class="kwd">throw</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> \Exception</span><span class="pun">(</span><span class="str">'Unexpected API response structure: '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> $response</span><span class="pun">);</span><span class="pln">

            </span><span class="pun">}</span><span class="pln">



            $assistantResponse </span><span class="pun">=</span><span class="pln"> $arrResult</span><span class="pun">[</span><span class="str">'choices'</span><span class="pun">][</span><span class="lit">0</span><span class="pun">][</span><span class="str">'message'</span><span class="pun">][</span><span class="str">'content'</span><span class="pun">];</span><span class="pln">

            $this</span><span class="pun">-&gt;</span><span class="pln">conversationHistory</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">

                </span><span class="str">'role'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'bot'</span><span class="pun">,</span><span class="pln">

                </span><span class="str">'content'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> $assistantResponse

            </span><span class="pun">];</span><span class="pln">



            $_SESSION</span><span class="pun">[</span><span class="str">'chat_history'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> $this</span><span class="pun">-&gt;</span><span class="pln">conversationHistory</span><span class="pun">;</span><span class="pln">

            </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">[</span><span class="pln">

                </span><span class="str">"conversationHistory"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> $_SESSION</span><span class="pun">[</span><span class="str">'chat_history'</span><span class="pun">],</span><span class="pln">

                </span><span class="str">'didFetchProducts'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> $this</span><span class="pun">-&gt;</span><span class="pln">didFetchProducts</span><span class="pun">,</span><span class="pln">

                </span><span class="str">'response'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> $assistantResponse</span><span class="pun">,</span><span class="pln">

            </span><span class="pun">];</span><span class="pln">

        </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">catch</span><span class="pln"> </span><span class="pun">(</span><span class="pln">\Exception $e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

            </span><span class="kwd">throw</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> \Exception</span><span class="pun">(</span><span class="str">'ChatBot Error: '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> $e</span><span class="pun">-&gt;</span><span class="pln">getMessage</span><span class="pun">());</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">

    </span><span class="pun">}</span><span class="pln">



    </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> makeApiRequest</span><span class="pun">(</span><span class="pln">array $data</span><span class="pun">):</span><span class="pln"> </span><span class="kwd">string</span><span class="pln">

    </span><span class="pun">{</span><span class="pln">

        $ch </span><span class="pun">=</span><span class="pln"> curl_init</span><span class="pun">();</span><span class="pln">

        curl_setopt_array</span><span class="pun">(</span><span class="pln">$ch</span><span class="pun">,</span><span class="pln"> </span><span class="pun">[</span><span class="pln">

            CURLOPT_URL </span><span class="pun">=&gt;</span><span class="pln"> $this</span><span class="pun">-&gt;</span><span class="pln">endpoint</span><span class="pun">,</span><span class="pln">

            CURLOPT_POST </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">

            CURLOPT_POSTFIELDS </span><span class="pun">=&gt;</span><span class="pln"> json_encode</span><span class="pun">(</span><span class="pln">$data</span><span class="pun">),</span><span class="pln">

            CURLOPT_HTTPHEADER </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">[</span><span class="pln">

                </span><span class="str">'Content-Type: application/json'</span><span class="pun">,</span><span class="pln">

                </span><span class="str">'Authorization: Bearer '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> $this</span><span class="pun">-&gt;</span><span class="pln">authorization</span><span class="pun">,</span><span class="pln">

            </span><span class="pun">],</span><span class="pln">

            CURLOPT_RETURNTRANSFER </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">

            CURLOPT_SSL_VERIFYPEER </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln">

            CURLOPT_SSL_VERIFYHOST </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">0</span><span class="pln">

        </span><span class="pun">]);</span><span class="pln">



        $response </span><span class="pun">=</span><span class="pln"> curl_exec</span><span class="pun">(</span><span class="pln">$ch</span><span class="pun">);</span><span class="pln">



        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">curl_errno</span><span class="pun">(</span><span class="pln">$ch</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

            $error </span><span class="pun">=</span><span class="pln"> curl_error</span><span class="pun">(</span><span class="pln">$ch</span><span class="pun">);</span><span class="pln">

            curl_close</span><span class="pun">(</span><span class="pln">$ch</span><span class="pun">);</span><span class="pln">

            </span><span class="kwd">throw</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> \Exception</span><span class="pun">(</span><span class="str">'API request failed: '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> $error</span><span class="pun">);</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">



        curl_close</span><span class="pun">(</span><span class="pln">$ch</span><span class="pun">);</span><span class="pln">

        </span><span class="kwd">return</span><span class="pln"> $response</span><span class="pun">;</span><span class="pln">

    </span><span class="pun">}</span><span class="pln">

</span><span class="pun">}</span></pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">326436</guid><pubDate>Mon, 06 Jan 2025 10:03:47 +0000</pubDate></item><item><title>Keep logged-in php pwa after installation</title><link>https://forums.phpfreaks.com/topic/326505-keep-logged-in-php-pwa-after-installation/</link><description><![CDATA[<p>
	I have a php script and i made it as pwa with web-push notifications.  Whenever i re-open the app, it asks me to login, i want to keep it logged in.
</p>

<p>
	these are the files for pwa
</p>

<p>
	index.php
</p>

<p>
	in head section i have added 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"manifest"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"manifest.webmanifest"</span><span class="tag">&gt;</span></pre>

<p>
	end of the page this
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="tag">&lt;script&gt;</span><span class="pln"> 
document</span><span class="pun">.</span><span class="pln">getElementById</span><span class="pun">(</span><span class="str">'loginForm'</span><span class="pun">).</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'submit'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">event</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> 
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">document</span><span class="pun">.</span><span class="pln">getElementById</span><span class="pun">(</span><span class="str">'remember'</span><span class="pun">).</span><span class="pln">checked</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> 
document</span><span class="pun">.</span><span class="pln">cookie </span><span class="pun">=</span><span class="pln"> </span><span class="str">"user_login=true; SameSite=Lax; Secure"</span><span class="pun">;</span><span class="pln"> 
document</span><span class="pun">.</span><span class="pln">cookie </span><span class="pun">=</span><span class="pln"> </span><span class="str">"userpassword=true; SameSite=Lax; Secure"</span><span class="pun">;</span><span class="pln"> 
</span><span class="pun">}</span><span class="pln"> 
</span><span class="pun">});</span><span class="pln"> 
</span><span class="tag">&lt;/script&gt;</span></pre>

<p>
	 
</p>

<p>
	manifest.webmanifest
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">{
    "name": "MyPhpScript",
    "short_name": "PHP",
    "start_url": "/myscript/Dashboard.php",
    "display": "standalone",
    "background_color": "#ffffff",
    "theme_color": "#007bff",
    "icons": [
        {
            "src": "icon-192.png",
            "sizes": "192x192",
            "type": "image/png"
        },
        {
            "src": "icon-512.png",
            "sizes": "512x512",
            "type": "image/png"
        }
    ],
   "screenshots": [
    {
     "src": "img.jpg",
      "sizes": "640x320",
      "type": "image/jpg",
      "form_factor": "wide",
      "label": "MyPhpScript"
    },
    {
     "src": "img.jpg",
      "sizes": "640x320",
      "type": "image/jpg",
      "form_factor": "narrow",
      "label": "MyPhpScript"
    }
    ]
}</span></pre>

<p>
	 
</p>

<p>
	service-worker.js
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="str">'use strict'</span><span class="pun">;</span><span class="pln">

</span><span class="com">/**
 * Received push
 */</span><span class="pln">
 self</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'install'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">event</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    event</span><span class="pun">.</span><span class="pln">waitUntil</span><span class="pun">(</span><span class="pln">
        caches</span><span class="pun">.</span><span class="pln">open</span><span class="pun">(</span><span class="str">'my-cache'</span><span class="pun">).</span><span class="pln">then</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">cache</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> cache</span><span class="pun">.</span><span class="pln">addAll</span><span class="pun">([</span><span class="pln">
                </span><span class="str">'/script/'</span><span class="pun">,</span><span class="pln">
                </span><span class="str">'/script/index.php'</span><span class="pun">,</span><span class="pln"> 
                </span><span class="str">'/script/app.js'</span><span class="pln">
</span><span class="com">/**
 * here goes all my css and js files
 */</span><span class="pln">
            </span><span class="pun">]);</span><span class="pln">
        </span><span class="pun">})</span><span class="pln">
    </span><span class="pun">);</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

self</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'fetch'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">event</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    event</span><span class="pun">.</span><span class="pln">respondWith</span><span class="pun">(</span><span class="pln">
        caches</span><span class="pun">.</span><span class="pln">match</span><span class="pun">(</span><span class="pln">event</span><span class="pun">.</span><span class="pln">request</span><span class="pun">).</span><span class="pln">then</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">response</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> response </span><span class="pun">||</span><span class="pln"> fetch</span><span class="pun">(</span><span class="pln">event</span><span class="pun">.</span><span class="pln">request</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">})</span><span class="pln">
    </span><span class="pun">);</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

self</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'activate'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">event</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">// The service worker is now Active and functioning.</span><span class="pln">
    console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">"sw Activate : "</span><span class="pun">,</span><span class="pln"> JSON</span><span class="pun">.</span><span class="pln">stringify</span><span class="pun">(</span><span class="pln">event</span><span class="pun">));</span><span class="pln">
    </span><span class="com">// Again, ensure that this is the only active service worker for this</span><span class="pln">
    </span><span class="com">// page.</span><span class="pln">
    event</span><span class="pun">.</span><span class="pln">waitUntil</span><span class="pun">(</span><span class="pln">self</span><span class="pun">.</span><span class="pln">clients</span><span class="pun">.</span><span class="pln">claim</span><span class="pun">());</span><span class="pln">
    console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">"sw Activated: "</span><span class="pun">,</span><span class="pln"> JSON</span><span class="pun">.</span><span class="pln">stringify</span><span class="pun">(</span><span class="pln">event</span><span class="pun">));</span><span class="pln">
    navigator</span><span class="pun">.</span><span class="pln">serviceWorker
</span><span class="pun">});</span><span class="pln">

self</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'push'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">event</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">let</span><span class="pln"> pushMessageJSON </span><span class="pun">=</span><span class="pln"> event</span><span class="pun">.</span><span class="pln">data</span><span class="pun">.</span><span class="pln">json</span><span class="pun">();</span><span class="pln">
    </span><span class="kwd">let</span><span class="pln"> vibratePattern </span><span class="pun">=</span><span class="pln"> pushMessageJSON</span><span class="pun">.</span><span class="pln">data </span><span class="pun">&amp;&amp;</span><span class="pln"> pushMessageJSON</span><span class="pun">.</span><span class="pln">data</span><span class="pun">.</span><span class="pln">vibrate </span><span class="pun">?</span><span class="pln"> pushMessageJSON</span><span class="pun">.</span><span class="pln">data</span><span class="pun">.</span><span class="pln">vibrate </span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="lit">200</span><span class="pun">,</span><span class="pln"> </span><span class="lit">100</span><span class="pun">,</span><span class="pln"> </span><span class="lit">200</span><span class="pun">];</span><span class="pln">
    self</span><span class="pun">.</span><span class="pln">registration</span><span class="pun">.</span><span class="pln">showNotification</span><span class="pun">(</span><span class="pln">pushMessageJSON</span><span class="pun">.</span><span class="pln">title</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        body</span><span class="pun">:</span><span class="pln"> pushMessageJSON</span><span class="pun">.</span><span class="pln">body</span><span class="pun">,</span><span class="pln">
        icon</span><span class="pun">:</span><span class="pln"> pushMessageJSON</span><span class="pun">.</span><span class="pln">icon</span><span class="pun">,</span><span class="pln">
        vibrate</span><span class="pun">:</span><span class="pln"> vibratePattern</span><span class="pun">,</span><span class="pln">
        data</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            additionalData</span><span class="pun">:</span><span class="pln"> pushMessageJSON</span><span class="pun">.</span><span class="pln">data </span><span class="pun">?</span><span class="pln"> pushMessageJSON</span><span class="pun">.</span><span class="pln">data</span><span class="pun">.</span><span class="pln">additionalData </span><span class="pun">:</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">,</span><span class="pln"> url</span><span class="pun">:</span><span class="pln"> pushMessageJSON</span><span class="pun">.</span><span class="pln">data </span><span class="pun">?</span><span class="pln"> pushMessageJSON</span><span class="pun">.</span><span class="pln">data</span><span class="pun">.</span><span class="pln">url </span><span class="pun">:</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">,</span><span class="pln"> </span><span class="pun">},</span><span class="pln"> </span><span class="pun">});</span><span class="pln">

    console</span><span class="pun">.</span><span class="pln">info</span><span class="pun">(</span><span class="str">"pushmessage::"</span><span class="pun">,</span><span class="pln"> event</span><span class="pun">);</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

</span><span class="com">/**
 * Click by push
 */</span><span class="pln">
self</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'notificationclick'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">event</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">let</span><span class="pln"> url </span><span class="pun">=</span><span class="pln"> event</span><span class="pun">.</span><span class="pln">notification</span><span class="pun">.</span><span class="pln">data</span><span class="pun">.</span><span class="pln">url</span><span class="pun">;</span><span class="pln">
    event</span><span class="pun">.</span><span class="pln">notification</span><span class="pun">.</span><span class="pln">close</span><span class="pun">();</span><span class="pln"> </span><span class="com">// Android needs explicit close.</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">url</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
    event</span><span class="pun">.</span><span class="pln">waitUntil</span><span class="pun">(</span><span class="pln">
        clients</span><span class="pun">.</span><span class="pln">matchAll</span><span class="pun">({</span><span class="pln">type</span><span class="pun">:</span><span class="pln"> </span><span class="str">'window'</span><span class="pun">}).</span><span class="pln">then</span><span class="pun">(</span><span class="pln"> windowClients </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            </span><span class="com">// Check if there is already a window/tab open with the target URL</span><span class="pln">
            </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">var</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> windowClients</span><span class="pun">.</span><span class="pln">length</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                </span><span class="kwd">var</span><span class="pln"> client </span><span class="pun">=</span><span class="pln"> windowClients</span><span class="pun">[</span><span class="pln">i</span><span class="pun">];</span><span class="pln">
                </span><span class="com">// If so, just focus it.</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">client</span><span class="pun">.</span><span class="pln">url </span><span class="pun">===</span><span class="pln"> url </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="str">'focus'</span><span class="pln"> in client</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                    </span><span class="kwd">return</span><span class="pln"> client</span><span class="pun">.</span><span class="pln">focus</span><span class="pun">();</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
            </span><span class="com">// If not, then open the target URL in a new window/tab.</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">clients</span><span class="pun">.</span><span class="pln">openWindow</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                </span><span class="kwd">return</span><span class="pln"> clients</span><span class="pun">.</span><span class="pln">openWindow</span><span class="pun">(</span><span class="pln">url</span><span class="pun">);</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="pun">})</span><span class="pln">
    </span><span class="pun">);</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

self</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'message'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">event</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">// A message has been sent to this service worker.</span><span class="pln">
    console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">"sw Handling message event:"</span><span class="pun">,</span><span class="pln"> event</span><span class="pun">);</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

self</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'pushsubscriptionchange'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">event</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">// The Push subscription ID has changed. The App should send this</span><span class="pln">
    </span><span class="com">// information back to the App Server.</span><span class="pln">
    console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">"sw Push Subscription Change"</span><span class="pun">,</span><span class="pln"> event</span><span class="pun">);</span><span class="pln">
    event</span><span class="pun">.</span><span class="pln">waitUntil</span><span class="pun">(</span><span class="pln">
        self</span><span class="pun">.</span><span class="pln">clients</span><span class="pun">.</span><span class="pln">matchAll</span><span class="pun">()</span><span class="pln">
            </span><span class="pun">.</span><span class="pln">then</span><span class="pun">(</span><span class="pln">clientList </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                </span><span class="kwd">let</span><span class="pln"> sent </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
                console</span><span class="pun">.</span><span class="pln">debug</span><span class="pun">(</span><span class="str">"Service worker found clients"</span><span class="pun">,</span><span class="pln">
                    JSON</span><span class="pun">.</span><span class="pln">stringify</span><span class="pun">(</span><span class="pln">clients</span><span class="pun">));</span><span class="pln">
                clientList</span><span class="pun">.</span><span class="pln">forEach</span><span class="pun">(</span><span class="pln">client </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                    console</span><span class="pun">.</span><span class="pln">debug</span><span class="pun">(</span><span class="str">"Service worker sending to client..."</span><span class="pun">,</span><span class="pln"> client</span><span class="pun">);</span><span class="pln">
                    sent </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
                    client</span><span class="pun">.</span><span class="pln">postMessage</span><span class="pun">({</span><span class="str">'type'</span><span class="pun">:</span><span class="pln"> </span><span class="str">'update'</span><span class="pun">});</span><span class="pln">
                </span><span class="pun">});</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">sent </span><span class="pun">==</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                    </span><span class="kwd">throw</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Error</span><span class="pun">(</span><span class="str">"No valid client to send to."</span><span class="pun">);</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
            </span><span class="pun">})</span><span class="pln">
            </span><span class="pun">.</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">err </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">(</span><span class="str">"Service worker couldn't send message: "</span><span class="pun">,</span><span class="pln"> err</span><span class="pun">);</span><span class="pln">
            </span><span class="pun">})</span><span class="pln">
    </span><span class="pun">);</span><span class="pln">

</span><span class="pun">});</span></pre>

<p>
	 
</p>

<p>
	in footer.php 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln"> </span><span class="tag">&lt;script&gt;</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="typ">Notification</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'*Browser does not support Web Notification'</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="str">'serviceWorker'</span><span class="pln"> in navigator</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="com">// Register a service worker hosted at the root of the</span><span class="pln">
      </span><span class="com">// site using the default scope.</span><span class="pln">
      navigator</span><span class="pun">.</span><span class="pln">serviceWorker</span><span class="pun">.</span><span class="kwd">register</span><span class="pun">(</span><span class="str">'service-worker.js'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> scope</span><span class="pun">:</span><span class="pln"> </span><span class="str">'./'</span><span class="pln"> </span><span class="pun">}).</span><span class="pln">then</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">registration</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Service worker registration succeeded:'</span><span class="pun">,</span><span class="pln"> registration</span><span class="pun">);</span><span class="pln">
      </span><span class="pun">},</span><span class="pln"> </span><span class="com">/*catch*/</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">error</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Service worker registration failed:'</span><span class="pun">,</span><span class="pln"> error</span><span class="pun">);</span><span class="pln">
      </span><span class="pun">});</span><span class="pln">
    </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Service workers are not supported.'</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    navigator</span><span class="pun">.</span><span class="pln">serviceWorker</span><span class="pun">.</span><span class="pln">ready</span><span class="pun">.</span><span class="pln">then</span><span class="pun">((</span><span class="pln">reg</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">const</span><span class="pln"> subscribeOptions </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            userVisibleOnly</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
            applicationServerKey</span><span class="pun">:</span><span class="pln"> </span><span class="str">'xyz.......'</span><span class="pln">
        </span><span class="pun">};</span><span class="pln">
        
  reg</span><span class="pun">.</span><span class="pln">pushManager</span><span class="pun">.</span><span class="pln">subscribe</span><span class="pun">(</span><span class="pln">subscribeOptions</span><span class="pun">).</span><span class="pln">then</span><span class="pun">((</span><span class="pln">subscription</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">// Send subscription to server</span><span class="pln">
    fetch</span><span class="pun">(</span><span class="str">'save_subscription.php'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      method</span><span class="pun">:</span><span class="pln"> </span><span class="str">'POST'</span><span class="pun">,</span><span class="pln">
      headers</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="str">'Content-Type'</span><span class="pun">:</span><span class="pln"> </span><span class="str">'application/json'</span><span class="pln">
      </span><span class="pun">},</span><span class="pln">
      body</span><span class="pun">:</span><span class="pln"> JSON</span><span class="pun">.</span><span class="pln">stringify</span><span class="pun">(</span><span class="pln">subscription</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">}).</span><span class="pln">then</span><span class="pun">((</span><span class="pln">response</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">response</span><span class="pun">.</span><span class="pln">ok</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Subscription saved successfully.'</span><span class="pun">);</span><span class="pln">
      </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">(</span><span class="str">'Failed to save subscription.'</span><span class="pun">);</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">});</span><span class="pln">
  </span><span class="pun">}).</span><span class="kwd">catch</span><span class="pun">((</span><span class="pln">error</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">(</span><span class="str">'Failed to subscribe:'</span><span class="pun">,</span><span class="pln"> error</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">});</span><span class="pln">
</span><span class="pun">});</span><span class="pln">      
  </span><span class="tag">&lt;/script&gt;</span><span class="pln"> </span></pre>

<p>
	 
</p>

<p>
	Push notification i am using Web-push-php from git.
</p>

<p>
	Everything is working fine but i want to keep pwa logged in until i manually logs out.
</p>
]]></description><guid isPermaLink="false">326505</guid><pubDate>Mon, 13 Jan 2025 01:33:20 +0000</pubDate></item><item><title>How To Send MYSQL Data To An Email</title><link>https://forums.phpfreaks.com/topic/326477-how-to-send-mysql-data-to-an-email/</link><description><![CDATA[<p>
	After the customer fills the form, the form data is sent to mysql and an email gets sent to me with the last form data that the customer submitted. But, the email "last mysql data" is not going as inline text. Please help me. Sample code is given below.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_1587_7" style=""><span class="pun">&lt;?</span><span class="pln">php

define</span><span class="pun">(</span><span class="str">'DB_NAME'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'XXXXXXX'</span><span class="pun">);</span><span class="pln">

define</span><span class="pun">(</span><span class="str">'DB_USER'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'XXXXXXX'</span><span class="pun">);</span><span class="pln">

define</span><span class="pun">(</span><span class="str">'DB_PASSWORD'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'XXXXXXX'</span><span class="pun">);</span><span class="pln">

define</span><span class="pun">(</span><span class="str">'DB_HOST'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'localhost'</span><span class="pun">);</span><span class="pln">

$link </span><span class="pun">=</span><span class="pln"> mysql_connect </span><span class="pun">(</span><span class="pln">DB_HOST</span><span class="pun">,</span><span class="pln"> DB_USER</span><span class="pun">,</span><span class="pln"> DB_PASSWORD</span><span class="pun">);</span><span class="pln">

</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">$link</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

</span><span class="kwd">die</span><span class="pun">(</span><span class="str">'Could not connect: '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> mysql_error</span><span class="pun">());</span><span class="pln">

</span><span class="pun">}</span><span class="pln">

$db_selected </span><span class="pun">=</span><span class="pln"> mysql_select_db</span><span class="pun">(</span><span class="pln">DB_NAME</span><span class="pun">,</span><span class="pln"> $link</span><span class="pun">);</span><span class="pln">

</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">$db_selected</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

</span><span class="kwd">die</span><span class="pun">(</span><span class="str">'Can\'t use '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> DB_NAME </span><span class="pun">.</span><span class="pln"> </span><span class="str">': '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> mysql_error</span><span class="pun">());</span><span class="pln">

</span><span class="pun">}</span><span class="pln">

</span><span class="com">//Start Posting the data in Mysql database from Form Input</span><span class="pln">

$value </span><span class="pun">=</span><span class="pln"> $_POST</span><span class="pun">[</span><span class="str">'input1'</span><span class="pun">];</span><span class="pln">

$value2 </span><span class="pun">=</span><span class="pln"> $_POST</span><span class="pun">[</span><span class="str">'MAmount'</span><span class="pun">];</span><span class="pln">

$sql </span><span class="pun">=</span><span class="pln"> </span><span class="str">"INSERT INTO demo (input1, MAmount) VALUES ('$value', '$value2')"</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">mysql_query</span><span class="pun">(</span><span class="pln">$sql</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

</span><span class="kwd">die</span><span class="pun">(</span><span class="str">'Error: '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> mysql_error</span><span class="pun">());</span><span class="pln">

</span><span class="pun">}</span><span class="pln">

</span><span class="pun"></span><span class="pln">


</span><span class="pun">&lt;?</span><span class="pln">php

define</span><span class="pun">(</span><span class="str">'DB_NAME'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'XXXXXXX'</span><span class="pun">);</span><span class="pln">

define</span><span class="pun">(</span><span class="str">'DB_USER'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'XXXXXXX'</span><span class="pun">);</span><span class="pln">

define</span><span class="pun">(</span><span class="str">'DB_PASSWORD'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'XXXXXXX'</span><span class="pun">);</span><span class="pln">

define</span><span class="pun">(</span><span class="str">'DB_HOST'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'localhost'</span><span class="pun">);</span><span class="pln">

$link </span><span class="pun">=</span><span class="pln"> mysql_connect </span><span class="pun">(</span><span class="pln">DB_HOST</span><span class="pun">,</span><span class="pln"> DB_USER</span><span class="pun">,</span><span class="pln"> DB_PASSWORD</span><span class="pun">);</span><span class="pln">

</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">$link</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

</span><span class="kwd">die</span><span class="pun">(</span><span class="str">'Could not connect: '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> mysql_error</span><span class="pun">());</span><span class="pln">

</span><span class="pun">}</span><span class="pln">

$db_selected </span><span class="pun">=</span><span class="pln"> mysql_select_db</span><span class="pun">(</span><span class="pln">DB_NAME</span><span class="pun">,</span><span class="pln"> $link</span><span class="pun">);</span><span class="pln">

</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">$db_selected</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

</span><span class="kwd">die</span><span class="pun">(</span><span class="str">'Can\'t use '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> DB_NAME </span><span class="pun">.</span><span class="pln"> </span><span class="str">': '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> mysql_error</span><span class="pun">());</span><span class="pln">

</span><span class="pun">}</span><span class="pln">

</span><span class="com">//Start Posting the data in Mysql database from Form Input</span><span class="pln">

$value </span><span class="pun">=</span><span class="pln"> $_POST</span><span class="pun">[</span><span class="str">'input1'</span><span class="pun">];</span><span class="pln">

$value2 </span><span class="pun">=</span><span class="pln"> $_POST</span><span class="pun">[</span><span class="str">'MAmount'</span><span class="pun">];</span><span class="pln">

$sql </span><span class="pun">=</span><span class="pln"> </span><span class="str">"INSERT INTO demo (input1, MAmount) VALUES ('$value', '$value2')"</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">mysql_query</span><span class="pun">(</span><span class="pln">$sql</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

</span><span class="kwd">die</span><span class="pun">(</span><span class="str">'Error: '</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> mysql_error</span><span class="pun">());</span><span class="pln">

</span><span class="pun">}</span><span class="pln">

</span><span class="com">//start print the database</span><span class="pln">

$data </span><span class="pun">=</span><span class="pln"> mysql_query</span><span class="pun">(</span><span class="str">"SELECT * FROM demo ORDER BY ID DESC LIMIT 1"</span><span class="pun">)</span><span class="pln">

</span><span class="kwd">or</span><span class="pln"> </span><span class="kwd">die</span><span class="pun">(</span><span class="pln">mysql_error</span><span class="pun">());</span><span class="pln">

</span><span class="typ">Print</span><span class="pln"> </span><span class="str">"&lt;table border cellpadding=3&gt;"</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">while</span><span class="pun">(</span><span class="pln">$info </span><span class="pun">=</span><span class="pln"> mysql_fetch_array</span><span class="pun">(</span><span class="pln"> $data </span><span class="pun">))</span><span class="pln">

</span><span class="pun">{</span><span class="pln">

</span><span class="typ">Print</span><span class="pln"> </span><span class="str">"&lt;tr&gt;"</span><span class="pun">;</span><span class="pln">

</span><span class="typ">Print</span><span class="pln"> </span><span class="str">"&lt;th&gt;ID:&lt;/th&gt; &lt;td&gt;"</span><span class="pun">.</span><span class="pln">$info</span><span class="pun">[</span><span class="str">'ID'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">"&lt;/td&gt; "</span><span class="pun">;</span><span class="pln">

</span><span class="typ">Print</span><span class="pln"> </span><span class="str">"&lt;th&gt;Input1:&lt;/th&gt; &lt;td&gt;"</span><span class="pun">.</span><span class="pln">$info</span><span class="pun">[</span><span class="str">'input1'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">"&lt;/td&gt; "</span><span class="pun">;</span><span class="pln">

</span><span class="typ">Print</span><span class="pln"> </span><span class="str">"&lt;th&gt;MAmount:&lt;/th&gt; &lt;td&gt;"</span><span class="pun">.</span><span class="pln">$info</span><span class="pun">[</span><span class="str">'MAmount'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="str">" &lt;/td&gt;&lt;/tr&gt;"</span><span class="pun">;</span><span class="pln">

</span><span class="pun">}</span><span class="pln">

</span><span class="typ">Print</span><span class="pln"> </span><span class="str">"&lt;/table&gt;"</span><span class="pun">;</span><span class="pln">

mysql_close</span><span class="pun">();</span><span class="pln">

</span><span class="com">//end print the database on form processing page</span><span class="pln">

</span><span class="com">//start emailing the data</span><span class="pln">

date_default_timezone_set</span><span class="pun">(</span><span class="str">'Asia/Kolkata'</span><span class="pun">);</span><span class="pln">

require_once</span><span class="pun">(</span><span class="str">'class.phpmailer.php'</span><span class="pun">);</span><span class="pln">

</span><span class="com">//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded</span><span class="pln">

$mail </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">PHPMailer</span><span class="pun">();</span><span class="pln">

</span><span class="com">//$body = "gdssdh";</span><span class="pln">

</span><span class="com">//$body = preg_replace("[\]",'',$body);</span><span class="pln">

$mail</span><span class="pun">-&gt;</span><span class="typ">IsSMTP</span><span class="pun">();</span><span class="pln"> </span><span class="com">// telling the class to use SMTP</span><span class="pln">

$mail</span><span class="pun">-&gt;</span><span class="typ">Host</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"ssl://XXXXXXX.XXXXXXX.org"</span><span class="pun">;</span><span class="pln"> </span><span class="com">// SMTP server</span><span class="pln">

$mail</span><span class="pun">-&gt;</span><span class="typ">SMTPDebug</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln"> </span><span class="com">// enables SMTP debug information (for testing)</span><span class="pln">

</span><span class="com">// 1 = errors and messages</span><span class="pln">

</span><span class="com">// 2 = messages only</span><span class="pln">

$mail</span><span class="pun">-&gt;</span><span class="typ">SMTPAuth</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln"> </span><span class="com">// enable SMTP authentication</span><span class="pln">

$mail</span><span class="pun">-&gt;</span><span class="typ">SMTPSecure</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"ssl"</span><span class="pun">;</span><span class="pln"> </span><span class="com">// sets the prefix to the servier</span><span class="pln">

$mail</span><span class="pun">-&gt;</span><span class="typ">Host</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">" https://www.astaguru.com/ "</span><span class="pun">;</span><span class="pln"> </span><span class="com">// sets GMAIL as the SMTP server</span><span class="pln">

$mail</span><span class="pun">-&gt;</span><span class="typ">Port</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">465</span><span class="pun">;</span><span class="pln"> </span><span class="com">// set the SMTP port for the GMAIL server</span><span class="pln">

$mail</span><span class="pun">-&gt;</span><span class="typ">Username</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"XXXXXXX.com"</span><span class="pun">;</span><span class="pln"> </span><span class="com">// GMAIL username</span><span class="pln">

$mail</span><span class="pun">-&gt;</span><span class="typ">Password</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"XXXXXXX"</span><span class="pun">;</span><span class="pln"> </span><span class="com">// GMAIL password</span><span class="pln">

$mail</span><span class="pun">-&gt;</span><span class="typ">SetFrom</span><span class="pun">(</span><span class="str">'contact@XXXXXXXX.com'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'HAL'</span><span class="pun">);</span><span class="pln">

</span><span class="com">//$mail-&gt;AddReplyTo("XXXXXXX', 'First Last");</span><span class="pln">

$mail</span><span class="pun">-&gt;</span><span class="typ">Subject</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"XXXXXXX"</span><span class="pun">;</span><span class="pln">

</span><span class="com">//THE PROBLEM IS HERE WHEN I WANT TO SEND THE DATA AS INLINE TEXT TO EMAIL FROM MYSQL IT IS NOT WORKING. ONLY "PRINT THE DATA" IS SENDING TO EMAIL.</span><span class="pln">

$body </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Print the data'</span><span class="pun">;</span><span class="pln">

mysql_connect</span><span class="pun">(</span><span class="str">"localhost"</span><span class="pun">,</span><span class="str">"XXXXXXX"</span><span class="pun">,</span><span class="str">"XXXXXXX"</span><span class="pun">);</span><span class="pln">

</span><span class="lit">@mysql_select_db</span><span class="pun">(</span><span class="str">"XXXXXXX"</span><span class="pun">);</span><span class="pln">

$query</span><span class="pun">[</span><span class="str">"SELECT * FROM demo ORDER BY ID DESC LIMIT 1"</span><span class="pun">];</span><span class="pln">

$result </span><span class="pun">=</span><span class="pln"> mysql_query</span><span class="pun">(</span><span class="pln">$query</span><span class="pun">);</span><span class="pln">

</span><span class="com">//while ($row = mysql_fetch_array ($result)) {</span><span class="pln">

</span><span class="com">// $mail-&gt;AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test</span><span class="pln">

$mail</span><span class="pun">-&gt;</span><span class="typ">MsgHTML</span><span class="pun">(</span><span class="pln">$body</span><span class="pun">);</span><span class="pln">

$address </span><span class="pun">=</span><span class="pln"> </span><span class="str">"XXXXXXX"</span><span class="pun">;</span><span class="pln">

$mail</span><span class="pun">-&gt;</span><span class="typ">AddAddress</span><span class="pun">(</span><span class="pln">$address</span><span class="pun">,</span><span class="pln"> </span><span class="str">"user2"</span><span class="pun">);</span><span class="pln">
</span></pre>
]]></description><guid isPermaLink="false">326477</guid><pubDate>Fri, 10 Jan 2025 09:23:33 +0000</pubDate></item><item><title>A simple idea gone haywire</title><link>https://forums.phpfreaks.com/topic/326494-a-simple-idea-gone-haywire/</link><description><![CDATA[<p>
	It seemed like a simple idea for a snowy day, but now I've lost my way in the forest.
</p>

<p>
	The plan: I have a landing page that will connect to either page 1, 2, or 3.
</p>

<p>
	These pages all flow to page A.
</p>

<p>
	On page A, I decided (big mistake) to say "I hope you enjoyed visiting our page X."
</p>

<p>
	My idea was to create a $_SESSION['page] variable in each of pages 1,2,3 and provide the appropriate value accordingly.
</p>

<p>
	When a user why to page A, the variable would follow and populate the sentence çorrectly.
</p>

<p>
	If they went to page A directly or from the landing page, the variable would be blank bc there is no session value associated.
</p>

<p>
	My first steps seemed to be okay, but then I couldn't clear the session from the landing page.
</p>

<p>
	Is my implementation completely off?
</p>
]]></description><guid isPermaLink="false">326494</guid><pubDate>Sat, 11 Jan 2025 23:14:44 +0000</pubDate></item><item><title>imagecreatefromjpeg() error help</title><link>https://forums.phpfreaks.com/topic/292007-imagecreatefromjpeg-error-help/</link><description><![CDATA[
<p>Hi, </p>
<p> </p>
<p>before posting this problem, I already tried googling and tried those possible solutions that could help but still failed.</p>
<p>I am having a problem with that PHP function</p>
<pre class="ipsCode prettyprint">
imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error:
</pre>
<p><span style="color:rgb(0,0,0);font-family:Verdana;font-size:15px;background-color:rgb(243,243,243);">based from what i found in google, some say, use</span></p>
<pre class="ipsCode prettyprint">
ini_set("gd.jpeg_ignore_warning", 1);
</pre>
<p>failed.</p>
<p> </p>
<p>some say, use</p>
<pre class="ipsCode prettyprint">
init_set("memory_limit", -1)
</pre>
<p>still failed</p>
<p> </p>
<p>I am sure that I am passing .jpg image, how come i keep on getting that error ?</p>
<p>any suggestions of what to do?</p>
]]></description><guid isPermaLink="false">292007</guid><pubDate>Thu, 23 Oct 2014 13:12:03 +0000</pubDate></item><item><title>Possible to have a single MySQL query for multiple items?</title><link>https://forums.phpfreaks.com/topic/326031-possible-to-have-a-single-mysql-query-for-multiple-items/</link><description><![CDATA[<p>
	I have a PHP page drawing multiple items, each in a single row, and currently each makes a separate MySQL query, and now that the database is huge, this is really slow. For example, if it was a page showing different kinds of pastries we have available, I'm drawing the page like this:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">[get details about croissants: SELECT * FROM `descriptions` WHERE `item` LIKE 'croissant' LIMIT 1;]

[draw a picture of a croissant with details obtained from DB]

---------------

[get details about baguettes: SELECT * FROM `descriptions` WHERE `item` LIKE 'baguettes' LIMIT 1;]

[draw a picture of a baguette with details obtained from DB]

---------------

[get details about rolls: SELECT * FROM `descriptions` WHERE `item` LIKE 'rolls' LIMIT 1;]

[draw a picture of a rolls with details obtained from DB]</span></pre>

<p>
	There's 40 items on each page, and it now takes about 5 seconds to load the page. I'm wondering if there's some clever way to query the DB one time at the top of the page with all my queries? Something like this pseudo code:
</p>

<p>
	SELECT * FROM `descriptions` WHERE `item` LIKE 'croissant' OR  `item` LIKE 'baguettes' OR `item` LIKE 'rolls';
</p>

<p>
	and then iterate through the results?
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">326031</guid><pubDate>Tue, 03 Dec 2024 20:26:04 +0000</pubDate></item><item><title>need access for different account roles on a php page</title><link>https://forums.phpfreaks.com/topic/326413-need-access-for-different-account-roles-on-a-php-page/</link><description><![CDATA[<p>
	I have two different user roles, one is Member and the other is Secretary and I need to be able to allow access to a php page if either Member or Secretary is logged in. I originally had the code below which worked if a Member role was logged in
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted"><span class="pun">&lt;?</span><span class="pln">php
session_start</span><span class="pun">();</span><span class="pln">
</span><span class="com">// If the user is not logged in redirect to the login page...</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(!</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$_SESSION</span><span class="pun">[</span><span class="str">"account_loggedin"</span><span class="pun">])</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> $_SESSION</span><span class="pun">[</span><span class="str">"account_loggedin"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">!==</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> $_SESSION</span><span class="pun">[</span><span class="str">"account_role"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="str">'Member'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    include</span><span class="pun">(</span><span class="str">'includes/baseurl.php'</span><span class="pun">);</span><span class="pln">        
    $title </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Show Diary - The British Rabbit Council"</span><span class="pun">;</span><span class="pln">
    $pgDesc</span><span class="pun">=</span><span class="str">""</span><span class="pun">;</span><span class="pln">
    include </span><span class="pun">(</span><span class="pln"> </span><span class="str">'includes/header.php'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="pun">?&gt;</span></pre>

<p>
	I added the Secretary role to the code but it won't allow me to access the page, I think it's because I'm not logged in as a Member role and am logging as the Secretary role but I need access to the php page if I am logged in as either Member or Secretary
</p>

<p>
	The current code I have is below
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted"><span class="pun">&lt;?</span><span class="pln">php
session_start</span><span class="pun">();</span><span class="pln">
</span><span class="com">// If the user is not logged in redirect to the login page...</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(!</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$_SESSION</span><span class="pun">[</span><span class="str">"account_loggedin"</span><span class="pun">])</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> $_SESSION</span><span class="pun">[</span><span class="str">"account_loggedin"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">!==</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> $_SESSION</span><span class="pun">[</span><span class="str">"account_role"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="str">'Member'</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> $_SESSION</span><span class="pun">[</span><span class="str">"account_role"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="str">'Secretary'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    include</span><span class="pun">(</span><span class="str">'includes/baseurl.php'</span><span class="pun">);</span><span class="pln">        
    $title </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Show Diary - The British Rabbit Council"</span><span class="pun">;</span><span class="pln">
    $pgDesc</span><span class="pun">=</span><span class="str">""</span><span class="pun">;</span><span class="pln">
    include </span><span class="pun">(</span><span class="pln"> </span><span class="str">'includes/header.php'</span><span class="pln"> </span><span class="pun">);</span><span class="pln">
</span><span class="pun">?&gt;</span></pre>

<p>
	Can anyone help please, thank you in advance
</p>
]]></description><guid isPermaLink="false">326413</guid><pubDate>Fri, 03 Jan 2025 09:36:16 +0000</pubDate></item><item><title>extracting info from database using php</title><link>https://forums.phpfreaks.com/topic/326441-extracting-info-from-database-using-php/</link><description><![CDATA[<p>
	Hi
</p>

<p>
	 
</p>

<p>
	I have this entry in a database from wpforms
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">a:5:{s:16:"WPFormsDB_status";s:6:"unread";s:4:"Name";s:13:"Lional Hewitt";s:14:"Contact Number";s:10:"0763229844";s:5:"Email";s:22:"lional@it-people.co.za";s:18:"Comment or Message";s:5:"test2";}</span></pre>

<p>
	From this I want to extract <strong>Lional Hewitt</strong>, <strong>0763229844</strong>, <strong>lional@it-people.co.za</strong>, and <strong>test2</strong> into separate variables. I see each form is referenced by s:13, s:10, s:22, and s:18. Is there someway to splat the string with those values
</p>

<p>
	Thank you
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">326441</guid><pubDate>Mon, 06 Jan 2025 15:06:36 +0000</pubDate></item><item><title>Total was not calculated automatically.</title><link>https://forums.phpfreaks.com/topic/315365-total-was-not-calculated-automatically/</link><description><![CDATA[<p>
	Hi,
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Quote
	</div>

	<div class="ipsQuote_contents">
		<p>
			&lt;!DOCTYPE html&gt;<br />
			&lt;?php<br />
			    $con=mysqli_connect("localhost","root","","receipt");<br />
			    /*<br />
			        CREATE TABLE `feedetails`<br />
			         (<br />
			  `fid` int(4) NOT NULL,<br />
			  `fdescription` varchar(256) NOT NULL,<br />
			  `fprice` int(6) NOT NULL<br />
			) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
		</p>

		<p>
			        );<br />
			    */
		</p>

		<p>
			    $data["product"]=[];<br />
			    $sql="select * from feedetails";<br />
			    $res=$con-&gt;query($sql);
		</p>

		<p>
			    if($res-&gt;num_rows&gt;0){<br />
			        while($row=$res-&gt;fetch_assoc()){<br />
			            $data["product"][]=$row;<br />
			        }<br />
			    }
		</p>

		<p>
			 <br />
			$result = $con-&gt;query($sql);
		</p>

		<p>
			if (!$result) {<br />
			    trigger_error('Invalid query: ' . $con-&gt;error);<br />
			}
		</p>

		<p>
			<br />
			?&gt;<br />
			&lt;html&gt;    <br />
			&lt;head&gt;<br />
			    &lt;link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css" &gt;<br />
			    &lt;script src="https://code.jquery.com/jquery-3.6.1.min.js" &gt;&lt;/script&gt;
		</p>

		<p>
			&lt;style&gt;<br />
			html{counter-reset:rows}<br />
			tr{counter-increment:rows}<br />
			tbody td{border:1px dotted grey;padding:0.25rem}<br />
			tbody tr td:first-of-type::before{content:counter(rows);display:table-cell}<br />
			tfoot td{background:grey;padding:0.5rem;color:white}<br />
			&lt;/style&gt;
		</p>

		<p>
			&lt;/head&gt;<br />
			&lt;body&gt;<br />
			&lt;div class="container mt-5"&gt;<br />
			    &lt;div class="row"&gt;<br />
			        &lt;div class="col-md-12"&gt;<br />
			             
		</p>

		<p>
			&lt;table class='table table-bordered'&gt;<br />
			  &lt;tbody id='table'&gt;<br />
			    &lt;tr class='crow'&gt;<br />
			      &lt;td style='width:150px;'&gt;&lt;/td&gt;<br />
			      &lt;td style='width:350px;'&gt;<br />
			      &lt;select class="form-control pid" required name="pid[]"&gt;<br />
			                            &lt;?php <br />
			                                $options="&lt;option value='' price='0' &gt;Select&lt;/option&gt;";<br />
			                                foreach($data["product"] as $row){<br />
			                                    $options.="&lt;option value='{$row["fid"]}' price='{$row["famount"]}'&gt;{$row["fdescription"]}&lt;/option&gt;";<br />
			                                }<br />
			                                echo $options;<br />
			                            ?&gt;<br />
			                        &lt;/select&gt; <br />
			      &lt;/td&gt;<br />
			      &lt;td&gt;<br />
			        &lt;input type="text" name="price[]" class="form-control  price" required&gt;<br />
			      &lt;/td&gt;<br />
			      &lt;td&gt;<br />
			        &lt;input data-action='remove' type='button' value='Remove' class='btn btn-link btn-xs rmv' required /&gt;<br />
			      &lt;/td&gt;<br />
			    &lt;/tr&gt;<br />
			  &lt;/tbody&gt;<br />
			  <br />
			  &lt;tfoot&gt;<br />
			    &lt;tr&gt;<br />
			      &lt;td&gt;&lt;input data-action='add' type='button' class='btn btn-link add' value='+Add Row' /&gt;&lt;/td&gt;<br />
			      &lt;td colspan='2' class='text-right'&gt;Total&lt;/td&gt;<br />
			      &lt;td&gt;&lt;input type='text' name='grand_total' class='form-control' required /&gt;&lt;/td&gt;<br />
			    &lt;/tr&gt;<br />
			  &lt;/tfoot&gt;<br />
			&lt;/table&gt;<br />
			    &lt;/div&gt;<br />
			    &lt;/div&gt;<br />
			&lt;/div&gt;<br />
			    
		</p>

		<p>
			<br />
			&lt;script&gt;<br />
			 <br />
			 <br />
			 <br />
			const d=document;<br />
			const total=d.querySelector('input[name="grand_total"]');
		</p>

		<p>
			d.addEventListener('click',e=&gt;{<br />
			  /* Add new row */<br />
			  if( e.target.classList.contains('btn-link') &amp;&amp; e.target.dataset.action=='add' ){<br />
			    let tbody=d.querySelector('tbody#table');<br />
			    let tr=tbody.querySelector('tr:first-of-type');<br />
			    <br />
			    /* clone the first table row and clear any values previously entered */<br />
			    let clone=tr.cloneNode( true );<br />
			        clone.querySelector('input[name="price[]"]').value='';
		</p>

		<p>
			    /* add the new row to the table. */<br />
			    tbody.appendChild( clone );<br />
			  }<br />
			  <br />
			  <br />
			  <br />
			  <br />
			  /* Remove existing row - NOT first row though! */<br />
			  if( e.target.classList.contains('btn-link') &amp;&amp; e.target.dataset.action=='remove' ){<br />
			    if( d.querySelectorAll('tbody#table tr').length &gt; 1 ){<br />
			      // We need to identify the value entered into 'price[]' so that we can remove<br />
			      // it from the total.<br />
			      let value=e.target.closest('tr').querySelector('input[name="price[]"]').value;<br />
			      <br />
			      // find and remove the button's parent row<br />
			      // using closest to move UP the DOM until it finds the TR node.      <br />
			      d.querySelector('tbody#table').removeChild( e.target.closest('tr') );<br />
			      <br />
			      // subtract this value from the total<br />
			      total.value-=parseFloat( value )<br />
			    }<br />
			  }<br />
			});
		</p>

		<p>
			// tally up all numbers entered by iterating through all input elements<br />
			// with the name price[]<br />
			d.addEventListener('keyup',e=&gt;{<br />
			  let col=d.querySelectorAll('input[name="price[]"]');<br />
			  <br />
			  // convert nodelist to an array and use regular array methods (map &amp; reduce)<br />
			  // to return the sum<br />
			  total.value=[...col]<br />
			    .map(n=&gt;n.value &gt; 0 ? n.value : 0)<br />
			    .reduce((a,b)=&gt;parseFloat(a) + parseFloat(b));<br />
			});
		</p>

		<p>
			$("body").on("change",".pid",function(){<br />
			       var p=$(this).find(":selected").attr("price");<br />
			       $(this).closest("tr").find(".price").val(p);<br />
			    });<br />
			&lt;/script&gt;<br />
			&lt;/body&gt;<br />
			&lt;/html&gt;
		</p>
	</div>
</blockquote>

<p>
	in this code total was not auto. shown when we click on the total box it is updated then, not automatically how to fix it.
</p>

<p>
	Thanks
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">315365</guid><pubDate>Sat, 24 Sep 2022 08:52:37 +0000</pubDate></item><item><title>php if else not working with main root / only working for index.php</title><link>https://forums.phpfreaks.com/topic/326117-php-if-else-not-working-with-main-root-only-working-for-indexphp/</link><description><![CDATA[<p>
	I have some php code that says if index.php or main root then display some code and if not then show other code and it works on index.php but if it's just the domain name without index.php at the end, it don't work. I have the following code at the moment<br />
	 
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted"><span class="pun">&lt;?</span><span class="pln">php $currentpage </span><span class="pun">=</span><span class="pln"> $_SERVER</span><span class="pun">[</span><span class="str">'REQUEST_URI'</span><span class="pun">];</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">$currentpage</span><span class="pun">==</span><span class="str">'/'</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> $currentpage</span><span class="pun">==</span><span class="str">"/index.php"</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> $currentpage</span><span class="pun">==</span><span class="str">"index.php"</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> $currentpage</span><span class="pun">==</span><span class="str">""</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="pun">?&gt;</span></pre>

<p>
	Can anyone help me out please as I don't know what to amend for the code to work if main root and not have index.php at the end, the code should be the same for the main root / and index.php
</p>
]]></description><guid isPermaLink="false">326117</guid><pubDate>Mon, 09 Dec 2024 14:09:26 +0000</pubDate></item></channel></rss>
