Script werkt niet meer na upgrade van PHP-versie (5.6 naar 7.x)

Overzicht

Sponsored by: Vacatures door Monsterboard

Innovatieve, nauwkeurige Senior PHP Developer voor

Eind jaren ’90 is dit bedrijf opgericht. Ze hebben zich altijd beziggehouden met het ontwikkelen van software voor overheidsinstanties. Dit zijn instanties waaronder bijvoorbeeld ook onder andere : de belastingdienst, burgerszaken, verschillende bedrijven, notarissen, incassobureau’s en ook nog bewindvoerders. Momenteel tellen ze 20 medewerkers, waarvan 2/3 deel allemaal developers zijn. Doordat ze de enigste aanbieder van dit soort software op de markt zijn, groeien ze erg hard. Door de enorme groei, hebben ze dan ook concrete groeiplannen in het verschiet. Functie-omschrijving Het bedrijf wordt door allerlei instanties ingeschakeld. Tegenwoordig wordt alles digitaal geregeld en gezien de essentie van dit soort

Bekijk vacature »

Tim Hoogland

Tim Hoogland

14/02/2018 14:58:50
Anchor link
Ik heb een programma gemaakt waarmee je tarotkaarten kan trekken.
Omdat er technisch onderweg nog wel eens iets mis kan gaan, sla ik de kaarten die getrokken zijn op in een my_sql database. Dit werkt prima onder PHP 5.6, maar onder versie 7.1 niet meer. Nu ben ik absoluut geen kenner van PHP, waar kan dit aan liggen? De instellingen zijn bijgesloten.
http://www.symbolonkaarten.nl/images/PHP5-6.jpg
http://www.symbolonkaarten.nl/images/PHP7-1.jpg
Ik hoor het graag.

Met vriendelijke groet,
Tim Hoogland
Gewijzigd op 14/02/2018 15:19:37 door Tim Hoogland
 
PHP hulp

PHP hulp

17/08/2018 01:56:33
 
- Ariën -
Beheerder

- Ariën -

14/02/2018 16:00:52
Anchor link
Ik gok dat je de oude mysql_***() functies gebruikt, en die werken niet meer in PHP 7. Daarom raad ik aam om de mysqli_***() functies of PDO te gebruiken.

Verder is "werkt niet" ook niet duidelijk. Want wat gebeurt er?
Gewijzigd op 14/02/2018 16:02:39 door - Ariën -
 
Tim Hoogland

Tim Hoogland

14/02/2018 16:31:37
Anchor link
Hallo Ariën,

Inderdaad gebruikte ik de oude mysql functies. Werkt niet, wil in dit verband zeggen dat er niets wordt weggeschreven in de database. Mijn code hiervoor is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
mysqli_connect($dbhost1, $dbuser1, $dbpass1);
    //Select Database
mysqli_select_db($dbname1) or die(mysqli_error());
    // Retrieve data from Query String

//Ip-adres

$ipAdres = $_SERVER["REMOTE_ADDR"];


//today
$date = date("Y-m-d H:i:s");

//site = rtlo
$site = 110341;
echo $site;

$kaart1 = $_GET['krtnum1'];
$kaart2 = $_GET['krtnum2'];
$kaart3 = $_GET['krtnum3'];

echo $kaart1;
echo $kaart2;
echo $kaart3;


$query = "INSERT INTO kaartleggingen(IPadres,Site,Datum,Kaart1,Kaart2,Kaart3,Kaart4,Kaart5,Kaart6,Kaart7,Kaart8,Kaart9)
VALUES ('$ipAdres','$site','$date','$kaart1','$kaart2','$kaart3','$kaart4','$kaart5','$kaart6','$kaart7','$kaart8','$kaart9')"
;

    //Execute query
$qry_result = mysqli_query($query) or die(mysqli_error());
while($row = mysqli_fetch_array($qry_result)){
}


?>


Zit hier nog andere verouderde code bij?

Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 14/02/2018 16:47:04 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2018 16:41:44
Anchor link
Errorlogs zijn je vriend.

Ook loont het de moeite om een test(- of ontwikkel)omgeving in te richten die representatief is voor de nieuwe live omgeving. Daar kun je dan ook eens proberen om het melden + weergeven van fouten aan te zetten.

Dat gezegd hebbende, mysqli_query() heeft een verplichte eerste parameter waarin je de database-connectie moet meegeven.

Terug naar de tekentafel?

Verder kan het waarschijnlijk ook geen kwaad om je eens te verdiepen in wat security-gerelateerde zaken, want bovenstaande code stemt mij niet bepaald hoopvol.
 
- Ariën -
Beheerder

- Ariën -

14/02/2018 16:46:05
Anchor link
In veel gevallen is het niet enkel alleen een 'i' in de de functie erbij te zetten.
Zo zul je eerst je mysqli_connect() moeten aanpassen. Deze heeft ook een vierde waarde voor je databasenaam. Dan hoef je mysqli_select_db() niet te gebruiken.

Verder kan je de eventuele fouten die in de connectie optreden ophalen met mysqli_connect_errno().
Fouten in queries kan je ophalen met mysqli_error($conn), waarbij $conn verwijst naar de variabele van je connectie (die nu nog geen variabele heeft).

Tevens is het zeer aan te bevelen om MySQL de instructies te geven welke characterset je gebruikt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$conn
= mysqli_connect($dbhost1, $dbuser1, $dbpass1, $dbname1);
mysqli_set_charset($conn, "utf8");

// Check connection
if (mysqli_connect_errno())
  {

    echo "Verbinding met MySQL mislukt: " . mysqli_connect_error();
  }
else {
    // alles is gelukt, voer hier de rest uit.
  }
?>


Met dit script hierboven ben je al een stap in de goede richting.
Verder is er nog op te merken dat je nu erg vatbaar bent voor hacking d.m.v. SQL-injection, omdat mysqli_real_escape_string() ontbreekt op je GET-waardes. Deze functie hoor je toe te passen op waardes die de gebruiker kan manipuleren zoals POST, GET, COOKIE en mogelijk ook ENV.

Verder is de opzet van je database ook niet erg optimaal ==> Normalisatie
Gewijzigd op 14/02/2018 16:48:14 door - Ariën -
 
Willem vp

Willem vp

15/02/2018 12:28:36
Anchor link
Als ik naar de screenshots in de openingspost kijk, kan het ook nog wel handig zijn om een vinkje bij de module nd_mysqli te zetten...
 
Johan van Hoppe

Johan van Hoppe

10/08/2018 09:30:30
Anchor link
Ik ben geen kenner van php maar kan door omstandigheden de hulp van mijn dochter nu niet inroepen. Het gaat erom, dat een script op een pagina van mijn website niet meer werkt als ik mijn website upgrade van php 5.6 naar 7.1
Het heeft volgens mij alles te maken met het oproepen van de database, aangezien het script gegevens uit deze database presenteert op een pagina in mijn website. Wie kan mij helpen op bepaalde codes uit dit script om te zetten en ook te zorgen, dat de database niet gehackt kan worden?

De website zelf werkt prima onder php 7.1 maar alleen daar waar ik connectie maak met de database gaat het mis.
 
- Ariën -
Beheerder

- Ariën -

10/08/2018 09:56:30
Anchor link
Maak a.u.b. een nieuwe topic aan, in plaats van een ander topic te kapen.
Deze doe ik dicht om het topic schoon te houden.
Gewijzigd op 10/08/2018 10:00:40 door - Ariën -
 
 

Dit topic is gesloten.



Overzicht

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.