Php7 platform overgezet
Pagina: 1 2 3 4 5 6 volgende »
Beste phpHelpdeskers,
Ik ben klant van Mijndomein. Mijndomein heeft een aantal dagen geleden mijn website rspp.nl overgezet naar een nieuw platform php vs 7.1. Mijn phpscripts ondersteunen dat nog niet. Er is een mogelijkheid bij Mijndomein om het platform terug te zetten naar vs 5.6, wat ik ook heb gedaan. Begin 2019 komt PHP 5.6 te vervallen.
Wat ik nu niet begrijp is dat ik ineens die foutmelding(en) krijg ná het vernieuwen van het platform. Het script is sinds twee jaar niet gewijzigd en werkte uitstekend.
Sinds het nieuwe platform er is, stonden er drie fouten op mijn website die inmiddels zijn opgelost. Daarna kreeg stond er weer eentje welke ik niet kan oplossen.
•Notice: Undefined variable: weg in /home/public/sites/www.rspp.nl/library/puchfunctions.php on line 336
Het betreft een voorwaardelijke uitdrukking if ($weg == 0)
Is hier een andere vergelijking voor in php5.6?
Misschien dat u mij hierbij verder kan helpen? Alvast hartelijk bedankt.
Met vriendelijke groet,
Margot Schuitemaker
Vraag je eerst af waarom dat voor kan komen.
Je kunt het oplossen met
Maar vraag je toch af, hoe $weg niet kan bestaan. Waar zou die vandaan moeten komen?
Je kunt de oude situatie "herstellen" door de "Notice" meldingen nog steeds niet te tonen. Dit kan door onderstaand stukje code boven in je script op te nemen (hiermee sluit je de notices van het rapporteren):
Maar nogmaals: dit is geen echte oplossing (gewoon je ogen dicht doen zodat je het probleem niet meer ziet). De echte oplossing is uitzoeken waarom die $weg (soms) niet bestaat, en het dan fixen. Ik vermoed dat er zoiets gebeurt:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
if($_POST){
//doe iets
$weg = 5; //of zoiets
}
//meer code
if ($weg == 0){
//enz
}
//doe iets
$weg = 5; //of zoiets
}
//meer code
if ($weg == 0){
//enz
}
Als er nu geen $_POST is, dan wordt $weg nooit ingesteld, en krijg je de Notice (en als er wel een $_POST is -> geen melding).
Dit is dan eenvoudig op te lossen:
Gewijzigd op 13/07/2018 22:31:21 door Rob Doemaarwat
In 2008 is de webshop door mijn (coach)collega en mij. Telkens wanneer er een migratie is bij mijndomein moet ik mij erin verdiepen, daar de coach uit zicht is. Het lukt mij telkens wel om de website online te houden, ik zou mij moeten verdiepen in jouw vraag.
Bedankt voor je snelle reactie. Ik las er net over in het digitale phpboek en was aan het expirimenteren hoe:)
Het werkt! Ik zal bij een andere pagina nog twee fouten:
Notice: Undefined variable: aantalitems in /home/public/sites/www.rspp.nl/library/puchfunctions.php on line 94
list($$aantalitems) = $row;
Notice: Undefined variable: aantalitems in /home/public/sites/www.rspp.nl/library/puchfunctions.php on line 95
return $aantalitems;
Misschien zou je mij nog eens willen helpen?
Wat staat er rond die lijn 94?
Hartelijke groet, Margot
Toevoeging op 13/07/2018 22:53:44:
function itemsperpagina($categorie) {
//deze functie berekent het aantal items per pagina, of eigenlijk per categorie
//invoer: $categorie, een string met de waarden 'frame', 'wiel', of 'motor'
//uitvoer: het aantal items
$query="select count(art_id) as aantal from artikel where cat_naam='".$categorie."'";
$result = mysql_query($query) or die($query.' Error, query failed. ' . mysql_error());
$row = mysql_fetch_array($result);
line 94: list($$aantalitems) = $row;
line 95: return $aantalitems;
}
Omdat $row geen array bevat omdat de functie erin niet meer bestaat, zal je met list() in deze situatie niet de gewenste uitvoer krijgen.
Gewijzigd op 13/07/2018 22:57:52 door - Ariën -
Voor het 'mooie' heb ik tijdelijk onderstaand statement van jou bovenin de pagina gezet error_reporting(error_reporting() & ~E_NOTICE);
Ga dat verder uitzoeken.
Moet ik alle scripts wijzigen in mysqli betreffende php7? Ik ga voor info ook naar w3schools en http://www.phpboek.net. Wat zou ik moeten doen om mijn webshop/site in php7 werkbaar te maken? Is er een goede website voor php7 info of is er een goed leesbaar boek in omloop. Misschien dat jij/jullie dat weten?
Enorm bedankt, Margot
PHP 5.4-> 5.5
http://php.net/manual/en/migration55.php
PHP 5.5-> 5.6
http://php.net/manual/en/migration56.php
PHP 5.6-> 7.0
http://php.net/manual/en/migration70.php
PHP 7.0-> 7.1
http://php.net/manual/en/migration71.php
PHP 7.1-> 7.2
http://php.net/manual/en/migration72.php
Maar je zult voor PHP 7 écht de oude mysql_***() functies uit je code moeten ombouwen naar MySQLi-functies (aanrader!) of PDO.
(o, keek net op de site; heb zelf een MV50 gehad - dat was even een trip down memory lane, vooral qua dagenlang sleutelwerk, en alles wat er stuk kon gaan aan dat ding ...).
Quote:
Het script is sinds twee jaar niet gewijzigd en werkte uitstekend.
Quote:
In 2008 is de webshop door mijn (coach)collega en mij.
Ook software is aan slijtage onderhevig. Een gezonde taal verandert over tijd. Oude dingen gaan eruit en er komen andere/betere onderdelen voor in de plaats. Je hebt dus een (homegrown?) webshop die ergens in 2008 is ontstaan/geschreven en daarna bij tijd en wijlen is bijgespijkerd? Misschien wordt het dan eens tijd om alle code op de schop te gooien, want als ik dit soort dingen zie:
Quote:
$query="select count(art_id) as aantal from artikel where cat_naam='".$categorie."'";
$result = mysql_query($query) or die($query.' Error, query failed. ' . mysql_error());
$row = mysql_fetch_array($result);
$result = mysql_query($query) or die($query.' Error, query failed. ' . mysql_error());
$row = mysql_fetch_array($result);
Stemt mij dat niet erg gerust.
Security is tegenwoordig een ding (en is het altijd wel geweest eigenlijk). Ik weet niet in hoeverre de website/webshop onderdeel uitmaakt van de bedrijfsvoering (kun je via deze site ook echt dingen kopen? en zonee, wellicht het overwegen waard met een betaalkoppeling?), maar het lijkt mij zaak dat dit soort dingen goed geregeld zijn. Ook is er tegenwoordig zoiets als de Algemene Verordening Gegevensbescherming (AVG), dit houdt o.a. in dat wanneer iemand iets via een site m.b.t. persoonsgegevens regelt dit aan bepaalde spelregels is onderworpen. Tegenwoordig zou ik bij een webshop op zijn minst een beveiligde site (verbinding via https) verwachten.
Dit soort code schreeuwt bij mij om een audit. Heb je hier ooit een externe partij op los gelaten? Er zijn er genoeg die gewoon met een bot je site doornemen en dit soort lekken heel eenvoudig boven water krijgen. Zeker als de code deel is van je bedrijfsvoering is het vandaag de dag een must. Relatief gezien is het niet duur, zeker niet als je bedenkt hoe duur claims kunnen worden.
Groet, Margot
Ik raad aan om eerst maar even SSL aan te zetten. het hoeft bij je provider vast niet lastig te zijn als ze Let's Encrypt gebruiken.
Hoi Ariën, bij mijndomein heb je een ssl-instellingenknop welke ik heb 'aangezet'. Op dit moment wordt mijn aanvraag verwerkt.
https://www.rspp.nl/ werkt inderdaad.
Je moet er nu alleen nog met .htaccess voor zorgen dat je alles van http doorsluist naar https.
Je moet er nu alleen nog met .htaccess voor zorgen dat je alles van http doorsluist naar https.
Code (php)
1
2
3
2
3
# Stuur alle onveilige http-verzoeken door naar https...
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Gewijzigd op 16/07/2018 22:35:12 door - Ariën -
De pagina verwijst niet op een juiste manier door
Fout tijdens het verbinden met rspp.nl.
Dit probleem kan soms worden veroorzaakt door het uitschakelen of weigeren van cookies.
Ik heb het weer teruggezet.
Ik vind het echt geweldig van je om telkens direct te reageren.
Toevoeging op 16/07/2018 23:01:45:
De ssl-aanvraag is nog aan het verwerken in mijndomein. Wanneer gereed, krijg ik misschien een optie(s) van doorverwijzen oid
Gewijzigd op 16/07/2018 23:15:03 door - Ariën -
Hieronder staat wat mijndomein op hun site hebben staan ivm ssl:
SL Doorverwijzen
Zodra het certificaat actief is kan je de bezoekers van je website doorverwijzen naar de HTTPS versie van je website. Hiervoor krijg je de volgende opties te zien:
Zowel http als https
Met deze optie is je website via zowel HTTP:// als HTTPS:// bereikbaar. Het is aan de bezoeker welke versie er gebruikt wordt. Je website kan de bezoeker desgewenst alsnog doorsturen naar HTTPS
Stuur http door naar https
Met deze optie wordt de bezoeker door onze servers naar de HTTPS versie van je website gestuurd. Er wordt geen HSTS toegepast, dit kan je desgewenst zelf instellen.
'Stuur http door naar https' is de beste oplossing. Dan wordt alles doorgestuurd naar https, en hoef je zelf geen extra aanpassingen te doen.
- plaats dit https://raw.githubusercontent.com/dshafik/php7-mysql-shim/master/lib/mysql.php bestand bij je PHP bestanden.
- include het voordat je een mysql_connect() doet.
- klaar, alles werkt weer onder PHP 7!
Overpeinzingen:
- het is niet de meest "professionele", en meeste efficiënte oplossing (alle calls moeten via deze "shim" = extra code+tijd).
- de problemen met SQL-injectie blijven gewoon bestaan.
- je bent wel heel snel klaar (ik heb op deze manier probleemloos bakken aan legacy code "mee" gekregen naar PHP 7; moet allemaal nog een keer uitgefaseerd worden, maar "nu even niet").