PHP Abfrage array

Kent94

Mitglied
Hallo,

und zwar möchte ich gerne aus meiner MySQL Tabelle name_wartungsmodus das feld ip, ip1, ip2, ip3

abrufen mein PHP Code sieht derzeit wie folgt aus .

PHP:
<?php
if (!in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '178.201.3.xxx' , '178.201.3.xxx' , '178.201.3.xxx')))
{
  header('Location: http://url.de/wartungsmodus/index.php');
  exit;
}
?>

leider bin ich noch nicht so gut in PHP weshalb meine Frage ist wie ich das an besten bewerkstellige kann mir dort einer evtl erklären wie ich das genau mache ? also eig müsste ja die array statt 127.0.0.1 die abfrage bringen $row aber leider bekomme ich es nicht hin..
 
Und was hat dein erstellter Code mit einer MySQL Tabelle zu tun?
Das @-Zeichen sollte nicht verwendet werden, denn es unterdrückt Fehlermeldungen. Diese sollten aber in der Entwicklung eines Scripts unbedingt angezeigt werden.
 
Hallo,

möchte das ich im Webinterface IP 1,2,3 usw. Eintragen kann und diese sind ja dann in der Datenbank gespeichert. Ich möchte nicht immer die config.php öffnen um die IPs einzutragen.
 
Nun ja, dann brauchst du eine entsprechende Datenbanktabelle, aus der du per mysqli oder pdo die Daten ausliest, um sie dann mit dem Wert aus SERVER abzugleichen.

Zur Arbeit mit beiden DB-Adaptern gibt es Dokumentation auf php.net und Tutorials. Dort würde ich anfangen. Oder konkreter angeben, wo es hakt. :) Du hast in deinem Code bislang noch überhaupt keine DB-Sachen drin.
 
Hallo,

also ich erkläre es einmal habe in meiner meta.php folgenden Inhalt

PHP:
<?php

global $db, $prefix;
$sql = "SELECT * FROM ".$prefix."_wartungsmodus ORDER BY wartungsmodus ASC LIMIT 10";
$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result)) {
echo '
'.$row[aktiv].'';

}
?>

habe eine MySQL Tabelle namens Wartungsmodus

SQL:
-- phpMyAdmin SQL Dump
-- version 4.6.6
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Erstellungszeit: 30. Okt 2017 um 17:15
-- Server-Version: 5.5.58-0+deb7u1
-- PHP-Version: 5.6.30

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Datenbank: `tekbasedesign`
--

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

--
-- Tabellenstruktur für Tabelle `teklab_wartungsmodus`
--

CREATE TABLE `teklab_wartungsmodus` (
  `aktiv` varchar(255) NOT NULL,
  `passiv` varchar(500) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Daten für Tabelle `teklab_wartungsmodus`
--

INSERT INTO `teklab_wartungsmodus` (`aktiv`, `passiv`) VALUES
('if (!in_array(@$_SERVER[\'REMOTE_ADDR\'], array(\'127.0.0.1\', \'178.201.3.xxx\' , \'178.201.3.123\' , \'37.201.214.152\')))\r\n{\r\n  header(\'Location: /wartungsmodus/index.php\');\r\n  exit;\r\n}', '0');

--
-- Indizes der exportierten Tabellen
--

--
-- Indizes für die Tabelle `teklab_wartungsmodus`
--
ALTER TABLE `teklab_wartungsmodus`
  ADD PRIMARY KEY (`aktiv`);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

So nun wollte ich eig per HTML eine Select funktion haben wo ich entscheiden kann ob aktiv oder passiv. Bei Aktiv soll folgender Code

PHP:
if (!in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '178.201.3.xxx' , '178.201.3.122' , '37.201.214.111')))
{
  header('Location: /wartungsmodus/index.php');
  exit;
}

aberufen werden bei passiv natürlich kein code da kein Wartungsmodus benötigt wird. Leider komme ich nicht weiter.. Eig wollte ich noch das ich IPS eintragen kann und dazu in der array eine abfrage aber das bekomm ich überhaupt nicht hin..

momentan bekomme ich immer eine 0 ausgabe..
 
Hallo,

also das die Abfrage nun funktioniert habe ich mit eval hin bekommen allerdings wie gestalte ich nun die select option per html an besten hat jemand ein beispiel ?

Poste auch mal den Code womit es nun funktioniert.

PHP:
<?php

global $db, $prefix;
$sql = "SELECT * FROM ".$prefix."_wartungsmodus ORDER BY aktiv ASC LIMIT 10";
$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result)) {
eval(stripslashes($row[aktiv]));


}
 
Hallo,

noch eine kurze Frage zur Datenbank ändern per Form.

PHP:
<?php
global $db, $prefix;
$sql = "SELECT * FROM ".$prefix."_wartungsmodus ORDER BY aktiv ASC LIMIT 10";
$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result)) {
echo'
<form method="post">
<label>IP: <input type="text" value="'.$row[ip].'" name="ip"></label>
<input type="submit" value="Absenden">
</form>';
}

?>

so sieht meine php Datei aus er zeigt mir im Input auch die richtige IP aber wenn ich es ändern will klappt es nicht.. Kann mir jemand hier helfen ?
 
@Kent94: dein letzter Post wird in einem anderen Thema behandelt. Ich würde deine Tabelle an sich schon anders aufbauen. So wie es aussiehst speicherst du nur 2 Strings in die Tabelle.
SQL:
CREATE TABLE `teklab_wartungsmodus` (
  `ip` varchar(255) not null,
  `aktiv` boolean not null default 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `teklab_wartungsmodus`
  ADD PRIMARY KEY (`ip`);

So kannst du für jede IP den Status angeben (0 = Nein, 1= Ja)

PHP:
<?php
  global $db, $prefix;
  $sql = "SELECT * FROM ".$prefix."_wartungsmodus ORDER BY ip asc";
  $result = $db->sql_query($sql);
?>
<form method="post">
  <?php
      while($row = $db->sql_fetchrow($result)) {
         echo'
            <label>IP: <input type="text" value="'.$row[ip].'" name="ip"></label>
            <label>
                <input type="checkbox" name="ip[]" value="'.$row[ip].'">
                '.$row[ip].'
             </label>
       }
  ?>
<input type="submit" value="Absenden">
</form>
?>

Wenn du dann auf Absenden klickst, musst das Formular auswerten und die Ergebnisse entsprechend in die Datenbank schreiben.
 
Hallo,

Also das Formular dient für eine Wartungmodus Seite.

Sprich ich logge mich in mein cm/s ein gehe auf wartungsmodus und habe dort 2 Input mit ip und ip2 sowie eine select funtkion für Rank, rank 0 ist deaktiviert und Rank 1 aktiviert.

Leider bekomme ich das ganze mit dem
Update per php nicht hin.

Es soll nur 1 Datei geben in der dies alles geregelt wird der Datenbank Verbindungsaufbau ist ja bereits schon aktiv

der php Code von dir funktioniert leider bei mir nicht HTTP ERROR 500 benutze php7.0
 
Zurück