Sorry dat ik weer een topic plaats, maar ik kom soms uit functies echt niet uit terwijl ik ze wel nodig heb, omdat anders mijn hele systeem voor niets isgeweest. Nu is het weer een probleem met unlink(), ik wil een file unlinken, bijvoorbeeld $code5 (zie script), maar hij geeft dan een warning.. deze:

Warning: unlink() [function.unlink]: SAFE MODE Restriction in effect. The script whose uid is 77854 is not allowed to access / owned by uid 0 in /storage/mijndomein/users/073214/public/sites/www.skoolofwar.com/webshop/code_check.php on line

En bovendien verwijdert hij het bestand niet eens.. wie kan me helpen? Hieronder het script:

<?
$code1 = 'codes/3482.php';
$code2 = 'codes/8263.php';
$code3 = 'codes/6344.php';
$code4 = 'codes/3438.php';
$code5 = 'codes/4857.php';

if(file_exists($code1)) { //Check of de code nog bestaat
     include('codes/3482.php'); //Als de code bestaat, include de variabelen van de code
} else {
}

if(file_exists($code2)) { //Check of de andere codes nog bestaan
     include('codes/8263.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}

if(file_exists($code3)) { //Check of de andere codes nog bestaan
     include('codes/6344.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}
if(file_exists($code4)) { //Check of de andere codes nog bestaan
     include('codes/3438.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}
if(file_exists($code5)) { //Check of de andere codes nog bestaan
     include('codes/4857.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}

$ip = $_SERVER['REMOTE_ADDR']; //Maak variabele voor ip-adres

if($_POST[code] == 3482) { //Kijk of de goede code is ingevoerd
     if($code3482 == 3482) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 3482</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=30><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
  //Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code1); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 8263) {
 if($code8263 == 8263) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 8263</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
  //Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code2); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 6344) {
 if($code6344 == 6344) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 6344</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
  //Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code3); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 3438) {
 if($code3438 == 3438) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 3438</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
  //Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code4); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 4857) {
 if($code4857 == 4857) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 4857</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
unlink($code5.php); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} else {
echo "<center><font face=verdana size=3 color=red>OOPS!</br><font size=2 color=black>Je hebt een verkeerde code ingevoerd!</center></font>"; //Als er een niet-bestaande code is ingevoerd geef foutmelding
}

?>
@ AJ: wat is dat voor iets raars? TRUE tussen enkele quotes?
Arend schreef op 05.01.2008 16:59
Je fout zit niet in de safe_mode. Deze is goed, en moet je zeker laten staan. Anders haal je je allerlij narigheid op de hals, en vertrouw me, dat wil je niet.

$code6 = '/codes/3482.php';
$code7 = '/codes/8263.php';
$code8 = '/codes/6344.php';
$code9 = '/codes/3438.php';
$code0 = '/codes/4857.php';


Hier zit de fout, je geeft een absoluut pad op.

Ik raad je van harte aan om van het hele rare idee afstappen om losse php bestanden als database te gebruiken, en gewoon een fatsoenlijke manier van een database te gebruiken. Ik raad je ten zeerste af om hiermee verder te gaan, en eerder om een soort andere wijze te gebruiken. Dit is ook niet schaalbaar: voor elke 'code' moet je nieuwe regels toevoegen in je phpcode. Wat als je 100 codes wil? Of 1000?

Een simpele manier is bijvoorbeeld om een tabel in mysql te maken waarin je een lijst met codes hebt:


create table codes (
  id int(4) not null,
  taken tinyint(1) not null default 0,
  primary key(id)
);



Dit scriptje zal min of meer het zelfde doen, maar dan veilig en schaalbaar en zonder fratsen.

<?php

$iId = $_POST['id'];
if (!is_int($iId)) {
// hier jouw error afhandeling:
echo "Geen geldige id meegegeven";
exit;
}

$oDbh = mysql_connect("localhost","jouw_user","jouw_pass");
mysql_select_db("jouwdatabase");

$sQuery = "SELECT id,taken FROM codes WHERE id = " . $iId . " AND taken = 0";
$oSth = mysql_query($sQuery);

if (!$oSth) {
echo "mysql error " . mysql_error() . " met query: " . $sQueryEsc;
exit;
}

if (mysql_num_rows($oSth) != 1) {
echo "Id bestaat niet!"
exit;
}

$aRow = mysql_fetch_assoc($sth);

$sQuery2 = "UPDATE codes WHERE id = " . $iId . " SET taken = 1";
$oSth2 = mysql_query($sQuery);
if (!$oSth2) {
echo "mysql error " . mysql_error() . " met query: " . $sQuery2;
exit;
}
?>


Moet ik heel code_check.php veranderen in dat script van jou? Of alleen een klein stukje? Want die MySQL tabel is dan inderdaad beter, maar wat in code_check.php moet ik dan veranderen in jouw script? Dit is code_check.php nu:

<?
$code1 = 'codes/3482.php';
$code2 = 'codes/8263.php';
$code3 = 'codes/6344.php';
$code4 = 'codes/3438.php';
$code5 = 'codes/4857.php';
$code6 = '/codes/3482.php';
$code7 = '/codes/8263.php';
$code8 = '/codes/6344.php';
$code9 = '/codes/3438.php';
$code0 = '/codes/4857.php';

if(file_exists($code1)) { //Check of de code nog bestaat
include('codes/3482.php'); //Als de code bestaat, include de variabelen van de code
} else {
}

if(file_exists($code2)) { //Check of de andere codes nog bestaan
include('codes/8263.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}

if(file_exists($code3)) { //Check of de andere codes nog bestaan
include('codes/6344.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}
if(file_exists($code4)) { //Check of de andere codes nog bestaan
include('codes/3438.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}
if(file_exists($code5)) { //Check of de andere codes nog bestaan
include('codes/4857.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}

$ip = $_SERVER['REMOTE_ADDR']; //Maak variabele voor ip-adres

if($_POST[code] == 3482) { //Kijk of de goede code is ingevoerd
if($code3482 == 3482) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 3482</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=30><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
//Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code6); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 8263) {
if($code8263 == 8263) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 8263</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
//Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code7); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 6344) {
if($code6344 == 6344) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 6344</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
//Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code8); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 3438) {
if($code3438 == 3438) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 3438</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
//Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code9); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 4857) {
if($code4857 == 4857) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 4857</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
unlink($code0.php); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} else {
echo "<center><font face=verdana size=3 color=red>OOPS!</br><font size=2 color=black>Je hebt een verkeerde code ingevoerd!</center></font>"; //Als er een niet-bestaande code is ingevoerd geef foutmelding
}

?>

Reageren